作者:
ck49 (心動)
2016-04-05 13:43:45開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Win7 x64 MINGW
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
#include <windows.h>
問題(Question):
在讀取 COM port 時使用
ReadFile(Cport[comport_number], buf, size, (LPDWORD)((void *)&n), NULL);
時若設定
COMMTIMEOUTS Cptimeouts;
Cptimeouts.ReadIntervalTimeout = MAXDWORD;
Cptimeouts.ReadTotalTimeoutMultiplier = 0;
Cptimeouts.ReadTotalTimeoutConstant = 5000; //5000 ms
Cptimeouts.WriteTotalTimeoutMultiplier = 0;
Cptimeouts.WriteTotalTimeoutConstant = 5000; //5000 ms
此設定是每五秒檢查一次,不符合需求,
例如在2秒時有資料,要等到5秒時才讀到。
若設為0,則會造成cpu耗盡的狀況,
請教是否有更好的讀取方法?
感恩
作者: twitcha101 (twitch) 2016-04-05 14:37:00
你的ReadFile有搭配Thread嗎?另外這個timeout是你在接收佇列裡面字元與字元間的等待最大間隔,超過則返回動作
作者: twitcha101 (twitch) 2016-04-05 17:17:00
要設成0就要用,waitcommevent這類去卡 thread,不然就要加 delay 在 thread 裡