社区
VB基础类
帖子详情
怎样处理这样的串口发来的数据帧?
yuanchao1985
2010-07-10 08:43:52
http://hi.csdn.net/attachment/201007/10/5595442_1278722062i3Kg.jpg
这是VB串口和单片机数据采集的通信,VB发命令,单片机接到命令后正确则返回传感器采集的数据。各位大神
能告诉我一些处理数据帧的技巧吗?还有MScomm的设置,我是纯新手。
...全文
520
17
打赏
收藏
怎样处理这样的串口发来的数据帧?
http://hi.csdn.net/attachment/201007/10/5595442_1278722062i3Kg.jpg 这是VB串口和单片机数据采集的通信,VB发命令,单片机接到命令后正确则返回传感器采集的数据。各位大神 能告诉我一些处理数据帧的技巧吗?还有MScomm的设置,我是纯新手。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
非常感谢大家!教会了我就是为社会主义建设做出了贡献
c#
串口
通讯如何多次重复发送一帧数据,并且保证发送和回复每一帧数据的顺序正
C#
串口
通讯时,已经实现正确发送数据包,正确得到回复;如何实现若发送失败最多发送5次,并且发送多个数据包时,发送数据和回复数据在界面的显示不串行;我尝试做过,会出现数据串行,或者一帧数据已成功发送、回复还继续发送的情况,如图
UART.rar.zip_
串口
_电脑
串口
发数据
电脑
串口
向单片机发送数据,单片机收到后返回相同数据
STM32F103C8T6的
串口
1和
串口
3收发实验
串口
1、3接收有后缀"\r\n"和无后缀"\r\n"的不定长数据(不得超过固定长度)
串口
1通过重定义printf打印接收到
串口
1和
串口
3的数据,当接收到指定字符串则通过
串口
3发送指定字符串
迪文屏
串口
通信.rar_
串口
屏_
串口
通信_迪文_迪文
串口
屏_迪文屏
串口
基于STM32单片机与迪文屏
串口
通信代码,能正常与迪文屏进行数据的发送和接收。
3、C8051F410按键发
串口
数据.rar_C8051F410
串口
_C8051F410
串口
_三路
串口
C8051
C8051F410芯片开发板用
串口
发送数据案例,适合新手学习。简单实用。
VB基础类
7,785
社区成员
197,585
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章