当前位置: 代码迷 >> 单片机 >> 不知道是不是串口的有关问题?希望大家支招帮忙解决
  详细解决方案

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

热度:966   发布时间:2016-04-28 16:35:57.0
不知道是不是串口的问题?希望大家支招帮忙解决
近来,在做通过一个小东西。单片机用的是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];
--------------------
增大缓冲区试试
  相关解决方案