关于线程里面怎么响应串口时间?
关于线程里面如何响应串口时间?????
我在主线程中创建了一个工作线程,准备在工作线程中对串口进行读写的操作,我用的是serialport的串口类
当我在工作者线程中向串口写入数据后,想要从串口读出.当在主线程中响应的时候,我可以添加消息响应.可是在工作线程中如何响应和接受串口缓冲区的数据啊.
知道的达人帮把,谢谢了!!
------解决方案--------------------
用什么串口类啊!
直接用 WriteFile() ReadFile() 操作不是很简单吗?搞的那么复杂干什么啊?
------解决方案--------------------
不大明白意思!
------解决方案--------------------
说实在的。
楼主应该应该直接把串口当成文件读写就可以了。
hCom = CreateFile( "COM1 ", GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL);
DCB dcb;
memset(&dcb, 0, sizeof(DCB));
GetCommState(hCom, &dcb);
dcb.DCBlength = sizeof(DCB);
dcb.BaudRate = 9600; //波特率
dcb.ByteSize = 8; //数据位
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
if (!SetCommState(hCom, &dcb))
{
CString strError;
dwError = GetLastError();
strError.Format( "串口设置出错,error = %d。 ", dwError);
AfxMessageBox(strError);
}
SetupComm(hCom, 1024, 1024);
PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
COMMTIMEOUTS to;
memset(&to, 0, sizeof(to));
GetCommTimeouts(hCom, &to);
to.ReadIntervalTimeout = 10;
SetCommTimeouts(hCom, &to);
ReadFile(hCom, readBuff, 10, &wCount, &OverlappedRead);
我在主线程中创建了一个工作线程,准备在工作线程中对串口进行读写的操作,我用的是serialport的串口类
当我在工作者线程中向串口写入数据后,想要从串口读出.当在主线程中响应的时候,我可以添加消息响应.可是在工作线程中如何响应和接受串口缓冲区的数据啊.
知道的达人帮把,谢谢了!!
------解决方案--------------------
用什么串口类啊!
直接用 WriteFile() ReadFile() 操作不是很简单吗?搞的那么复杂干什么啊?
------解决方案--------------------
不大明白意思!
------解决方案--------------------
说实在的。
楼主应该应该直接把串口当成文件读写就可以了。
hCom = CreateFile( "COM1 ", GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL);
DCB dcb;
memset(&dcb, 0, sizeof(DCB));
GetCommState(hCom, &dcb);
dcb.DCBlength = sizeof(DCB);
dcb.BaudRate = 9600; //波特率
dcb.ByteSize = 8; //数据位
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
if (!SetCommState(hCom, &dcb))
{
CString strError;
dwError = GetLastError();
strError.Format( "串口设置出错,error = %d。 ", dwError);
AfxMessageBox(strError);
}
SetupComm(hCom, 1024, 1024);
PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
COMMTIMEOUTS to;
memset(&to, 0, sizeof(to));
GetCommTimeouts(hCom, &to);
to.ReadIntervalTimeout = 10;
SetCommTimeouts(hCom, &to);
ReadFile(hCom, readBuff, 10, &wCount, &OverlappedRead);