匿名四轴上位机波形绘制软件所需的下位机报文协议编写
来源:互联网 发布:建筑软件有哪些 编辑:程序博客网 时间:2024/06/05 09:09
extern float ZGyroModuleAngle;//Yaw轴角度float ZGyroModuleAngleMAX;float ZGyroModuleAngleMIN;extern float yawRealAngle;extern uint8_t GYRO_RESETED;extern float pitchRealAngle;//Pitch轴角度extern float gYroZs;////Yaw轴角速度extern float yawAngleTarget;extern float yawRealAngle;extern uint8_t JUDGE_STATE;//*********debug by ZY*********/*typedef struct{uint16_t head;uint8_t id;uint8_t dlc;float dataPitch;float dataYaw;uint8_t checkSum;}data_to_PC;*/uint8_t data_send_to_PC[17];//要发送给上位机的报文//data_to_PC my_data_to_PC;/*发送给上位机的数据帧定义@前2个字节为帧头0xAAAA@第3个字节为帧ID,应设置为0xF1~0xFA中的一个@第4个字节为报文数据长度(dlc)@第5个字节开始到第5+dlc-1个字节为要传输的数据内容段,每个数据场为高字节在前,地字节在后@第5+dlc个字节为CheckSum,为第1个字节到第5+dlc-1个字节所有字节的值相加后,保留结果的低八位作为CheckSum@我们需要传输3个float数据,pitchRealAngle(Pitch),ZGyroModuleAngle(Yaw), gYroZs(Speed),dlc应该为3*4 bytes=12 bytes@所以整个报文长度为5+12=17个字节*/void send_data_to_PC(UART_HandleTypeDef *huart,float zyPitch,float zyYaw,float zySpd){//my_data_to_PC.head=0xAAAA;//my_data_to_PC.id=0xF1;//my_data_to_PC.dlc=8;//my_data_to_PC.dataPitch=zyPitch;//my_data_to_PC.dataYaw=zyYaw;////uint8_t * pTemp;////uint8_t temp;//int i;//my_data_to_PC.checkSum=0;//pTemp = (uint8_t *)&(my_data_to_PC); //for(i=0;i<12;i++)//{// my_data_to_PC.checkSum+=pTemp[i];//}uint8_t * pTemp;int i;data_send_to_PC[0]=0xAA;data_send_to_PC[1]=0xAA;//前两个字节为帧头0xAAdata_send_to_PC[2]=0xF1;//第3个字节为帧ID,设为0xF1data_send_to_PC[3]=12;//第4个字节为数据长度dlc,需要传输3个float数据(3*4 bytes=12 bytes)pTemp=(uint8_t *)&zyPitch;//将数据场首指针转换为uint8_t型指针,方便后续操作/*第一个float数据Pitch轴角度,传输时要将高位放在前面,低位放在后面STM32是小端存储(Little Endian),高位数据储存在高地址中。所以需要如下的转换,将高位数据移到数据帧的前面来。其他两个数据Yaw和速度Spd用同样方法处理*/for(i=0;i<4;i++){ data_send_to_PC[4+i]=pTemp[3-i];}pTemp=(uint8_t *)&zyYaw;for(i=0;i<4;i++){ data_send_to_PC[8+i]=pTemp[3-i];}pTemp=(uint8_t *)&zySpd;for(i=0;i<4;i++){ data_send_to_PC[12+i]=pTemp[3-i];}data_send_to_PC[16]=0;//第17个字节为本帧报文的CheckSum,按照前述CheckSum的要求求和计算即可for(i=0;i<16;i++){ data_send_to_PC[16]+=data_send_to_PC[i];}HAL_UART_Transmit(huart,data_send_to_PC,17,1000);//向上位机发送本帧报文,共17个字节}//*********debug by ZY*********
阅读全文
1 0
- 匿名四轴上位机波形绘制软件所需的下位机报文协议编写
- 上位机,下位机
- 上位机 下位机
- 上位机/下位机
- 上位机与下位机的区别
- 上位机与下位机的区别
- 用VB编写的上位机与嵌入式LINUX下位机的网络通信(TCP)
- 匿名科创上位机之显示单片机数据波形
- 上位机到下位机
- 上位机与下位机
- 关于上位机和下位机的一些解释
- 上位机、下位机的初略解释
- 上位机和下位机的一些解释
- 重构上位机与下位机
- 上位机和下位机基础概念
- 上位机和下位机简介
- 51获取MPU6050数据并通过匿名上位机显示波形
- 上位机与下位机的交流:编码与字节序的实验
- 域模型一定要实现Serializable接口吗?
- 技巧
- CXF处理一些Map等复杂类型
- http协议详解
- UnityShader入门精要学习笔记(十二):渲染路径与光源类型
- 匿名四轴上位机波形绘制软件所需的下位机报文协议编写
- OSI模型、TCP/IP模型
- datagrid.js
- Canvas入门
- 关于删除mysql用户的问题
- UnityShader入门精要学习笔记(十三):光照衰减与Unity阴影
- 根据数据库自动生成java代码
- HTML中的列表标签和表单标签
- android 自定义布局之侧拉布局