请教大家一个问题,我在做 WINCE 串口数据通讯的时候,
WriteFile(g_hPort,buf,dwCharToWrite,&dwBytesWritten,NULL);
后会收到一个字节数据 0xff
下面是我的接收函数,
DWORD WINAPI ReadPortThread(LPVOID lpvoid)
{
BOOL fReadState;
DWORD dwCommModemStatus;
DWORD dwLength;
COMSTAT ComStat;
DWORD dwErrorFlags;
while (g_hPort != INVALID_HANDLE_VALUE)
{
//等待串口的事件发生
WaitCommEvent (g_hPort, &dwCommModemStatus, 0);
if (dwCommModemStatus & EV_RXCHAR)
{
ClearCommError(g_hPort,&dwErrorFlags,&ComStat);
//cbInQue返回在串行驱动程序输入队列中的字符数
dwLength=ComStat.cbInQue;
if(dwLength>0)
{
//从串口读取数据
unsigned char * buf=new unsigned char[512];
fReadState=ReadFile(g_hPort,buf,dwLength,&dwLength,NULL);
if(!fReadState)
{
//不能从串口读取数据
MessageBox(NULL,TEXT("读取串口数据错误"),TEXT("读取串口数据"),MB_OK);
}
else
{
//把数据赋值给全局变量
g_TimerConter = 0 ;
memcpy(g_ReciverBuf+g_ReciverConter,buf,dwLength);
g_ReciverConter += dwLength ;
}
delete[] buf;
}
}
GetCommModemStatus (g_hPort, &dwCommModemStatus);
}
return 0;
}
你这个收到oxff ,多半是你驱动有问题啊。你试试sunrain_hjb写的串口调试助手看看效果怎么样。
还有写这些软件最好参考win32 的例子来做,稳定性好会好一些。C#就更糟糕了。C#下的串口写的还是挺稳定的啊!你查看下设置,是不是用了软件流控或者硬件流控之类的设置!或者是设备的原因!是不是串口配置问题 看看延迟参数
是串口驱动的问题~!
修改一下驱动就可以了