串口接收数据出错,数据多了几个?为什么? 600分! (200分)

  • 主题发起人 主题发起人 missqiao
  • 开始时间 开始时间
M

missqiao

Unregistered / Unconfirmed
GUEST, unregistred user!
我用COMPORT发18个BYTE的数据,单片机返回16个BYTE的数据,
inputbuffersize和outbuffersize都是18,
现在我发数据过去,单片机得到正确的响应,它应该返回的数据为:ABCDEFGHIJKLMNOP (共16位)
但是我得到的数据为:
ABCDEFGH########IJKLMNOP######## (共32位)其中#是多余的数据,前8位和后8位的数据是相同的。
我想可能是buffersize的原因,但是我一改为16,程序就出错了。我用的是CPORT的
onRxChar事件来接收数据,我不会用datapacket,在大富翁上找了好久资料都找不到,
请有这方面经验的DFW帮帮忙,如果能帮我找出这方面的资料,我也给分。如果分少,还可以加。

修改一下问题:
我发现我的COMPORT一次只能接收8个BYTE,因为我的BUFFERSIZE是18,所以加了10个无关的BYTE一起发给我,
然后继续发剩下的8个BYTE,在后面又加上10个一样的BYTE,COMPORT需要如何设置才可以一次接受到16byes信息呢
各位做过COMPORT的朋友说两句吧,
TO hfghfghfg:看了你的一个帖子:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1679902
和我的问题差不多,又办法解决吗??
 
把inputbuffersize和outbuffersize都设置成1000试试
 
pengfeiyan:
谢谢你的关注,我做了测试,结果还是老样子……先给你加上50分吧。
 
那是不是你的单片机的问题?
 
把cport的握手协议全关掉
 
是不是你的通信速率不一致呢?可惜我对cport不熟,我一直用MSComm的,感觉挻不错!
 
我也怀疑是通信速率不一样

以前也遇到这种情况

 
有个串口测试的工具,你可以先试试看,是不是对的!
 
pengfeiyan:
1。我的单片机是没有问题的。
2。你是说flowcontrol吧?(我看帮助上说flowcontrol就是握手协议,如果我没理解
错的话),我把controlDTR和controlRTS其中一个设置为enable,或两个都是enable
单片机才会有响应,其他都是false的话,还是得到原来的结果。
 
伊天仇,wyddr:
我把每个通讯波特率都试了,原来的波特率是没有问题的。
freesoft:
我有一个串口调试工具,它测出来的数据是对的。

其他大富翁有什么建议吗?回答的都有分,我会拿出我所有的分数来感谢你们。
 
双方的协议是否是一样
此外你的band是不是太高?
 
建议你用MSComm吧!挻方便的!
 
唉,天仇兄,你说的那些我也想过,可是我不想放弃啊,都做了差不多两个星期了。
再说用MSCOMM后软件移植到其他机器上不方便啊
 
我用过CPort,而且和也是和朋友做的单片机通讯,一直没有什么问题的。
输入输出缓冲区一定要大于你输入输出的字节数。
如果你测试计算机串口输出的数据没有问题的话,那么要在你的单片机接受端找问题。
如果你用的台式机,不妨试试两个串口进行收发测试。如果没问题就是你单片机的问题。
 
用datapacket试试吧
 
liuying1129:
我很想用,但是我不会用?可不可以给些资料给我?
 
在每次接受之前 注意清除缓冲区
 
我试过要清空缓冲区,可是得到的结果完全是错的[?]
 
电平的干扰

检查地线
是否连接了DTR信号线
测串口的电压
改用硬件控制
 
既然用串口调试工具没问题,就应该是你的cport设置有问题!cport很好用的,倒觉得mscomm是垃圾!
 
后退
顶部