匿名上位机使用方法分享--高级收码

2023-05-16

匿名上位机总体介绍移步:https://blog.csdn.net/wangjt1988/article/details/83684188

本文视频介绍:https://www.bilibili.com/video/av35203332/

高级收码,也就是带协议解析的数据接收功能,可以将收到的数据,按匿名通信协议进行解析。下面请看本功能截图:

区域介绍:

A:解析后数据帧显示,第一列AA05AFF105,5字节,第二列88XX,2字节,第三列0C一字节,第四列FF85,2字节,第五列1字节。具体每一列的解释,稍后见下文。

B:数据帧格式设置,本区域,有1到10共10个选项卡,分别代表功能帧F1到FA的数据格式配置,比如上图为第一页,也就是F1的设置。使能该帧,勾选则上位机对该帧进行解析,不勾选则即使收到本F1数据帧,也不进行解析。显示该帧,勾选后如果收到F1数据帧,则在A区域进行显示,反之不显示。功能码,也就是本帧对应的F1。右方有5*6共30个选择项,表示本数据帧,最多包含有30个数据,在这里依次配置每个数据的数据格式,可以配置为int8,uint8,int16,uint16,int32型数据。这里特意没有做float型数据,float型数据有出错概率,而且小数型float数据可以通过乘以100或者1000等,变成int16或int32整型数据进行传输。设置完毕后,点击保存设置按钮以使设置生效。

C:数据容器设置,什么是数据容器呢,就是刚才F1数据帧进行解析后,会解析出最多30个数据,那么用哪个数据进行波形显示,或者excel保存哪个数据呢,这就要数据容器了。匿名上位机设置有20个数据容器,对应本区域1到20选项卡。我们可以把数据容器想象成20个卡车,只有卡车能将数据传输到用户,那么这20辆卡车将哪个数据传输给用户呢,就是这C区域进行配置了。首先选择数据来源,帧1到帧10,对应F1到FA数据帧,然后是数据位置,有1到30共30个选项,分别对应数据帧内包含的30个数据。

D:这里是数据实时显示区,这里会实时显示20个数据容器的数据值。

举例说明:

例如我们想传输3个自己的数据到上位机进行显示,第一个为uint16型,第二个为uint8型,第三个为int16型。

第一步:我们可以用F1到FA任意一个用户自定义数据帧,我们以F1为例。B区域选第一页,也就是F1,然后勾选使能该帧,显示该帧,然后右方依次选择我们需要的3个数据类型,分别为uint16,uint8,int16,如上图。其余后续的数据类型选择不比更该,任意值都可以,我们只需确定前3个选项正确就可以。最后点击保存设置。

第二步:对数据容器进行配置,数据容器1设置为:数据来源:帧1,数据位置:1,数据容器2设置为:数据来源:帧1,数据位置:2,数据容器3设置为:数据来源:帧1,数据位置:3.那么此时,数据容器1、2、3就分别存放了我们需要的3个数据。此时上位机就配置好了。

下面我们看看下位机的编写。

//数据拆分宏定义,在发送大于1字节的数据类型时,比如int16、float等,需要把数据拆分成单独字节进行发送
#define BYTE0(dwTemp)       ( *( (char *)(&dwTemp)	  ) )
#define BYTE1(dwTemp)       ( *( (char *)(&dwTemp) + 1) )
#define BYTE2(dwTemp)       ( *( (char *)(&dwTemp) + 2) )
#define BYTE3(dwTemp)       ( *( (char *)(&dwTemp) + 3) )
	
u8 testdatatosend[50];	//发送数据缓存
void TestSendData(u8 *dataToSend , u8 length)//数据发送函数
{
	Usb_Hid_Adddata(testdatatosend,length);	//将数据添加至HID发送缓冲区,HID会自动发送
}
void Test_Send_User(u16 data1, u8 data2, s16 data3)	//发送用户数据,这里有3个数据,分别对应本教程3个数据
{
	u8 _cnt=0;
	
	testdatatosend[_cnt++]=0xAA;//0xAA为帧头
	testdatatosend[_cnt++]=0x05;//0x05为数据发送源,具体请参考匿名协议,本字节用户可以随意更改
	testdatatosend[_cnt++]=0xAF;//0xAF为数据目的地,AF表示上位机,具体请参考匿名协议
	testdatatosend[_cnt++]=0xF1;//0xF1,表示本帧为F1用户自定义帧,对应高级收码的F1功能帧
	testdatatosend[_cnt++]=0;//本字节表示数据长度,这里先=0,函数最后再赋值,这样就不用人工计算长度了

	testdatatosend[_cnt++]=BYTE1(data1);//将要发送的数据放至发送缓冲区
	testdatatosend[_cnt++]=BYTE0(data1);
	
	testdatatosend[_cnt++]=data2;
	
	testdatatosend[_cnt++]=BYTE1(data3);
	testdatatosend[_cnt++]=BYTE0(data3);

	testdatatosend[4] = _cnt-5;//_cnt用来计算数据长度,减5为减去帧开头5个非数据字节
	
	u8 sum = 0;	//以下为计算sum校验字节,从0xAA也就是首字节,一直到sum字节前一字节
	for(u8 i=0;i<_cnt;i++)
		sum += testdatatosend[i];
	
	testdatatosend[_cnt++]=sum;	//将sum校验数据放置最后一字节

	TestSendData(testdatatosend, _cnt);	//调用发送数据函数
}




static void Loop_1000Hz(void)//1ms执行一次
{
	static u16 cnt = 0;
	cnt++;
	Test_Send_User(cnt,12,-123);//发送用户数据
	Usb_Hid_Send();	//因为本例使用HID方式,此处是激活HID数据发送
}

可以看到,如果仅仅是使用上位机的用户数据显示,代码是十分简单的。Test_Send_User(cnt,12,-123);函数即可将3个用户数据发送至上位机,本函数3个变量,为了演示,第一个变量每1ms自动加1,第2、3个变量直接用了常数。下面我们回到第一个截图,再进行理解就很方便了。

A区域的AA05AFF105,5字节,依次为帧头AA、数据发送源05、数据目的地AF、数据功能字F1、数据长度05(uint16+uint8+int16=5字节)。然后第2、3、4列分别为3个数据,第5列为sum校验值。

同时D区域也开始实时显示数据1、2、3的实时值,表示数据已成功接收、解析。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

匿名上位机使用方法分享--高级收码 的相关文章

  • Python快速入门多线程与多进程

    Python快速入门多线程与多进程 多线程 多线程的含义 进程我们可以理解为是一个可以独立运行的程序单位 xff0c 比如打开一个浏览器 xff0c 这就开启了一个浏览器进程 xff1b 打开一个文本编辑器 xff0c 这就开启了一个文本编
  • C++中strcmp的头文件问题

    C 43 43 中strcmp的头文件问题 今天在写程序时遇到的一个问题 include lt stdio h gt include lt string gt using std string int main char str STEL
  • strlen()函数详解

    头文件 xff1a include lt string h gt strlen 函数用来计算字符串的长度 xff0c 其原型为 xff1a unsigned int strlen char s strlen 用来计算指定的字符串s 的长度
  • 阿里云物联网平台基本设置-物模型

    陈拓 2019 12 14 2020 01 15 1 概述 如何让设备连接上云 xff1f 参考如下路径 本文以一个温度传感器为例 xff0c 演示创建产品 定义物模型 创建设备 虚拟设备调试 xff0c 这几部分 2 阿里云开通 2 1
  • Make与CMake

    1 Make与CMake 首先先来了解一下gcc xff0c gcc是GNU Compiler Collection 就是GNU编译器套件 xff0c 也可以简单认为是编译器 xff0c 它可以编译很多种编程语言 包括C C 43 43 O
  • C++学习(23)

    1 分析下述代码运行 xff1a include lt iostream gt using namespacestd int main int a 10 61 0 1 2 3 4 5 6 7 8 9 int p 61 a cout lt l
  • 史上最全最丰富的“最长公共子序列”、“最长公共子串”问题的解法与思路

    花了一天时间把一直以来的 最大子序列 最大递增子序列 最大公共子序列 最长公共子串 等问题总结了一下 其中参考了若干博文 xff0c 都备注引用 首先子序列是指一个一个序列中 xff0c 由若个数 xff08 字母 xff09 组成 xff
  • TCP协议拥塞控制算法(Reno、HSTCP、BIC、Vegas、Westwood)

    TCP协议拥塞控制算法 xff08 Reno HSTCP BIC Vegas Westwood xff09 一 TCP拥塞控制的研究框架 二 现有TCP拥塞控制的算法 xff08 Reno HSTCP Vegas Westwood xff0
  • C# Convert类

    Convert类常用的类型转换方法 方法说明Convert ToInt32 转换为整型 int Convert ToChar 转换为字符型 char Convert ToString 转换为字符串型 string Convert ToDat
  • try catch里面try catch嵌套

    try catch里面try catch嵌套 点击打开链接 try 与catch的作用 首先要清楚 xff0c 如果没有try的话 xff0c 出现异常会导致程序崩溃 而try则可以保证程序的正常运行下去 xff0c 比如说 xff1a t
  • mysql 中使用 where 1=1和 1=1 的作用

    Mysql中where 1 61 1 和count 0 使用小技巧 mysql中使用 where 1 61 1和 1 61 1 的作用
  • 面试题1:OS或者编译器怎么识别是全局变量还是局部变量

    OS或者编译器怎么识别是全局变量还是局部变量 操作系统内根本不关心你是什么变量 xff0c 它只管代理运行程序 xff0c 也就是进程 xff0c 负责这些进程之间的调度 xff0c 不过如果要说操作系统本身也是进程 xff0c 那倒可以理
  • 面试题4:数组、指针、引用的联系区别

    数组和指针 xff1f xff1f xff1f 从两个方面来看 xff0c 一是作为一个语言 xff0c 数组是必须要支持的一种数组类型 xff0c 原因很简单 xff0c 数组是线性表的直接体现 而从编译器设计者的角度来看 xff0c 如
  • c++ 容器类 概括性介绍

    C 43 43 中的容器类包括 顺序存储结构 和 关联存储结构 xff0c 前者包括vector xff0c list xff0c deque等 xff1b 后者包括set xff0c map xff0c multiset xff0c mu
  • 海康摄像头使用RTSP

    1 协议格式 海康威视IP摄像头rtsp协议地址如下 xff1a rtsp username passwd 64 ip port codec channel subtype av stream 主码流 xff1a rtsp admin 12
  • 树莓派串口连接ESP8266

    陈拓 chentuo 64 ms xab ac cn 2020 03 12 2020 03 12 1 概述 ESP8266是物联网行业广泛使用的WiFi模块 xff0c 小巧 功能强大 xff0c 而且价格低廉 通常用电脑进行ESP8266
  • Linux 创建TCP连接流程

    文章目录 Linux创建TCP的步骤服务端客户端TCP建立流程示例代码 Linux创建TCP的步骤 TCP编程需要客户端和服务器两套编码 xff0c 其创建TCP的流程也是不完全一致的 服务端 使用socket函数创建一个套接字使用sets
  • 结构体类型完全归纳

    结构体类型 目录 基本概述 一 结构体类型变量的定义方法及其初始化 1 定义结构体类型变量的方法 2 结构体变量的初始化 二 结构体变量的引用 三 结构体数组 1 定义结构体数组 2 结构体数组应用举例 四 指向结构体变量的指针 1 类型一
  • Ubuntu20.04LTS下安装Intel Realsense D435i驱动与ROS包

    文章目录 目标一 D435i简介二 环境配置三 RealSense的SDK2 0安装四 ROS包安装五 摄像机CV的ROS包节点 六 问题排查 目标 在Ubuntu20 04LTS系统下安装D435i的驱动SDK2和ROS包 xff0c 实
  • C# 调用NationalInstruments的dll报错问题 未能加载文件或程序集

    C 调用NationalInstruments的dll报错问题 问题原因 xff1a dll版本不匹配导致的 xff0c 需要做如下操作解决问题 未能加载文件或程序集 NationalInstruments Common Version 6

随机推荐

  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌

    需要授权的 API xff0c 必须在请求头中使用 添加字段 需要授权的 API xff0c 必须在请求头中使用 Authorization 字段提供 token 令牌 实现方法 通过 axios 请求拦截器添加 token xff0c 保
  • 关于HTTP解析的一点思考

    原文 似乎已经很久没有提到关于服务器的消息了 xff0c 其实我一直都在写 xff0c 只是有时事情比较多 xff0c 会耽搁一点时间 在使用C重写前 xff0c 我就已经用Dlang实现了近2个版本的HTTP解析器 xff0c 换成C之后
  • Paparazzi UAV Lisa/M2飞控使用说明书

    第一部分 地面站 Paparazzi xff08 简称PPZ xff09 UAV项目起始于2003年 xff0c 由法国民航大学发起的一套软硬件开源无人机项目 xff0c 它提供了一整套完整的无人机软硬件解决方案 PPZ 地面站软件运行在L
  • Anaconda3-2020.02-Windows-x86_64安装及使用步骤

    Conda是一个开源的包 环境管理器 xff0c 可以用于在同一个机器上安装不同版本的软件包及其依赖 xff0c 并能够在不同的环境之间切换 Anaconda包括Conda Python以及一大堆安装好的工具包 xff0c 比如 xff1a
  • vivado 2017.4安装步骤

    目录 xff1a windows安装vivado2017 4 xff1b 虚拟机ubuntu安装vivado 2017 4 xff1b ios安装vivado 一 xff0c windows安装vivado2017 4 xilinx官网下载
  • LINUX C语言TCP客户端和服务器传输结构体数据

    1 xff0c TCP服务器流程 服务器 xff1a 1 创建socket xff0c 使用socket函数 2 准备通信地址 xff0c 使用结构体类型 3 绑定socket和通信地址 xff0c 使用bind函数 4 进行通信 xff0
  • FDC系列电容传感器及FDC2214使用要点

    陈拓 2021 02 21 2021 02 21 1 概述 电容式传感是一种低功耗 低成本且高分辨率的非接触式感测技术 xff0c 适用于从接近检测 手势识别到远程液位感测的各项应用 电容式传感系统中的传感器可以采用任意金属或导体 xff0
  • 卫星数据高动态捕获

    一 xff0c 高动态导航接收终端的现状 早期的扩频通信系统由于受到集成电路水平的限制 xff0c 多采用串行搜索技术 由于串行捕获速度慢 xff0c 耗时长不能满足高动态等环境对速度的要求 xff0c 随着数字信号处理等技术的发展 xff
  • 基于ZYNQ平台的powerlink接口平台搭建

    1 xff0c 搭建powerlink接口所需硬件平台 xff1a Zynq ZC702 board used as openPOWERLINK MN AVNET expander board AES FMC ISMNET G Linux
  • 雷达测距测速测角基本原理

    由雷达发射机产生的电磁波经收发开关后传输给天线 xff0c 由天线将此电磁波定向辐射于大气中 电磁波在大气中以近光速传播 xff0c 如目标恰好位于定向天线的波束内 xff0c 则它将要截取一部分电磁波 目标将被截取的电磁波向各方向散射 x
  • 信号处理之脉冲压缩

    一 xff0c 脉冲压缩的背景 随着飞行技术的飞速发展 xff0c 对雷达的作用距离 分辨能力 测量精度和单值性等性能指标提出越来越高的要求 测距精度和距离分辨力对信号形式的要求是一致的 xff0c 主要取决于信号的频率结构 xff0c 为
  • MTI动目标指示和MTD动目标检测

    MTI 是一种频域滤波器 radar主席的ppt 中说到 xff0c 它是对多组脉冲回波的同一个距离单元加权求和 xff0c 得到一个结果 xff1b 也就是多个输入一个输出 xff1b 相当于一个高通滤波器 xff0c 用来抑制固定目标和
  • 复旦微开发过程中遇到的问题总结(二)

    一 xff0c 将bin文件放到flash中0地址处能识别并且启动吗 xff1f xlinx的放在0地址处可以识别启动 xff0c 我尝试复旦微这个没反应 要用procise生成 xff0c 第一个必须是FSBL out 只能是procis
  • 用链表实现fifo功能缓存和拼接数据功能

    fifo h ifndef LIST QUEUE H define LIST QUEUE H include lt stdio h gt include lt stdlib h gt include 34 xil types h 34 in
  • zynq bootgen配置启动

    一 xff0c Zynq 7000 SoC 启动头文件 0x00 0x1F Arm 矢量表 由 Bootgen 使用虚拟矢量表填充 xff08 Arm 操作代码 0xEAFFFFFE xff0c 即用于捕获未初始化矢量的 branch to
  • 制作四个文件启动的镜像

    一 环境搭建 xff1a vivado2018 3 xff0c petalinux2018 3 xff0c 1 petalinux环境设置 所使用的编译环境需要使用petalinux这个软件 xff0c 第五章Petalinux 的安装 里
  • ubuntu虚拟机更改镜像源(中科大或者阿里云镜像源)

    ubuntu虚拟机更改镜像源 xff08 中科大或者阿里云镜像源 xff09 1 进入终端后 xff0c 编辑源列表文件 xff1a 输入 xff1a sudo vim etc apt sources list 后输入 xff1a i 2
  • 海康威视客户端iVMS-4200连接NVR

    海康威视客户端 iVMS 4200 连接 NVR 陈拓 2021 07 30 2021 08 01 1 概述 iVMS 4200 客户端是一款与网络监控设备配套使用的综合应用软件 xff0c 可满足用户多方面需求 xff0c 如设备管理 人
  • 匿名上位机使用方法分享--总体介绍

    不知不觉 xff0c 匿名科创已经走过了7个年头 xff0c 这里首先要感谢大家这么久以来对匿名的支持与帮助 xff01 匿名为了提供给大家一个更好的调试工具 xff0c 始终在维护开发我们的匿名上位机软件 xff0c 7年时间 xff0c
  • 匿名上位机使用方法分享--高级收码

    匿名上位机总体介绍移步 xff1a https blog csdn net wangjt1988 article details 83684188 本文视频介绍 xff1a https www bilibili com video av35