打印
[51单片机]

串口如何接收字符串并且根据字符串来控制呢

[复制链接]
2828|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cvgjhuor|  楼主 | 2017-9-5 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
cvgjhuor|  楼主 | 2017-9-5 22:15 | 只看该作者
真心的求解答,找了一天资料都晕晕乎乎

使用特权

评论回复
板凳
ayb_ice| | 2017-9-6 07:28 | 只看该作者
需要协议,比如停顿100MS就认为发送结束了,然后比较接收的数据,相同则处理……

使用特权

评论回复
地板
xuyaqi| | 2017-9-6 09:49 | 只看该作者
串口发送,接收的都是二进制数,字符串接收就是把收到的二进制数翻译成字符,再根据字符来控制。

使用特权

评论回复
5
懒人| | 2017-9-6 09:59 | 只看该作者
接收完一帧后,比较字符串,然后。。。。。。

使用特权

评论回复
6
ningling_21| | 2017-9-6 10:01 | 只看该作者
接收字符串的结束的判断很重要

使用特权

评论回复
7
engineerwubin| | 2017-9-6 11:23 | 只看该作者
有经过验证的串口库,接收和发送时调用库函数就可以了,请参考帖子“8051嵌入式操作系统”,附件中有下载地址和密码。使用手册中有联系方式,随时可以加QQ群技术交流。

使用特权

评论回复
8
char *p=""

使用特权

评论回复
9
cvgjhuor|  楼主 | 2017-9-9 21:55 | 只看该作者
ayb_ice 发表于 2017-9-6 07:28
需要协议,比如停顿100MS就认为发送结束了,然后比较接收的数据,相同则处理…… ...

能理解您的意思,但sbuf都是8位8位的送数,如何把传输过来的sbuf全部放到一个变量里呢。

使用特权

评论回复
10
cvgjhuor|  楼主 | 2017-9-9 22:04 | 只看该作者
xuyaqi 发表于 2017-9-6 09:49
串口发送,接收的都是二进制数,字符串接收就是把收到的二进制数翻译成字符,再根据字符来控制。 ...

sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单片机,单片机sbuf要接收两次才能收完,我如何把sbuf每一次传过来的数都按顺序放到一个变量里(比如上位机发0xdd0xff,怎样才能把这两次sbuf放入一个变量,这个变量=0xdd0xff)

使用特权

评论回复
11
cvgjhuor|  楼主 | 2017-9-9 22:05 | 只看该作者
ningling_21 发表于 2017-9-6 10:01
接收字符串的结束的判断很重要

sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单片机,单片机sbuf要接收两次才能收完,我如何把sbuf每一次传过来的数都按顺序放到一个变量里(比如上位机发0xdd0xff,怎样才能把这两次sbuf放入一个变量,这个变量=0xdd0xff)

使用特权

评论回复
12
xuyaqi| | 2017-9-10 07:24 | 只看该作者
cvgjhuor 发表于 2017-9-9 22:04
sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单 ...

比如收到sbuf1=0xdd,sbuf2=0xff,结果=sbuf1*256+sbuf2,结果就是一个16位二进制数。

使用特权

评论回复
13
cjjcjj1| | 2017-9-10 07:59 | 只看该作者
你好!串口无论发送几个字符,都能完成控制的,这个主要是写单片机串口接收的程序

使用特权

评论回复
14
ningling_21| | 2017-9-11 08:58 | 只看该作者
cvgjhuor 发表于 2017-9-9 22:05
sbuf接收一次只能8位8位的接收,如何把所有接收到的数全部放入一个变量呢(比如上位机发送个16位的数到单 ...

用数组缓冲接收所有的上位机数据,收完再组合成一个变量

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

31

帖子

0

粉丝