当前位置: 代码迷 >> 单片机 >> 本人用232转USB读取数据正确,但是485转USB读取数据出错,用调试助手都可以正常接收数据。该如何解决
  详细解决方案

本人用232转USB读取数据正确,但是485转USB读取数据出错,用调试助手都可以正常接收数据。该如何解决

热度:90   发布时间:2016-04-28 15:03:39.0
本人用232转USB读取数据正确,但是485转USB读取数据出错,用调试助手都可以正常接收数据。
我使用modbus协议,现在用232转usb可以从单片机读到数据并且可以正确显示,但用485转usb可以从单片机读到数据,但是接收的数据有时候正确有时候错误,不如:我发送命令希望得到5个为1的数据并显示使用定时器发送命令,结果显示的时候有时候为1,有时候为 别的数据
if(2==m_ctrlComm.GetCommEvent()) { 
Sleep(400); //延时加在这个位置
//下面是对数据的处理
variant_inp = m_ctrlComm.GetInput();
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
for(k = 0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);   
}

------解决方案--------------------
引用:
我使用modbus协议,现在用232转usb可以从单片机读到数据并且可以正确显示,但用485转usb可以从单片机读到数据,但是接收的数据有时候正确有时候错误,不如:我发送命令希望得到5个为1的数据并显示使用定时器发送命令,结果显示的时候有时候为1,有时候为 别的数据
if(2==m_ctrlComm.GetCommEvent()) { 
Sleep(400); //延时加在这个位置
//下面是对数据的处理
variant_inp = m_ctrlComm.GetInput();
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
for(k = 0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k);   
}


应该是你的接收软件的原因。
你用的这个控件接收固定长度的数据比较方便,你单步调试一下,看看数据。
我想,你如果每次都发单个字符的话应该没有什么问题的。
  相关解决方案