读书人

ReadFile函数在接收串口数据的时候如

发布时间: 2012-06-29 15:48:47 作者: rapoo

ReadFile函数在接收串口数据的时候,怎么设置成逐个接收?
大家好,我是新手程序员,我遇到了一个难题,就是串口通讯的问题,我用ReadFile函数进行接收串口数据,是由一个线程来监控的,ReadFile函数原型是ReadFile(hComm,buf,512,&dwLength,NULL),它接收的方式是接收一个数据包,假如我要发送的数据是一个数据包为“40 23 01 01 04 01”,它接收的方式是把这个整体放在buf里 然后一起显示,我不想这样,我现在想把它换成接收一个数据就返回一次,比如发送“40 23 01 01 04 01”,这个数据包,当它接收“40”的时候就读出,一个一个的读,这样我就可以判断文件头尾了,如果第一个数是“40”我就继续往下接收,否则就丢掉。我的这个函数是这样的:

DWORD WINAPI ReadPortThread(LPVOID lpvoid)
{
BOOL fReadState;
CSerialPortDlg *pDlg = (CSerialPortDlg*)lpvoid;
DWORD dwLength;
unsigned char* buf=new unsigned char[512];

while(hComm!=INVALID_HANDLE_VALUE)
{

if (hComm != INVALID_HANDLE_VALUE)
{/* 从串口读取数据 */
BOOL fReadState = ReadFile(hComm,buf,512,&dwLength,NULL);
if(!fReadState)
{
//MessageBox(_T("无法从串口读取数据!"));
}
else
{
if(dwLength != 0)
pDlg->OnCommRecv(pDlg, buf, dwLength);/* 接收成功调用回调函数 */
}
}
}

求大神帮助!

[解决办法]
应该是改成 1就行了的,,你把数据打印出来看看。。

读书人网 >C++

热点推荐