专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 单片机

不知道是不是串口的有关问题?希望大家支招帮忙解决

发布时间:2010-06-14 16:01:45 文章来源:www.iduyao.cn 采编人员:星星草
不知道是不是串口的问题?希望大家支招帮忙解决
近来,在做通过一个小东西。单片机用的是STC12C5A32S2,调用Znfat32文件系统把SD卡里的文件通过串口发送出来。
 
这里有一个简单的协议,上位机(一个设备)发送一个05过来,我调用文件的256字节发送出去,一直到文件的结束。 

现在的问题是:上位机发出的第258个05我没有收到,所以到这里就停止了,文件没有发送结束。但是此时我自己通过串口发送一个05进去,数据可以发出来,而且数据是对的。

难道是波特率的问题吗 ? 

不知道是哪里出现问题了呢?请求大家帮忙解决,不甚感激。。。




------解决方案--------------------
你确定你发送的数据顺序正确吗。
高位在前,还是低位在前,记住,是二进制。
------解决方案--------------------
前面257次都正确,说明不是波特率问题,很有可能是代码漏洞
------解决方案--------------------
1. 首先,是否是每次测试都只能收到第257个05呢,如果是,肯定是你的代码有问题,可能是你那个计数变量有问题,是否定义成unsigned char 类型了,它跟256很接近呢。

2. 不知你串口数据怎么收的,是否用的中断,是否是因为哪里关中断时间过长了呢。

3. 个人认为你的协议缺少检错和重传机制,这样程序的健壮性很差。
------解决方案--------------------
stc是1T的,是否发送的两个字节间隔时间短?

------解决方案--------------------

unsigned char buf[129]; //数据缓冲区,用于存储读取的文件数据
idata unsigned char buf1[129];
--------------------
增大缓冲区试试
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: