Сбой последовательного порта MFC WriteFile () - PullRequest
2 голосов
/ 22 сентября 2011

Я пытаюсь записать в последовательный порт, используя функцию WriteFile (), и когда я ставлю несколько точек останова, чтобы проверить, пишет это или нет, это не так. Я пытаюсь передать строку данных через мой порт COMM.

BOOL bWriteRC = false;
DWORD iBytesWritten = 0;

//String data: "$ABCEFG,00000020,010000003F800000*##\r\n" ==> stored in a CString

CString sStore = "$ABCEFG,00000020,010000003F800000*##\r\n";

bWriteRC = WriteFile(hdl,sStore.GetBuffer(),sStore.GetLength(),&iBytesWritten,NULL); // doesn't go past this...

Каким-то образом, когда я его выполняю, программа не проходит эту функцию и останавливается. Любые предложения о том, что я делаю не так?

Я попытался уменьшить GetLength (), сделал его 14, и он работает без нареканий, но как только число байтов для записи возрастает до 14, WriteFile () перестает идти дальше.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Учитывая ваш вопрос, WriteFile () всегда будет успешным, как Алекс упоминал ранее. Лучше проверить правильность строки, которую вы пытаетесь записать, и допустимость ее на последовательном порту или нет. Иногда такие мелочи могут быть замечены и привести к большим ошибкам. Кроме этого, по моему мнению, это должно работать, если это простая операция записи.

0 голосов
/ 22 сентября 2011

Если он зависает в WriteFile, это означает, что драйвер COM-порта не принимает ваши данные, он не может отправить их на COM-порт. Это зависит от такой настройки COM-порта, как состояние сигнала DTR. Вам необходимо проверить настройки управления потоком.

...