0
嗨stackoverflow用戶!在Windows中調查CTS行的狀態
我需要輪詢我在Windows環境下, 我已經成功地打開了COM端口串口的CTS線,
HANDLE hSerialIn;
const char* pcCommPort = TEXT("COM3");
hSerialIn = CreateFile(pcCommPort, GENERIC_READ | GENERIC_WRITE, \
0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
然後我想有這樣的事情
DCB dcb = { 0 };
while (GetCommState(hSerialIn, &dcb)) {
if (dcb.fOutxCtsFlow)
;
else
;
}
我對COM端口感興趣的背景是,在那裏,我有一個USB-> UART轉換器,它連接到測量設備的觸發輸出,該設備每秒觸發一次輸出,並且我希望將它放在我的程序中。當我通過Hercules(終端應用程序)連接到COM端口時,它可以工作,我發現我的CTS線每秒都在改變。那麼如何檢查CTS線的狀態?
在此先感謝。
爲了挑剔,您希望切換RTS(請求發送),這是一個輸出,應該連接到CTS(清除發送),這是一個輸入。這些信號僅出現在RS-232中,而不是USB中。 – Lundin
工作解決方案低於 'DWORD dwModemStatus; BOOL fCTS = 0;如果(!SetCommMask(hSerialIn,EV_CTS)){ DWORD err = GetLastError(); \t \t printf(「\ n處理程序創建錯誤代碼:%x \ n」,err); \t} \t DWORD dwCommEvent; \t \t而(1) \t { \t \t如果(!WaitCommEvent(hSerialIn,與dwCommEvent,NULL)) \t \t \t //發生錯誤等待事件。 \t \t \t printf(「」); \t \t其他{ \t \t \t如果 \t \t \t \t //錯誤GetCommModemStatus(GetCommModemStatus(hSerialIn,與dwModemStatus)!); \t \t \t \t return; \t \t \t fCTS = MS_CTS_ON&dwModemStatus; \t \t \t如果(FCTS) \t \t \t \t的printf( 「%X」,FCTS); \t \t} \t \t \t \t}' –
不是評論的,你應該張貼此作爲一個回答你自己的問題。這樣做是非常好的,並鼓勵堆棧溢出。 – Lundin