[51单片机] 串口如何接收字符串并且根据字符串来控制呢

[复制链接]
3247|13
 楼主| cvgjhuor 发表于 2017-9-5 22:14 | 显示全部楼层 |阅读模式
比如当接收到123abc的时,P0=0xfd,这个该怎么做?目前8位的接收和控制都没问题,可字符串的接收和用来控制就是不明白
 楼主| cvgjhuor 发表于 2017-9-5 22:15 | 显示全部楼层
真心的求解答,找了一天资料都晕晕乎乎
ayb_ice 发表于 2017-9-6 07:28 来自手机 | 显示全部楼层
需要协议,比如停顿100MS就认为发送结束了,然后比较接收的数据,相同则处理……
xuyaqi 发表于 2017-9-6 09:49 | 显示全部楼层
串口发送,接收的都是二进制数,字符串接收就是把收到的二进制数翻译成字符,再根据字符来控制。
懒人 发表于 2017-9-6 09:59 | 显示全部楼层
接收完一帧后,比较字符串,然后。。。。。。
ningling_21 发表于 2017-9-6 10:01 | 显示全部楼层
接收字符串的结束的判断很重要
engineerwubin 发表于 2017-9-6 11:23 | 显示全部楼层
有经过验证的串口库,接收和发送时调用库函数就可以了,请参考帖子“8051嵌入式操作系统”,附件中有下载地址和密码。使用手册中有联系方式,随时可以加QQ群技术交流。
山东电子小菜鸟 发表于 2017-9-6 22:41 | 显示全部楼层
char *p=""
 楼主| cvgjhuor 发表于 2017-9-9 21:55 | 显示全部楼层
ayb_ice 发表于 2017-9-6 07:28
需要协议,比如停顿100MS就认为发送结束了,然后比较接收的数据,相同则处理…… ...

能理解您的意思,但sbuf都是8位8位的送数,如何把传输过来的sbuf全部放到一个变量里呢。
 楼主| cvgjhuor 发表于 2017-9-9 22:04 | 显示全部楼层
xuyaqi 发表于 2017-9-6 09:49
串口发送,接收的都是二进制数,字符串接收就是把收到的二进制数翻译成字符,再根据字符来控制。 ...

sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单片机,单片机sbuf要接收两次才能收完,我如何把sbuf每一次传过来的数都按顺序放到一个变量里(比如上位机发0xdd0xff,怎样才能把这两次sbuf放入一个变量,这个变量=0xdd0xff)
 楼主| cvgjhuor 发表于 2017-9-9 22:05 | 显示全部楼层
ningling_21 发表于 2017-9-6 10:01
接收字符串的结束的判断很重要

sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单片机,单片机sbuf要接收两次才能收完,我如何把sbuf每一次传过来的数都按顺序放到一个变量里(比如上位机发0xdd0xff,怎样才能把这两次sbuf放入一个变量,这个变量=0xdd0xff)
xuyaqi 发表于 2017-9-10 07:24 | 显示全部楼层
cvgjhuor 发表于 2017-9-9 22:04
sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单 ...

比如收到sbuf1=0xdd,sbuf2=0xff,结果=sbuf1*256+sbuf2,结果就是一个16位二进制数。
cjjcjj1 发表于 2017-9-10 07:59 | 显示全部楼层
你好!串口无论发送几个字符,都能完成控制的,这个主要是写单片机串口接收的程序
ningling_21 发表于 2017-9-11 08:58 | 显示全部楼层
cvgjhuor 发表于 2017-9-9 22:05
sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单 ...

用数组缓冲接收所有的上位机数据,收完再组合成一个变量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

31

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部