社区
VB基础类
帖子详情
怎样处理这样的串口发来的数据帧?
yuanchao1985
2010-07-10 08:43:52
http://hi.csdn.net/attachment/201007/10/5595442_1278722062i3Kg.jpg
这是VB串口和单片机数据采集的通信,VB发命令,单片机接到命令后正确则返回传感器采集的数据。各位大神
能告诉我一些处理数据帧的技巧吗?还有MScomm的设置,我是纯新手。
...全文
582
17
打赏
收藏
怎样处理这样的串口发来的数据帧?
http://hi.csdn.net/attachment/201007/10/5595442_1278722062i3Kg.jpg 这是VB串口和单片机数据采集的通信,VB发命令,单片机接到命令后正确则返回传感器采集的数据。各位大神 能告诉我一些处理数据帧的技巧吗?还有MScomm的设置,我是纯新手。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flfq
2010-07-10
打赏
举报
回复
用MSCOMM控件数组,一个mscomm打开一个端口
yuanchao1985
2010-07-10
打赏
举报
回复
[Quote=引用 14 楼 of123 的回复:]
如果是一对多方式,最好采用 RS485 广播协议。它的优点是通讯线采用普通电话线,可以长达 1000 米,所有从机并联到线上。
如果要通过多个 RS232 端口的话,可以用一块串口扩展板。在 VB 代码中可以设置 MSComm 控件的端口号。
[/Quote]
是不是一个MSComm控件,更改端口号 1、2 、 3 、 4 、5、 6,在代码中轮流处理?
of123
2010-07-10
打赏
举报
回复
如果是一对多方式,最好采用 RS485 广播协议。它的优点是通讯线采用普通电话线,可以长达 1000 米,所有从机并联到线上。
如果要通过多个 RS232 端口的话,可以用一块串口扩展板。在 VB 代码中可以设置 MSComm 控件的端口号。
yuanchao1985
2010-07-10
打赏
举报
回复
[Quote=引用 11 楼 of123 的回复:]
CRC-16 校验有多种模式,上位端的必须与下位机一致。例如,同样对于 {0x31,0x32,0x33,0x34,0x35,0x36} 各种模式的结果为:
CRC-16 0xBB3D
CRC-16 (Modbus) 0x4B37
CRC-16 (Sick) 0x56A6
CRC-CCITT (XModem) 0x31C3
CRC-CCITT (0xFFFF) 0x29B1
……
[/Quote]
如果用VB采集6个单片机的话,怎样设置地址、串口号呢?还有怎样协调他们,让他们轮流接收命令,轮流发送采集的数据呢
yuanchao1985
2010-07-10
打赏
举报
回复
LH在这个项目中没有用到
of123
2010-07-10
打赏
举报
回复
CRC-16 校验有多种模式,上位端的必须与下位机一致。例如,同样对于 {0x31,0x32,0x33,0x34,0x35,0x36} 各种模式的结果为:
CRC-16 0xBB3D
CRC-16 (Modbus) 0x4B37
CRC-16 (Sick) 0x56A6
CRC-CCITT (XModem) 0x31C3
CRC-CCITT (0xFFFF) 0x29B1
CRC-CCITT (0x1D0F) 0xE5CC
CRC-CCITT (Kermit) 0x8921
CRC-DNP 0x82EA
实际上,需要确定的就是多项式是初始值。
CRC-16 0x8005 x16 + x15 + x2 + 1
CRC-CCITT 0x1021 x16 + x12 + x5 + 1
CRC-DNP 0x3D65 x16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1
yuanchao1985
2010-07-10
打赏
举报
回复
[Quote=引用 9 楼 of123 的回复:]
这个项目的协议很清楚,处理起来不困难。
接收数据采用 OnComm 事件驱动方式。
方法1:
触发条件设置为接收到 3 个字符。
在 OnComm 事件处理代码中,根据第三字节 nn 的值来确定后续的接收长度,循环等待到全部数据都收到。
方法2:
由于接收到的数据长度与命令中的读取长度有固定的对应关系,发出命令后实际上已知接收数据长度。
因此,可以设置事件……
[/Quote]
单片机采集每一个通道的电压和电流,分别用两个字节表示.LH 和LL 组合起来的两个字节表示要读取的通道数,所以,通道数=nn*1/4。这里应该是和下位机在这个项目中的约定
of123
2010-07-10
打赏
举报
回复
这个项目的协议很清楚,处理起来不困难。
接收数据采用 OnComm 事件驱动方式。
方法1:
触发条件设置为接收到 3 个字符。
在 OnComm 事件处理代码中,根据第三字节 nn 的值来确定后续的接收长度,循环等待到全部数据都收到。
方法2:
由于接收到的数据长度与命令中的读取长度有固定的对应关系,发出命令后实际上已知接收数据长度。
因此,可以设置事件触发条件为 LL*4 + 5。进入事件处理代码时,数据已经完全接收。
我不不解的是,命令中的读取长度仅仅是接收数据长度 nn (单字节)的四分之一,且上限也确定为 32,为什么还要用两个字节。实际上 LH 恒为 0。
zdingyun
2010-07-10
打赏
举报
回复
[Quote=引用 7 楼 yuanchao1985 的回复:]
测试过了,可以用,我第一次遇到串口通信,数据帧处理也没有见过类似的例子,不知道怎么入手,你能帮我找一断帧处理的代码吗?谢谢了
[/Quote]
见6楼的连接.
yuanchao1985
2010-07-10
打赏
举报
回复
[Quote=引用 5 楼 zdingyun 的回复:]
引用 4 楼 yuanchao1985 的回复:
CRC校验我有一个网上复制过来的模块,查表的,这样可以吗
你必须测试过.
[/Quote]
测试过了,可以用,我第一次遇到串口通信,数据帧处理也没有见过类似的例子,不知道怎么入手,你能帮我找一断帧处理的代码吗?谢谢了
zdingyun
2010-07-10
打赏
举报
回复
不考虑CRC校验可参阅:
http://www.vbgood.com/viewthread.php?tid=83700&highlight=
zdingyun
2010-07-10
打赏
举报
回复
[Quote=引用 4 楼 yuanchao1985 的回复:]
CRC校验我有一个网上复制过来的模块,查表的,这样可以吗
[/Quote]
你必须测试过.
yuanchao1985
2010-07-10
打赏
举报
回复
[Quote=引用 3 楼 zdingyun 的回复:]
LZ:你的重点在于找到计算CRC校验的代码.
[/Quote]
CRC校验我有一个网上复制过来的模块,查表的,这样可以吗
zdingyun
2010-07-10
打赏
举报
回复
LZ:你的重点在于找到计算CRC校验的代码.
yuanchao1985
2010-07-10
打赏
举报
回复
第二张图片没有显示出来,补一下
flfq
2010-07-10
打赏
举报
回复
定义一个byte数组,接收单片机发送的数据,然后进行校验,再根据通讯协议取得相应数据
yuanchao1985
2010-07-10
打赏
举报
回复
非常感谢大家!教会了我就是为社会主义建设做出了贡献
uart——
串口
数据帧
处理
在
串口
上,我们经常要对传过来的数据进行
处理
与解析。最经典的就是
处理
数据帧
,
数据帧
是什么呢?
数据帧
在我看来就是一连串的数据单元。
数据帧
定义了一些基本的协议。例如,
数据帧
一般会定义出帧头、帧尾、校验位、数据位、数据长度、命令字节(CMD)命令。
串口
是进行
处理
串口
数据帧
的方式:一般我们通过对
数据帧
的
处理
判断接受到的数据是否符合协议上的要求,解析到
数据帧
的格式符合要求则执行我们要执行的操作,否则丢弃这一帧的数据包,等待下一次的数据传输过来。
【STM32】
串口
数据帧
接收与分析
处理
算法
。。。
[STM32]
串口
数据帧
处理
(第一弹)
文章目录1
串口
使用的常用场景2 字节帧
处理
总结 1
串口
使用的常用场景 使用
串口
的主要目的是实现数据的交互,数据的交互的方法脱身于常用的场景。这里描述一个比较典型的场景: MCU作为主控制器通过
串口
和外部的设备或者人进行交互。对于单片机端的设备往往存在一系列的指令。对于控制一个电机而言,他可以具备如下的行为,停止、转动、速度设置、位置设置等等。进而,对于多个微控制器存在的系统而言,各个控制器间也需要进行一定的信息交互,比如,从机向主机定时的发送心跳包来告知主机我的工作状态良好等。因此,一套遵从统一规则
串口
通信
数据帧
不同的设备间建立连接往往需要通信,而
串口
通信是十分常用的一种。UART
串口
通信需要两根线来实现,一根用于
串口
发送,另外一更用于
串口
接收。UART
串口
发送或者接收过程中一帧数据包括1位起始位、8位数据位、1位停止位,为了提高数据的可靠性可以在停止位前加上1位奇偶校验位。
串口
通信虽然十分简单,但是在不同设备间发送的数据往往不止1个字节,往往需要多个字节组成的数据包。当我们按照数据包发送时我们需要考虑到以及,因此我们可以采用定义
数据帧
的方式解决上述两个问题。
STM32F4无人机实现
串口
+DMA
数据帧
解析
了解
数据帧
解析的方法,在使用DMA进行
串口
数据收发的基础上,实现
数据帧
解析。
VB基础类
7,787
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章