
linux 请问串口操作write(fd,buffer,bufflen);连续发送几千次后就无法再向外发送数据【但是可以读数据】
请问串口操作write(fd,buffer,bufflen);连续发送几千次后就无法再向外发送数据【但是可以读数据】,请问是什么原因?...
请问串口操作write(fd,buffer,bufflen);连续发送几千次后就无法再向外发送数据【但是可以读数据】,请问是什么原因?
展开
2个回答
展开全部
最好有代码,这样分析抓不准,可能原因:
缓冲区问题,不过串口缓冲应该支持不了几千次
字符串问题,类似申请了内存没释放,或者产生了越界或者乱码之类的
读取正常,说明串口本身没问题,除了程序本身,那么还可能是接收端处理的问题
更多追问追答
追问
SeriolPort->write(PBuff,BufLen);
---------------
实现:write
int hadwriteLen;
int WriteTimers;
hadwriteLen = 0;
WriteTimers = 0;
do{
WriteTimers++;
hadwriteLen += write(fd,(PBuff+hadwriteLen),(BufLen-hadwriteLen));
}while((hadwriteLen<BufLen)&&(WriteTimers<3));
-------------------------
read:就最简单的实现
read(fd,PBuff,sizeof(PBuff));
追答
从这段代码没有看出问题,
建议在while中,write之后,增加调试判断输出。如果handwriteLen为0,显示一下timer和buff的值,这样可以帮助分析,另外在每个写之前,对fd也做一个合法性判断,可以搞清楚具体的问题起因。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询