Нужно написать программу для обмена данными с устройством по виртуальному 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;
}
Всё правильно, ReadFile это блокирующая операция. После её вызова она ожидает прихода данных. Так как ты данные не посылаешь, она их всё время ожидает.
Напиши отдельное маленькое приложение которое будет посылать данные на указанный порт. Бонусом будет использование не winapi, а boost.asio.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости