标题: 单片机串口接收数据分割程序的问题?帮帮忙 [打印本页]

作者: lify5288    时间: 2018-3-22 01:12
标题: 单片机串口接收数据分割程序的问题?帮帮忙
上位机向单片机发送"A,200"这么个字符串,当单片机收到后把后再的两百,分割出来放进一个int的变量里的,要怎么写,有源码最好,感谢感谢

作者: HC6800-ES-V2.0    时间: 2018-3-22 08:17
我的思路是这样的:
第一:不知道你用的什么单片机,就以我用的51为例子说了。
第二:51单片机是8位机,你发的字符串一定是五个字符——“A”",""2""0""0",对吧,这个字符串用一个数组分别存贮起来,以备后来的分割。
第三:不知道你的字符串是特定长度还是随机长度。如果是特定长度,如你说的A,200,就好办了,取数组的后三个单位,加入那个变量就好了。如果不定长度,则要判断是那个单位开始的,找出来后,再加入。
第四:你没有说,放入int变量的是字符还是数字,(好像是数字吧,因为你说了“两百”),那么就有个转换了,发送的字符,是以ASCII码出现的,你的程序就要将ASCII码与数字对应,还有就是个位十位等对应,就可以转换为数字了。
第五:没时间帮你写源码,报歉。
作者: zhangxiaozi    时间: 2018-3-22 09:18
比如你的接受数据为 rcv_buffer[5],接受了5个ascil 字符
unsigned int ddata;

rcv_buffer[2]-=0x30;  //ascll转换成数字
rcv_buffer[3]-=0x30;
rcv_buffer[4]-=0x30;

ddata=rcv_buffer[2]*100+rcv_buffer[3]*10+rcv_buffer[4];

作者: lify5288    时间: 2018-3-22 09:47
HC6800-ES-V2.0 发表于 2018-3-22 08:17
我的思路是这样的:
第一:不知道你用的什么单片机,就以我用的51为例子说了。
第二:51单片机是8位机, ...

对我就是要把上位机发过来的200字符串转成200这么个int数字然后存入到变量中
作者: wannenggong    时间: 2018-3-22 19:25
zhangxiaozi 发表于 2018-3-22 09:18
比如你的接受数据为 rcv_buffer[5],接受了5个ascil 字符
unsigned int ddata;

好办法,很有用的,留记。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1