上位机和下位机串口通信问题

vivigao 2011-05-27 05:25:45
有两台电脑A,B
其中A作为上位机,B用于给下位机下载程序(上位机程序是我写的,下位机的设备和程序都不是我做的)
上位机的程序经过测试没有问题(我用一个usb转串口和计算机A的串口相连,用串口调试助手进行调试,首发正常)
下位机的程序也经过调试没问题(我一个同学用电脑B与下位机通信,收发正常)
还做了一下测试:将电脑A和B进行串口通信,收发正常(证明串口线和串口是好的)。
波特率都为9600/115200(我都测试了),奇偶校验的设置,数据位设置均相同。
现在的问题是:
上位机A和下位机通信,一点反应没都没有。我google了一下说因为上位机和下位机没工地,我用万用表测了一下,导线的一端节下位机的地,另一端接到与电脑相连端的串口线的地,是通的,不知道这能不能说共不共地。
除此之外希望大家提出一点,谢谢谢谢了
...全文
2924 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
烦死 2011-07-01
  • 打赏
  • 举报
回复
跟串口线有关系的。
曾经遇到过 串口线故障。

还有跟操作系统也有关系的。
我曾经遇到过 在WIN7下 串口通讯一点问题都没有,在XP下 偶尔会出现类似问题。
qgq8312 2011-07-01
  • 打赏
  • 举报
回复
两个波特率都调低一些,都用9600试一下
woshi_ziyu 2011-06-12
  • 打赏
  • 举报
回复
去年今日此门中,。。。。。
csharpxuexizhong 2011-06-12
  • 打赏
  • 举报
回复
哦,呵呵,好东西
O丸子爹O 2011-06-07
  • 打赏
  • 举报
回复
我认为问题应该在USB转串口的转换器上,要是有条件,请不要用转换器,直接用真实的串口试验一下。
bluesea87 2011-06-07
  • 打赏
  • 举报
回复
你下位机的波特率标准吗?使用的晶振是多少
vivigao 2011-06-07
  • 打赏
  • 举报
回复
现在是,不同的电脑上用串口调试助手有时候对有时候错!
[Quote=引用 12 楼 renvy 的回复:]
用串口调试助手先试下,验证你的程序没问题,
[/Quote]
vivigao 2011-06-07
  • 打赏
  • 举报
回复
我试了一下115200不行,才换别的波特率试的。
这个问题困扰我这么久了,想波特率没设对这种错误是不可能的了。还有别的可能吗
[Quote=引用 11 楼 bjtea 的回复:]
通讯必须上、下位机的波特率一致,不一致是不能通讯的。当下位机用更高的速度发给你时,你收到的就是缩短的字节数。例如,你1秒收400字节,但下位机用0.5秒发给你400字节,你就只能收到200字节了,而且全是错的。
[/Quote]
renvy 2011-06-04
  • 打赏
  • 举报
回复
用串口调试助手先试下,验证你的程序没问题,
bjtea 2011-06-04
  • 打赏
  • 举报
回复
通讯必须上、下位机的波特率一致,不一致是不能通讯的。当下位机用更高的速度发给你时,你收到的就是缩短的字节数。例如,你1秒收400字节,但下位机用0.5秒发给你400字节,你就只能收到200字节了,而且全是错的。
vivigao 2011-06-03
  • 打赏
  • 举报
回复
又有新情况,我还是用上位机A给下位机发数据,用串口调试助手发数据,发现波特率位1200~14400之间时,返回值位发送的指令本身,如发送aa 06 f9 1b b0 20 02 ff,返回的也是aa 06 f9 1b b0 20 02 ff。
当波特率为 19200时发送aa 06 f9 1b b0 20 02 ff返回值为 F9 1B A0 00 02 FF
波特率位38400时发送aa 06 f9 1b b0 20 02 ff,返回值为 FF 07 FE 02 00 00
波特率位56000时发送aa 06 f9 1b b0 20 02 ff,返回值为 90 83 00
波特率位115200时发送aa 06 f9 1b b0 20 02 ff,返回值为 FE 00
下位机设置的是115200
因为下位机程序不是我写的,所以我不方便改下位机的波特率,请大家再给出出招把
vivigao 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wangjun403 的回复:]
纤长是多少?
示波器看看信号节点
[/Quote]
补充一下,现在只用一根线连接上位机和下位机
vivigao 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bjtea 的回复:]
用排除法找问题,第一步,先把波特率降低到1200,看能否正常;第二步,用串口调试工具,从A与下位机通讯,看是否正常;第三步,将你的程序安装到B,从B与下位机通讯,看正常否;
[/Quote]发现一个新问题:
和下位机没有关系,A给下位机指令,下位机会返回上来几个数(如 FE 00 )没有完成指令要求的任务。但是,B给下位机发指令,下位机可以正常完成任务,没有返回数。于是我又找了第三个电脑(简称C)用C给下位机发指令,反应和A一样,即C会收到下位机返回的数(如F0 00)但是下位机没反应(所有上位机ABC给下位机发数据全是用的串口调试助手)。此外,我用了usb转串口线做了测试,结果一样。我觉得线肯定没有问题。但不知道上位机A和C有什么问题。。。。
durant 2011-06-02
  • 打赏
  • 举报
回复
换双绞线试试
vivigao 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ningxin 的回复:]
换一根直连线。你串口线现在是交叉线。
[/Quote]是直连线,我测试过了
贝隆 2011-06-01
  • 打赏
  • 举报
回复
重点排除线的问题
durant 2011-06-01
  • 打赏
  • 举报
回复
纤长是多少?
示波器看看信号节点
Frankfu001 2011-05-28
  • 打赏
  • 举报
回复
你的线是交叉的还是非交叉的,也许要注意下,还有看看硬件发现串口没有
bjtea 2011-05-27
  • 打赏
  • 举报
回复
用排除法找问题,第一步,先把波特率降低到1200,看能否正常;第二步,用串口调试工具,从A与下位机通讯,看是否正常;第三步,将你的程序安装到B,从B与下位机通讯,看正常否;
ningxin 2011-05-27
  • 打赏
  • 举报
回复
换一根直连线。你串口线现在是交叉线。

6,163

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧