[求助] 串口调试助手数据处理问题

tanzhiying   2015-5-20 15:20 楼主
       这是我在串口调试助手收到的16进制数据,每4个字节是一个数,需要转换成10进制数,我不知道怎样让单片机每发送4个字节就换行显示,而且有方便快捷的办法转成10进制么?谢谢大家。
00 FF F0 C1 27 7F FF FF FF FF FE A3 3B 00 00 02
07 FF F3 1D 64 FF F0 C3 2E 69 55 2B 00 FF F0 C1
55 00 00 00 5B 2A DD 6A C0 00 00 06 26 46 EE CA
80 00 89 54 40 FF FF FB 69 7F FF FF FF FF F0 C0
70 2E 68 9A 00 FF F0 C0 70 7F FF FF FF 00 04 7C
E5

回复评论 (15)

有啊,不要用16进制显示就好了,发ASCII码,每4个字节发个换行符,就行了。
我来到这个世界,就是为了遇见你。在某天我们会相遇,然后在一起,直到最后一起离去。
点赞  2015-5-20 16:00
引用: 一个小白 发表于 2015-5-20 16:00
有啊,不要用16进制显示就好了,发ASCII码,每4个字节发个换行符,就行了。

那就是说我需要在单片机里将16进制数转化成ASCII码再用串口发出来么?要怎么转换啊?还有在串口这边接收完又怎么转换成十进制啊?
点赞  2015-5-20 17:05
直接字符显示不可以么
点赞  2015-5-20 19:11
引用: 数码小叶 发表于 2015-5-20 19:11
直接字符显示不可以么

字符显示的话这些数字都是乱七八糟的东西。
点赞  2015-5-20 19:59
数字的ASCII是0x30-0x39
回车是0x0d
换行是0x0a
直接将你需要的数字逐个转换为字符再输出就行了,注意格式。
如果只是要阅读,可以转换成BCD码,举个例子,0x45,0x87可以用来表示4587,具体什么格式只要双方约定了就好。这样用4bit传递一个数字,同时上位机可以直接阅读,兼顾了效率和可读性。
点赞  2015-5-20 21:24
你的发送函数应该是uartsendbyte之类的东西,要发送数字10,参数写成‘10’,加单引号,就可以了。
点赞  2015-5-20 22:19
引用: ienglgge 发表于 2015-5-20 22:19
你的发送函数应该是uartsendbyte之类的东西,要发送数字10,参数写成‘10’,加单引号,就可以了。

'10'是非法内容。单引号包裹的是字符,10有2个字符,是字符串,字符串需要用双引号包裹。

一般对与固定的字符串才这么处理,对于变化的字符串特别是数字,一般都是将其转化为ASCII再发出。

需要取整数的各个位上的数字,再将其转换成ASCII。
点赞  2015-5-21 01:26
引用: tanzhiying 发表于 2015-5-20 19:59
字符显示的话这些数字都是乱七八糟的东西。

你发送的是啥格式
点赞  2015-5-21 08:58
引用: 数码小叶 发表于 2015-5-21 08:58
你发送的是啥格式

我要传到PC的是一个个long int的数,是分成4个int来传的。
点赞  2015-5-21 09:58
直接加换行符就可以
点赞  2015-5-21 10:18
看这儿吧,俺的回答一向都是直接到位而且详细,呵呵,俺以前弄过用单片机的两路PWM输出给快充检测芯片CHY100所需要的不同的模拟电压信号,然后开关电源根据CHY100检测到的信号再输出不同的电压:5V 9V 12V,然后单片机再检测5V 9V 12V这三个电压通过串口显示在电脑上,电压错误就报警…… 如果想换行显示的话发送0X0A就可,如果楼主想用十进制显示在串口助手上,可以在前面定义uchar table[]="0123456789";这种方式,然后显示什么值当然通过适合自已的公式计算即可,还有,有些串口助手是不显示中文的,推荐用sscom32这个,有什么问题可以再问我…… 顺便说一下,以前我提问的时候老是没有想要的答案,不知道是不是别人不理解我想问的意思还是……所以俺一般看到有人提问都可以猜个十有八九…… 本帖最后由 gh131413 于 2015-5-21 17:42 编辑
点赞  2015-5-21 17:32
引用: tanzhiying 发表于 2015-5-20 17:05
那就是说我需要在单片机里将16进制数转化成ASCII码再用串口发出来么?要怎么转换啊?还有在串口这边接收完又怎么转换成十进制啊?

你不是用的串口助手吗?不需要转换,直接收到的就是你想要的
我来到这个世界,就是为了遇见你。在某天我们会相遇,然后在一起,直到最后一起离去。
点赞  2015-5-22 08:47
引用: tanzhiying 发表于 2015-5-20 17:05
那就是说我需要在单片机里将16进制数转化成ASCII码再用串口发出来么?要怎么转换啊?还有在串口这边接收完又怎么转换成十进制啊?

至于怎么转换,你都知道ASCII码了,这不就知道怎么转换了吗,难道还要我替你写程序吗!?
我来到这个世界,就是为了遇见你。在某天我们会相遇,然后在一起,直到最后一起离去。
点赞  2015-5-22 08:50
可以转换成ASCII码来发送,只是你下面要做数据转换,比较麻烦
点赞  2015-5-22 15:20
这个问题问的,都不知道该哭还是该笑了
点赞  2015-6-12 12:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复