OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4831|回复: 8

串口数据截取

[复制链接]

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-9-28
在线时间
19 小时
发表于 2017-11-23 09:34:55 | 显示全部楼层 |阅读模式
5金钱
  大家好,我现遇到一个问题,通过探索者串口接收外部设备串口发送过来的数据,外部设备发送的数据一帧包含数据为"01 02 03 04",为16进制数,现在我需要将这一帧数据分别截取出来,XL=01,XH=02,YL=03,YH=04,然后再对XL,XH,YL,YH分别处理,外部设备数据会不停的发,外部设备每发送一帧数据,程序截取一次,重复执行,想问各位大神该如何实现,感谢!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

207

帖子

0

精华

高级会员

Rank: 4

积分
959
金钱
959
注册时间
2017-5-27
在线时间
108 小时
发表于 2017-11-23 09:48:27 | 显示全部楼层
发送的数据有协议么,还是只有"01 02 03 04"?有协议就按协议包截取,如果没有协议,先收入fifo,再定长4字节截取
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-9-28
在线时间
19 小时
 楼主| 发表于 2017-11-23 09:54:27 | 显示全部楼层
lanlzp 发表于 2017-11-23 09:48
发送的数据有协议么,还是只有"01 02 03 04"?有协议就按协议包截取,如果没有协议,先收入fifo,再定长4字节截 ...

发送的数据就是一帧有8个十六进制数,比如“01 02 03 04”,下一帧‘05 06 07 08’,再下一帧就是‘08 09 10 11’,以此类推,一帧数据里面全都是数据,没有其他标志位什么的,您说的定长4字节截取,能否说的具体一点呢?万分感谢!
回复

使用道具 举报

0

主题

207

帖子

0

精华

高级会员

Rank: 4

积分
959
金钱
959
注册时间
2017-5-27
在线时间
108 小时
发表于 2017-11-23 10:34:56 | 显示全部楼层
Leeg2016 发表于 2017-11-23 09:54
发送的数据就是一帧有8个十六进制数,比如“01 02 03 04”,下一帧‘05 06 07 08’,再下一帧就是‘08 09 ...

串口里面只管收数据放入fifo里面,主循环里面从fifo里面取出数据,累计8字节之后处理
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-9-28
在线时间
19 小时
 楼主| 发表于 2017-11-23 22:23:06 | 显示全部楼层
lanlzp 发表于 2017-11-23 10:34
串口里面只管收数据放入fifo里面,主循环里面从fifo里面取出数据,累计8字节之后处理

好的,我再研究研究,谢谢啦!
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2017-12-7 21:04:17 | 显示全部楼层
1234,5678之间至少有个时间间隔吧,有就加入一个超时判断,没有就没治了。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2017-12-26 16:10:59 | 显示全部楼层
zhxzhx 发表于 2017-12-7 21:04
1234,5678之间至少有个时间间隔吧,有就加入一个超时判断,没有就没治了。

不用加什么超时判断..STM8S有空闲中断.开启空闲中断就好了.可以的话,直接在中断里面处理接收到的数据.
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2017-12-29 22:11:52 | 显示全部楼层
操作系统 发表于 2017-12-26 16:10
不用加什么超时判断..STM8S有空闲中断.开启空闲中断就好了.可以的话,直接在中断里面处理接收到的数据.

空闲中断是每处理完一个字节都要产生的,超时是用来判断一个完整的帧格式的结束,典型应用就是MODBUS,你根本就没搞清楚在说什么。
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2017-8-8
在线时间
4 小时
发表于 2018-1-2 10:58:30 | 显示全部楼层
程序接收的时候做个判断
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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