yinyan186 发表于 2007-12-19 13:46:51

为什么在做串口通讯中有些字符可以,有些字符就做不了通讯呢?

为什么在做串口通讯中有些字符可以,有些字符就做不了通讯呢?

machao 发表于 2007-12-19 18:18:34

串口通信,传送一个字节,0-255,任何都行.

还是基础不牢固,"什么是文本文件"这样的相关知识和概念不清楚.

yinyan186 发表于 2007-12-20 16:08:39

我觉得我说的的确不清楚,可能马老师没有太理解我的意思,并不完全是通讯的问题!

我的程序是这样处理的,MCU上电以后给电脑发一个讯号:"Link OK",然后就等待电脑按键,每次按键后,MCU收到以后,就再发射收到的按键

值给电脑,电脑将它显示出来。

我知道文本文件是用ASCII码保存的,我也知道是通讯中发射和接收都是以ASCII码为基础,像如果要显示一个数字,就必须再加48,然后发射

给电脑。

我现在的困惑是这样,我发送一个字符,没有问题,发送和接收都可以,因为我在仿真的时候看了变量。

我改了程序,单独发了一个05或者142给计算机,然后计算机没有办法显示出来,显示出来的是一个问号!
后来,我一个一个的试,又发现很多符号都显示不出来。
所以,才有此问题,我的程序是没有问题的,0-255发射都是可以的。

不知道马老师对这个能再帮我解答下吗?

plc_avr 发表于 2007-12-20 16:24:45

05的ASCII是什么?142的ASCII又是什么?都没定义怎么能显示!!!可以设为16进制查看发送结果。

machao 发表于 2007-12-20 19:04:20

我太理解你的问题在哪里了,所以并没有叫你改程序,而是把与"文本文件"和ASCII码的相关知识学习巩固.

yinyan186 发表于 2007-12-21 08:31:07

3楼的列火狂龙没有明白我的意思!
05和142就是一个ASCII码,它就代表一个符号了,再定义能起什么作用。
另外,对于c语言来说,用10进制和16进制对于编译器其实是没有区别的。

好了,我找了相关资料看了,谢谢马老师帮助!

以下是本站的一个链接,就是之前马老师谈文本的一个话题,希望大家不要像我一样走了一个大弯路。
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=752335

plc_avr 发表于 2007-12-21 09:25:10

05和142就是一个ASCII码,它就代表一个符号了,再定义能起什么作用。-----因为ASCII表里的十进制5代表字符"ENQ" 142代表什么东东?根本就没有定义!!!,你去查一下ASCII码表吧。

01,142 串口调试助手以ASCII方式是显示不出来的,要以16进制方式显示!!!

http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_191456.JPG

yinyan186 发表于 2007-12-21 14:51:33

我觉得plc_avr 列火狂龙好像很愤怒一样!我不知道你愤怒的意义在哪里??
我都已经说了你没有明白我的意思了:我是在用MCU和电脑直接做了个通讯,然后电脑显示。所以,我对于我来说05和05H是没有区别的,我不知道你都没有搞懂我的想法,然后弄一个大图纸上来是想表达什么?

你知道MCU发一个02给电脑,然后电脑会显示一个什么吗?用你的理解是不是是STX,然后你用调试工具显示的是30 32。
但你知道用我的方法是可以显示什么吗?可以显示个黑色的小笑脸出来!

我想问下plc_avr 列火狂龙:你用“开始”菜单那里面的应用文件做过通讯吗?
我觉得是个误解问题,我这次解释的很清楚了,你明白了吗?

马老师已经说的很好了,是我没有明白ASCII和文本的一些知识造成的。我现在明白了,谢谢。

plc_avr 发表于 2007-12-21 16:25:53

SORRY,SORRY,当我什么都没说好了。

yinyan186 发表于 2007-12-21 17:58:10

没有,只是觉得还是解释清楚比较好。
免得你用3个惊叹号的,如果我语气有冒犯的地方,Sorry!
页: [1]
查看完整版本: 为什么在做串口通讯中有些字符可以,有些字符就做不了通讯呢?