C++ Serial Port (WinAPI). Asynchronous Read/Write

267
02 января 2019, 02:00

Чтение и запись работают в отдельных потоках. Нужно настроить чтение при поступлении данных в порт. Запись выполняется по условию надобности, но ждет сигнал о возможности записи. На данный момент чтение работает правильно. Проблема:

Запись в порт выполняется только после завершения чтения

Что я упустил? Если в процедуре открытия порта(файла), установить флаг FILE_FLAG_OVERLAPPED , то процедуры чтения/записи не работают.

Код объемный, здесь покажу только тело main:

int main()
{
if (InitComPort(L"\\\\.\\COM2", 115200, 8, 0, 0)) {
    printf("Port Init ERROR\n");
    system("pause");
    return 0;
}
_Output = new char[_OutputSize];
_Input = new char[_InputSize];
memset(_Output, 0x00, _OutputSize);
memset(_Input, 0x00, _InputSize);
hReadThread = CreateThread(NULL, 0, COMReadData, 0, 0, NULL);
hWriteThread = CreateThread( NULL, 0, COMWriteData, 0, 0, NULL );
while (1) {};
return 0;
}

Код всего проекта: GitHub

READ ALSO
Разница ManualMap в версиях windows

Разница ManualMap в версиях windows

В чем разница между manualmap инъекцией на 10 и 7\8? А точнее, почему если инъекция происходит успешно на windows 10, программа крашится на 7\8? Что изменено?...

164
Тип для хранения времени в С++

Тип для хранения времени в С++

У меня стоит задача написать функцию, которая получает от GPS и возвращает текущее времяВ какой структуре или объекте, какого класса из стандартной...

187
Массив со стринговым индификатором(c++)

Массив со стринговым индификатором(c++)

возник вопрос, можно ли создать массив или его альтернативу, по типу списка, чтобы как индификатор выступало стринговое значението есть примерно...

222
C++ регулярное выражение

C++ регулярное выражение

Подскажите, почему код:

170