搜索
bottom↓
回复: 37

串口接收乱码怎么回事?

[复制链接]

出0入0汤圆

发表于 2012-7-7 18:17:37 | 显示全部楼层 |阅读模式
用M8做的串口接收数据板子,串口连接的是条码扫描枪,条码扫描枪本身带TTL电平,可以直接和单片机连接。

调试的时候,扫描枪和电脑连接,扫描的数据传送到串口调试助手中,没有问题。我焊接的板子和电脑连接,用串口发送数据,板子接收到的字符也正确。但是把扫描枪直接和我焊接的板子连接在一起就不行了。接收到的数据全是乱码。。。。。

头都大了,不知道问题出在那儿?为什么电脑发送的数据可以,扫描枪的数据就不行呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-7-7 18:20:45 | 显示全部楼层
hh 波特率这个应该不会错的吧?另外,你的扫描枪是不是带流控之类的啊?

出0入0汤圆

 楼主| 发表于 2012-7-7 18:48:44 | 显示全部楼层
波特率是9600,用电脑串口给我焊接的板子发送没有问题,按道理来讲,波特率应该没有问题。扫描枪往电脑发送也是9600,也是没有问题,就是扫描枪连接焊接的板子不行。

另外,问一下流控是什么?

出0入0汤圆

发表于 2012-7-7 18:50:03 | 显示全部楼层
条码扫描枪接电脑串口,扫描一个固定条码,记下结果及转成二进制。

条码扫描枪改接M8串口,扫描同一个条码,记下结果及转成二进制,看看两者差别。

出0入0汤圆

 楼主| 发表于 2012-7-7 19:17:05 | 显示全部楼层
eblc1388 发表于 2012-7-7 18:50
条码扫描枪接电脑串口,扫描一个固定条码,记下结果及转成二进制。

条码扫描枪改接M8串口,扫描同一个条码 ...

连接电脑扫描字符是A的二维条码,出来16进制是:0X41

连接板子,同样扫描A的二维条码,LCD显示一个下划线,我对比了一个字符,16进制应该是0X5F。

不知道,这样怎么对比!

出0入0汤圆

发表于 2012-7-7 19:36:54 | 显示全部楼层
看不出原因,请再测多二三个其它字符条码。

出0入0汤圆

 楼主| 发表于 2012-7-7 21:33:26 | 显示全部楼层
我再扫描了B和C,查看了一下,没有规律!

出0入0汤圆

发表于 2012-7-7 21:37:43 | 显示全部楼层
板子和电脑相连是不是有ttlcmos转换芯片,把那个芯片断掉电试试看

出0入0汤圆

发表于 2012-7-7 21:39:29 | 显示全部楼层
B 和 C 在 M8 串口得到的结果是什么?

出0入96汤圆

发表于 2012-7-7 21:53:05 | 显示全部楼层
你确定你的显示没有问题么?

出0入0汤圆

 楼主| 发表于 2012-7-7 22:19:22 | 显示全部楼层
learningAVR 发表于 2012-7-7 21:37
板子和电脑相连是不是有ttlcmos转换芯片,把那个芯片断掉电试试看

板子和电脑相连用了MAX232,现在是板子和电脑连接,电脑串口发送给板子的字符,在板子的LCD上显示正确,没有问题!扫描枪和电脑连接后,扫描的数据发送到电脑串口,用串口调试助手接收也没有问题。只是扫描枪和板子连接有问题,扫描枪和板子连接没用MAX232,直接把串口的RXD和TXD和M8的RXD和TXD连接在一起。这样收到的数据是乱码。这个扫描枪串口应该是带TTL电平转换的,如果用MAX232反而接收不到数据。

出0入0汤圆

 楼主| 发表于 2012-7-7 22:22:21 | 显示全部楼层
eblc1388 发表于 2012-7-7 21:39
B 和 C 在 M8 串口得到的结果是什么?

分别是0X2F和0X5E

出0入0汤圆

 楼主| 发表于 2012-7-7 22:22:55 | 显示全部楼层
gallle 发表于 2012-7-7 21:53
你确定你的显示没有问题么?

LCD显示肯定没有问题,板子和电脑连接,电脑发送的字符,板子接收和显示非常正常!

出0入0汤圆

发表于 2012-7-7 22:39:02 | 显示全部楼层
查看了一下,正如你所说,看不出有什么规律!

但我相信问题不大,你一下就能找出及解决,只是时机未到。

出0入0汤圆

发表于 2012-7-7 22:46:13 | 显示全部楼层
本帖最后由 eblc1388 于 2012-7-9 14:23 编辑

扫描的数据发送到电脑串口,之间有没有 MAX232?

如没有,则扫描器输出是 RS232 电平,接到 M8 亦要使用 MAX232 IC。

这推断未必百份百正确,也会有例外的情形,见【35楼】。

出0入0汤圆

 楼主| 发表于 2012-7-7 23:01:16 | 显示全部楼层
eblc1388 发表于 2012-7-7 22:46
扫描的数据发送到电脑串口,之间有没有 MAX232?

如没有,则扫描器输出是 RS232 电平,接到 M8 亦要使用 M ...

扫描枪和电脑串口是直接连接的,我听说电脑RS232电平和TTL电平都可以。

扫描枪和板子连接没有用MAX232,如果连接了MAX232反而收不到数据,不连能接收到数据,只是乱码。扫描枪有些是本身带TTL电平转换的,所以我想应该不需要连接MAX232。

电脑和板子连接有用MAX232。

出0入0汤圆

发表于 2012-7-7 23:50:02 | 显示全部楼层
◆ 扫描枪和板子连接没有用MAX232,如果连接了MAX232反而收不到数据

不可能发生,极大可能是接错了。这就是你要解决的问题所在。

扫描枪输出接了 MAX232 至 M8 才是正路。

出0入0汤圆

发表于 2012-7-8 00:04:11 | 显示全部楼层
本帖最后由 eblc1388 于 2012-7-8 00:06 编辑

查看一下 M8 Rxd(PD0) 脚接至 MAX232 那一脚,然後用以下接法:

如果 M8 Rxd 脚目前是接至 MAX232 第12脚,则把扫描枪输出(Tx)接至 MAX232 13脚。

如果 M8 Rxd 脚目前是接至 MAX232 第9脚,则扫描枪输出(Tx)接至 MAX232 8脚。

再提示一下:勿忘记接地(0V)

出0入0汤圆

 楼主| 发表于 2012-7-8 07:01:36 | 显示全部楼层
eblc1388 发表于 2012-7-7 23:50
◆ 扫描枪和板子连接没有用MAX232,如果连接了MAX232反而收不到数据

不可能发生,极大可能是接错了。这就 ...

扫描枪是带TTL电平转换的。如果连接了MAX232,接收不到数据。我试验了。MAX232也没有接错。

出0入0汤圆

 楼主| 发表于 2012-7-8 07:02:25 | 显示全部楼层
eblc1388 发表于 2012-7-8 00:04
查看一下 M8 Rxd(PD0) 脚接至 MAX232 那一脚,然後用以下接法:

如果 M8 Rxd 脚目前是接至 MAX232 第12脚, ...

谢谢,我是这样接的,不过接上后,接收不到数据,只有不用MAX232才能收到数据!

出0入96汤圆

发表于 2012-7-8 08:15:35 | 显示全部楼层
你的M8端电源电压是多少,我怀疑是电平不一致导致错误,你可以在M8端搭一个232的芯片电路,使用标准串口连接一下。

出0入0汤圆

发表于 2012-7-8 10:11:45 | 显示全部楼层
还没解决,两块板子有没有共地

出130入129汤圆

发表于 2012-7-8 10:24:20 | 显示全部楼层
莫非  RXD接到RXD,TXD接到TXD了

出0入0汤圆

 楼主| 发表于 2012-7-8 12:41:01 | 显示全部楼层
gallle 发表于 2012-7-8 08:15
你的M8端电源电压是多少,我怀疑是电平不一致导致错误,你可以在M8端搭一个232的芯片电路,使用标准串口连 ...

M8的电源5V左右,不是刚刚好的5V,我是用公司5V充电器做的电源。

M8搭一个MAX232,扫描枪连接232,这样,板子一点数据接收不到!只有扫描枪直接和M8连接,才能接收到数据,不过是乱码。

出0入0汤圆

 楼主| 发表于 2012-7-8 12:42:22 | 显示全部楼层
learningAVR 发表于 2012-7-8 10:11
还没解决,两块板子有没有共地

我一共就一块板子,串口的5PIN接地的。串口扫描枪电源地线,有没有连接到串口5PIN上我不太清楚,应该是连接的。

出0入0汤圆

 楼主| 发表于 2012-7-8 12:43:31 | 显示全部楼层
68336016 发表于 2012-7-8 10:24
莫非  RXD接到RXD,TXD接到TXD了

我把扫描枪没通过MAX232是直接和M8连接的,那样就是串口的RXD接M8的RXD,串口的TXD接M8的TXD。应该是这样的吧。。。

出130入129汤圆

发表于 2012-7-8 12:54:43 | 显示全部楼层
blueice2011 发表于 2012-7-8 12:43
我把扫描枪没通过MAX232是直接和M8连接的,那样就是串口的RXD接M8的RXD,串口的TXD接M8的TXD。应该是这样 ...

M8的RXD应该接扫描枪的TXD,TXD接扫描枪的RXD,这边发送那边接收

你检查下看看,别犯低级错误

出0入0汤圆

 楼主| 发表于 2012-7-8 13:15:32 | 显示全部楼层
68336016 发表于 2012-7-8 12:54
M8的RXD应该接扫描枪的TXD,TXD接扫描枪的RXD,这边发送那边接收

你检查下看看,别犯低级错误 ...

扫描枪的串口直接和M8连接也是这么连接吗?

我的是RXD连RXD,TXD连接TXD。但是这样连接,电脑发送过来的数据,和板子发送给电脑的数据都是正常的。只是改连扫描枪时出现乱码。这个我得试试看。

出130入129汤圆

发表于 2012-7-8 13:37:50 | 显示全部楼层
你M8通过MAX232与电脑连接,用的是什么线,两头DB9的吧?是直通线还是交叉线?

出0入0汤圆

 楼主| 发表于 2012-7-8 13:49:22 | 显示全部楼层
68336016 发表于 2012-7-8 13:37
你M8通过MAX232与电脑连接,用的是什么线,两头DB9的吧?是直通线还是交叉线? ...

用电脑连接是两头的DB9插头,两个插头2PIN连2PIN,3PIN连3PIN,5PIN连5PIN,直通线。

出0入0汤圆

发表于 2012-7-8 13:59:12 | 显示全部楼层
◆ 有没有连接到串口5PIN上我不太清楚,应该是连接的。
◆ 串口的RXD接M8的RXD,串口的TXD接M8的TXD。应该是这样的吧。。。

连接就是连接,怎会应该是连接。普通电表都没有吗?

串口通讯的接法书上及互联网上例子多如牛毛,楼主也不看一下,这不是作为技术人员的正确态度。

出0入0汤圆

 楼主| 发表于 2012-7-8 15:12:00 | 显示全部楼层
eblc1388 发表于 2012-7-8 13:59
◆ 有没有连接到串口5PIN上我不太清楚,应该是连接的。
◆ 串口的RXD接M8的RXD,串口的TXD接M8的TXD。应该 ...

我就是看了网上资料才这么直接连接的。如果说串口带有TTL电平转换是不需要接MAX232的,接上反而收不到数据。

而且连接方式也是RXD连RXD,TXD连TXD。我这样连肯定参照网上资料或者某本书上的。

串口电源有没有连接到5PIN,这个我得用万用表测一下。

我这是查了大量资料,在网上找了几天了,没得答案。都愁死了,不知道那儿出错了!

出0入0汤圆

发表于 2012-7-8 15:44:06 | 显示全部楼层
好吧,我也再没有什么更好的提议,就此顺祝楼主好运,问题得已解决。

出0入0汤圆

发表于 2012-7-8 17:26:02 | 显示全部楼层
晕,楼主看的什么书或资料啊,帖上来膜拜一下。

出0入0汤圆

发表于 2012-7-8 17:30:18 | 显示全部楼层
本帖最后由 eblc1388 于 2012-7-8 17:32 编辑

突然想起了为什么你在扫描枪 TX 接了 MAX232 后去 M8 RXD 会收不到数据。

扫描枪 TX 输出根本不是正确的 RS232 电平(没有负压输出),所以 MAX232 接了后没反应。你可以试一下以下的电路,保证有新发现, MAX232 就不用接了。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-7-8 18:46:01 | 显示全部楼层
eblc1388 发表于 2012-7-8 17:30
突然想起了为什么你在扫描枪 TX 接了 MAX232 后去 M8 RXD 会收不到数据。

扫描枪 TX 输出根本不是正确的 R ...

非常感谢,我明天试一下,希望能好!

出0入0汤圆

 楼主| 发表于 2012-7-9 10:50:39 | 显示全部楼层
eblc1388 发表于 2012-7-8 17:30
突然想起了为什么你在扫描枪 TX 接了 MAX232 后去 M8 RXD 会收不到数据。

扫描枪 TX 输出根本不是正确的 R ...

这个图应该是将高低电平转换一下。

但是,我刚用示波器分析了一下。

扫描枪直接连接M8,不接RS232,扫描字母A,出来的电平是:0101111101(包括一位起始位,一位停止位),TTL电平是低电位触法,但是,观察了一下,这个扫描枪是先发送的高位,再发送低位,正常TTL电平是先发送低四位,再发送高四位。


这个怎么处理呢?

我把图发上来。

这个是扫描枪的图:


这个是电脑串口调试助手发的图:


上面都是发送的字符A。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-7-9 11:44:55 | 显示全部楼层
eblc1388 发表于 2012-7-8 17:30
突然想起了为什么你在扫描枪 TX 接了 MAX232 后去 M8 RXD 会收不到数据。

扫描枪 TX 输出根本不是正确的 R ...

非常感谢:eblc1388

按照你画的图,字符接收正确了!

把原来扫描枪的电平转换一下,再给M8,这样和电脑发送的电平一样了。接收也正确了。

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表