串口通讯每个字符之间延时问题
我向串口发送一串字符比如十六进制“AA550100ff00ff”我用VISA直接写入字符串,另一个串口设备有时收到有时收不到,而且收不到的概率比较多,而我逐个发,先发“AA”加200ms延时,再发‘55’加200ms延时,再发‘01’加200ms延时,再发‘00ff’加200ms延时,再发‘00ff’,这样另一各串口设备才能收到。请问有没有简单一点的方法解决这个问题,谢谢!这个不需要延时吧?我做过类似的,很简单的,发送字符串设置为“十六进制显示”,如果是定长的话接收端可以将“读取VISA”的字节数设置成常数。另外你得匹配好发送速率和波特率 单片机不要设置波特率么? 回复 3# gongkaiyu 的帖子
发送速率单片机也要设置的,要与串口相同的波特率才可以的 请问那个发送速率怎么匹配,还有接收设备是一个51单片机的老产品。我用串口助手发一串字符“aa550100ff00ff”,也是收不到的概率比较多,而且即使收到了有时也不能执行相应的动作,但是每个字节加延时就能收到。 双方波特率一致的情况下,看下接收方的程序,单片机串口是没有硬件缓冲的,要自己在中断程序中分配 能看到单片机程序就好了,人家加密的,即使解密了反汇编整理也是相当麻烦的 波特率是4800,labview发送是一串字符一下子发送,而51单片机是逐个字节接收的速度是不是跟不上,得让labview等等他。如果说波特率不对再怎么加延时也是没用的。我现在就逐个字节发,效果不错,就是有点麻烦。 举个例子,单片机要发送7个字节的十六进制数据,发送速率是10Hz(根据实际需要自己设定),那么需要的带宽大约为:7*10*10=700bps,因此串口的波特率最低应设为2400,但也不需要太高,我一般保证是所需带宽的2倍。
另外,字符接收不全,可能与你的串口接收程序有关系,最好先看一下LabVIEW自带的范例,稍微修改一下应该就可以了。
祝你好运! 谢谢楼上的答复
页:
[1]