Работа с COM портом C++

171
20 октября 2018, 01:00

Нужно написать программу для обмена данными с устройством по виртуальному COM порту. Прога утыкается в ReadFile и дальше не едет. Пробовал разные примеры что нашел в сети - результат тот же.

#include <Windows.h>
#include <iostream>
using namespace std;

int main()
{
    DCB dcb;
    HANDLE port = CreateFile("COM9",
        GENERIC_READ | GENERIC_WRITE,
        0,
        NULL,
        OPEN_EXISTING,
        0,
        NULL);
    BuildCommDCB("baud=9600 parity=N data=8 stop=1", &dcb);
    char buf_out[1024] = "$016";
    char buf_in[1024];
    DWORD oSize = sizeof(buf_out);
    DWORD BytesWritten;
    DWORD iSize;

    while (1)
    {
        WriteFile(port, buf_out, oSize, &BytesWritten, NULL);
        ReadFile(port, &buf_in, sizeof(buf_in), &iSize, 0);
        cout << buf_in << endl;
    }
    CloseHandle(port);
    system("pause");
    return 0;
}
Answer 1

Всё правильно, ReadFile это блокирующая операция. После её вызова она ожидает прихода данных. Так как ты данные не посылаешь, она их всё время ожидает.

Напиши отдельное маленькое приложение которое будет посылать данные на указанный порт. Бонусом будет использование не winapi, а boost.asio.

READ ALSO
Как отправить и получить ответ с com порта

Как отправить и получить ответ с com порта

Имеется проблема, я понимаю как отправлять данные на com порт, но не знаю как получить ответВот так отправляю: int sendData(unsigned char* buff,int len)

150
Почему при отладке программы в gdb выполнение идёт скачками?

Почему при отладке программы в gdb выполнение идёт скачками?

В gdb ввожу команду next и прыгаю на 100 строку, потом на 97 потом на 100 потом на 97 потом на 100 потом на 103Не ну понять почему с 97 на 100 можно

140
Ошибка совместимости 16-разрядной программы, с 32-разрядной системой при запуске OpenGL программы

Ошибка совместимости 16-разрядной программы, с 32-разрядной системой при запуске OpenGL программы

При запуске программы на OpenGL у меня вылезла ошибка о несовместимости 16-разрядной программы, с 32-битной системой

156
C++, multimap, дублирование ключей

C++, multimap, дублирование ключей

Подскажите, происходит ли реальное дублирование ключей при вставке значений с одинаковым ключом в std::multimap?

187