嗨stackoverflow用户!
我需要在Windows环境中轮询我的串口的CTS线, 我已经成功打开了COM端口,
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线的状态呢?
提前致谢。
答案 0 :(得分:0)
DWORD dwModemStatus;
BOOL fCTS = 0;
if (!SetCommMask(hSerialIn, EV_CTS))
{
DWORD err = GetLastError();
printf("\nHandle creation error code: %x\n", err);
}
DWORD dwCommEvent;
while(1)
{
if (!WaitCommEvent(hSerialIn, &dwCommEvent, NULL)) // An error occurred waiting for the event.
printf("");
else
{
if (!GetCommModemStatus(hSerialIn, &dwModemStatus)) // Error in GetCommModemStatus;
return;
fCTS = MS_CTS_ON & dwModemStatus;
if(fCTS)
printf("%x ", fCTS);
}
}