找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2286|回复: 4
打印 上一主题 下一主题
收起左侧

单片机串口接收数据分割程序的问题?帮帮忙

[复制链接]
跳转到指定楼层
楼主
ID:184257 发表于 2018-3-22 01:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上位机向单片机发送"A,200"这么个字符串,当单片机收到后把后再的两百,分割出来放进一个int的变量里的,要怎么写,有源码最好,感谢感谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

板凳
ID:287575 发表于 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];
回复

使用道具 举报

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

对我就是要把上位机发过来的200字符串转成200这么个int数字然后存入到变量中
回复

使用道具 举报

5#
ID:281828 发表于 2018-3-22 19:25 | 只看该作者
zhangxiaozi 发表于 2018-3-22 09:18
比如你的接受数据为 rcv_buffer[5],接受了5个ascil 字符
unsigned int ddata;

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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