每发送一组字符或一个字符,pc机仅能收到一个字符,而且开发板还死机,若发送不成功,开发板不死机.开发板还不能接受,一接收就死机.不知道怎么回事,请大家指点指点,是驱动程序问题还是系统程学问题还是应用程序问题?
拜托,你这样问,谁知道阿,会死机,很可能是内存溢出,那就是你程序问题了,你要么把程序贴上来。
UpdateData(true);
m_sendBuffer.TrimLeft();
m_sendBuffer.TrimRight();
DWORD dwBytesWrite=m_sendBuffer.GetLength();
COMSTAT ComStat;
DWORD dwErrorFlags;
BOOL bWriteStat;
ClearCommError(hRle,&dwErrorFlags,&ComStat);
PurgeComm(hRle, PURGE_TXCLEAR);
bWriteStat=WriteFile(hRle,m_sendBuffer,
dwBytesWrite,& dwBytesWrite,NULL);//
if(bWriteStat==FALSE)
{AfxMessageBox(_T("写串口失败!"));
if(GetLastError()==ERROR_IO_PENDING)
{
WaitForSingleObject(m_osWrite.hEvent,1000);
}
}
这是发送的程序
谢谢你的回帖,我再简单介绍一下情况。我是在公司的开发板上运行ce系统,现在串口不能用,不知道什么原因。写这些应用程序就是为了调试串口能不能用,现在发送一组字符,只能收到第一个字符,然后就死机了;若下位机收不到信息就不会死。至于接受,上位机已发送,开发办就死机了。请各位多多指点。
以前我遇到过一种情况是,BIOS里的串口的中断值要WINCE里设置的一样,这个你问问做你们板子NK的人,他应该知道做NK时的值,看这个值和BIOS里的一样不一样
谢谢你的热心帮助,我问了一下同事,与这个无关,而且以前同事的调试到可以正常发送但不能接收。
以前可以正常发送的时候是这个程序吗,程序改过没有??
还没该好,屏掉了,BOOL InstallSoftwareISR(PSER16550_INFO pHWHead,PVOID pIoAddr,WORD uMulti)这个函数,发送正常了但不能接收.每一接收就死机.
我屏蔽掉了一些低层函数,收发都可以了。但是还有很多问题,发送时在WriteFile函数里的要发送字节数量的参数需是实际的二倍,接收端才能收到正确数量的字节;而且还不能更换波特率,只能用9600波特.
原来的问题解决了一部分,现在忙别的问题。目前只能用串口2,其余的串口打不开。请大家多提建议,怎么注册串口一?内核要不要做些改动?
怎么没人回答呢?现在还有很多问题:发送时在WriteFile函数里的要发送字节数量的参数需是实际的二倍,接收端才能收到正确数量的字节;而且还不能更换波特率,只能用9600波特;接收时总收到很多'a';串口一不知怎么注册.谁能帮我一把,定重谢,很着急.
发送应该是,接受不知道为什么。接受好像用的不是中断方式,是轮询方式。没做过这个,不知道怎么解决?现在的问题:不知怎么注册串口一;接受有问题;其余的波特率不能用。
现在剩下的的主要问题:不知怎么注册串口一;接收有问题(总收到很多字符a,其实上位机并没发送a).谁能帮我解决,我就送10个qq币给谁.欢迎大家提建议.
CE下的串口通信是很娇贵,很容易就被冲死机了,确实要好好设计程序才行。
波特率如果发送端采用的是9600,那你也只能设置为9600才能接收啊,别的波特率当然不行了
波特率当然是一致了。收到a的问题解决了,在接受处加个延时就好了。现在还剩下以下几个问题:只能用9600的波特率;收发会漏码或加码,漏码就是接收时漏掉一些字符,多码就是会重复某些字符;串口不是很好用,需要重起或刷新几次才能正常使用。