关于串口转485通信中丢字段的问题
2017-02-06 14:15
246 查看
很多初学者都知道探索者开发板,里面有很多的代码资源,在485通讯这一章内,我在调用原函数的时候发现了个问题,从机返回的数据包在主机接收端少了一个包头,即一个字节的数据,本人参考的是库函数版的代码,通过修改一下代码可以解决该问题:
void RS485_Send_Data(u8 *buf,u8 len)
{
u8 t;
GPIO_SetBits(GPIOD,GPIO_Pin_10);
for(t=0;t<len;t++)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
USART_SendData(USART3,buf[t]); //·¢ËÍÊý¾Ý
}
// while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
GPIO_ResetBits(GPIOD,GPIO_Pin_10);
}
将while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
注释即可解决,该语句等待状态,没有及时将485切换到接收状态,数据可能接收不完整
void RS485_Send_Data(u8 *buf,u8 len)
{
u8 t;
GPIO_SetBits(GPIOD,GPIO_Pin_10);
for(t=0;t<len;t++)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
USART_SendData(USART3,buf[t]); //·¢ËÍÊý¾Ý
}
// while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
GPIO_ResetBits(GPIOD,GPIO_Pin_10);
}
将while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
注释即可解决,该语句等待状态,没有及时将485切换到接收状态,数据可能接收不完整
相关文章推荐
- 关于单片机串口通信波特率问题
- 关于java串口通信 接受显示 乱码的字符转换问题解决方案
- 关于Windows Mobile 6 Professional Emulator中的一个串口设置小问题
- 关于oracle sql语句查询时 表名和字段名要加双引號的问题具体解释
- 一个关于UDP通信端口的问题
- 关于VC串口控件MSComm响应中断函数次数不定的问题
- 关于枚举电脑串口的一个小问题
- 关于串口数据接收相关问题
- C#使用OleDb操作excel数据源关于Select字段有空格问题
- 关于linux下的udp/tcp通信设置发送sendto/接收recvfrom信息超时的参数。解决通道堵塞问题。
- 批处理关于截取变量中字符串(字段)问题的详细说明(转)
- 关于c#程序中的datetime字段 传递空值问题
- 关于Flex\AS3 Socket 通信 安全沙箱的问题
- 关于串口操作的问题记录
- 关于串口通信波特率的几点思考
- 关于SqlServer导入access数据库,十进制字段的精度过小的问题
- 关于webrtc里面的opengl设置坐标系的问题,解决ios和android通信图像是反的问题
- 使用CSerialPort类编写串口通信程序的问题
- tinyos中节点-pc串口通信实验中net.tinyos.message包出错问题的解决方案
- 请教一个问题:关于 webrtc 通信的问题