реклама на сайте
подробности

 
 
> RS-232 в Visual Studio 2010 Express
serj32
сообщение Jul 15 2015, 13:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345



Здравствуйте.Вот начал изучать язык программирования C и хотел бы связать компьютер с микроконтроллером AVR-так легче изучать.
Операционка XP 32разряда.Может быть есть у кого для консольного приложения код что бы считывал с ноги RxD и закидывал в какую нибудь переменную 8 бит
ну а зная в какой переменной находятся данные на дисплей я их выведу сам.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex11
сообщение Jul 15 2015, 17:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Нашел из какого-то старого проекта кусок.
Инициализация:
Код
#define BUFSIZE 200
    HANDLE Comm;
    char Data[BUFSIZE];
    Comm = CreateFile(
        "COM1",                        // pointer to name of the file
        GENERIC_READ|GENERIC_WRITE,    // access (read-write) mode
        0,                            // share mode
        0,                            // pointer to security attributes
        OPEN_EXISTING,                // how to create
        FILE_ATTRIBUTE_NORMAL,        // file attributes
        0                             // handle to file with attributes to copy
                      );
    BuildCommDCB(
        "baud=115200 parity=N data=8 stop=1",  // pointer to device-control string
        &CommDCB     // pointer to device-control block
                );

    CommDCB.fOutX = true;
    CommDCB.fOutxDsrFlow = false;
    CommDCB.fDtrControl = DTR_CONTROL_DISABLE;
    CommDCB.fDsrSensitivity = false;
    CommDCB.fRtsControl = RTS_CONTROL_DISABLE;
    CommDCB.StopBits = ONESTOPBIT;
    CommDCB.XonChar = 'Q'-0x40;
    CommDCB.XoffChar = 'S'-0x40;
    CommDCB.EofChar = -1;
    CommTO.ReadIntervalTimeout = 0;
    CommTO.ReadTotalTimeoutMultiplier = 0;
    CommTO.ReadTotalTimeoutConstant = 100;
    CommTO.WriteTotalTimeoutMultiplier = 0;
    CommTO.WriteTotalTimeoutConstant = 0;

    i = SetCommTimeouts(
        Comm,    // handle to communications device
        &CommTO    // address of communications time-out structure
                       );
    i = SetCommState(
        Comm,    // handle to communications device
        &CommDCB    // address of device-control block structure
                    );


затем периодически вызывать это
Код
    DWORD i;
    ReadFile(Comm, Data, BUFSIZE, &i, 0);
    if(i!=0)
    {
        пришло i байтов данных, обрабатываем
    }

Go to the top of the page
 
+Quote Post
serj32
сообщение Jul 15 2015, 18:15
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 25-01-13
Из: Брянск
Пользователь №: 75 345



Цитата(Alex11 @ Jul 15 2015, 20:41) *
Нашел из какого-то старого проекта кусок.


затем периодически вызывать это
Код
    DWORD i;
    ReadFile(Comm, Data, BUFSIZE, &i, 0);
    if(i!=0)
    {
        пришло i байтов данных, обрабатываем
    }

А какие там библиотеки подключать?
i-укажет мне количество байт
ну а прочитаю из масива Data
Правильно?

Сообщение отредактировал serj32 - Jul 15 2015, 18:24
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Jul 15 2015, 18:39
Сообщение #4


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



..если нужен простой COM порт в своей проге на компе - то советую SharpDevelop 5 http://www.icsharpcode.net/OpenSource/SD/
там в среде , готовый модуль - кидаете на свою прогу и используете, ничего программировать не надо.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 12:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016