C++读取BWT901CL传感器的数据
1 简述
最近在学习人体姿态设别的算法。想着买个角度传感器去尝试下。这个传感器最好是无线的带电池的,这样对我来说是比较方便使用的。我就在淘宝上找到一个一款BWT901CL,这个角度传感器。这个模块挺好用的,有加速度、角速度、角度。而且都是三个轴的。精度的话呢加速度0.01g、角速度0.63°/s、角度静态是0.05、动态是0.1。精度是满足我的需求的。给大家看下模块。
2 程序设计
2.1数据处理
根据商家给的通讯协议(如下图)。写了一个接收程序。
根据这个协议就很好理解我写的数据处理程序。这个BWT901CL蓝牙输出的角度的一共是11位数据。所以,我先判断数据 的长度是不是11位,然后再判断包头是不是55。如果不是55在判断下一位是不是55。直到我找到了55这个包头,然后才进行11位数据的第二位的数据的判断,是不是50、51、52、53、54这种商家定义的代表时间、加速度、角速度、角度、磁场的数。
void CJY901 ::CopeSerialData(char ucData[],unsigned short usLength)
{static unsigned char chrTemp[2000];static unsigned char ucRxCnt = 0; static unsigned short usRxLength = 0;memcpy(chrTemp,ucData,usLength);usRxLength += usLength;while (usRxLength >= 11){if (chrTemp[0] != 0x55){usRxLength--;memcpy(&chrTemp[0],&chrTemp[1],usRxLength); continue;}switch(chrTemp[1]){case 0x50: memcpy(&stcTime,&chrTemp[2],8);break;case 0x51: memcpy(&stcAcc,&chrTemp[2],8);break;case 0x52: memcpy(&stcGyro,&chrTemp[2],8);break;case 0x53: memcpy(&stcAngle,&chrTemp[2],8);break;case 0x54: memcpy(&stcH,&chrTemp[2],8);break;}usRxLength -= 11;memcpy(&chrTemp[0],&chrTemp[11],usRxLength); }
}
2.2 UART打印程序
int _tmain(int argc, _TCHAR* argv[])
{char chrBuffer[2000];unsigned short usLength=0,usCnt=0;unsigned long ulBaund=9600,ulComNo=3;signed char cResult= 1; printf("请输入串口号:\r\nCom = ");scanf("%ld",&ulComNo);printf("请输入波特率:(9600、115200或其他)\r\nBaud = ");scanf("%ld",&ulBaund);printf("等待打开串口%d...\r\n",ucComNo);while(cResult!=0){cResult = OpenCOMDevice(ulComNo,ulBaund);}while(1){usLength = CollectUARTData(ulComNo,chrBuffer);if (usLength>0){JY61.CopeSerialData(chrBuffer,usLength);}Sleep(100);if (usCnt++>=0){usCnt=0;printf("Time:20%d-%d-%d %d:%d:%.3f\r\n",(short)JY901.stcTime.ucYear,(short)JY901.stcTime.ucMonth,(short)JY61.stcTime.ucDay,(short)JY901.stcTime.ucHour,(short)JY901.stcTime.ucMinute,(float)JY901.stcTime.ucSecond+(float)JY901.stcTime.usMiliSecond/1000);printf("Acc:%.3f %.3f %.3f\r\n",(float)JY901.stcAcc.a[0]/32768*16,(float)JY901.stcAcc.a[1]/32768*16,(float)JY901.stcAcc.a[2]/32768*16);printf("Gyro:%.3f %.3f %.3f\r\n",(float)JY901.stcGyro.w[0]/32768*2000,(float)JY901.stcGyro.w[1]/32768*2000,(float)JY901.stcGyro.w[2]/32768*2000);printf("Angle:%.3f %.3f %.3f\r\n",(float)JY901.stcAngle.Angle[0]/32768*180,(float)JY901.stcAngle.Angle[1]/32768*180,(float)JY901.stcAngle.Angle[2]/32768*180); } }return 0;
}
3 结果展示
链接:https://pan.baidu.com/s/1CMRtfp-c0YPSKOqC_aAFPA
C++读取BWT901CL传感器的数据相关推荐
- STM32读取BWT901CL传感器数据
1 简述 最近想做一个检测小孩或者是老人,在家摔倒项目.大致和大家说一下项目的框架. 要用到一个能检测运动姿态的传感器,最好是无线的.于是我在网上找了一款带蓝牙的姿态角度传感器.给大家看下这个模块. ...
- 崔岩的笔记——使用QT在手机端读取传感器蓝牙数据——以BWT901CL传感器为例
因为实验需要,我要在手机端读取BWT901CL传感器的蓝牙数据,QT中有封装好的用于蓝牙连接以及数据读取的类,因为代码不是我自己写的,因此我就不放完整的代码在上面,但我会尽可能的写的详细一些. QT在 ...
- 使用Arduino读取噪声传感器分贝值
之前一直试图用树莓派读取噪声传感器的数据,然而我用的传感器只有模拟输出和电平输出,也就是说要是想检测噪声具体分贝值就只能使用AD转换模块,但是由于对AD转换模块的认识不深,所以遇到了一些困难,虽然那个 ...
- 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据
简 介: 使用ESP32读取BH1750的光度传感器的数据.但是最终不知道甚么原因,所读取的数据都是0 ? 后面通过证明,说明在原来进行I2C写的时候出现了语法错误. 关键词: BH1750,ESP3 ...
- vb6 串口同时读取写入数据怎么避免冲突_实例:S7-200 SMART通过Modbus-RTU读取温湿度传感器数据...
本实例我们介绍下西门子S7-200 SMART PLC如何通过Modbus-RTU协议读取温湿度传感器的数值.实例使用的硬件如下: S7-200 SMART CPU ST20: 温湿度传感器(支持Mo ...
- vb6编写dll读取dat文件_【STM32Cube_15】使用硬件I2C读取温湿度传感器数据(SHT30)...
寻求更好的阅读体验,请移步Mculover666的个人博客: [STM32Cube_15]使用硬件I2C读取温湿度传感器数据(SHT30)www.mculover666.cn 本篇详细的记录了如何使 ...
- STM32读取SM300D2七合一传感器模块数据在0.96寸OLED显示,通过DL-LN3X无线模块显示在上位机
先看这个: 资料 https://blog.csdn.net/gsh_hello_world/article/details/56277182 https://blog.csdn.net/gsh_he ...
- 博世传感器BMM150数据读取
博世传感器BMM150 博世磁力计BMM150数据读取 读取步骤 博世磁力计BMM150数据读取 最近一段时间一直在读取各种传感器数据,发现有些传感器使用较多网上也有很多参考例程,例如mpu6050, ...
- 西门子SMART200 通过Modbus 读取温湿度传感器数据实例
文章目录 前言 一.温湿度传感器 二.传感器与Smart200接线 三.PLC程序 四.读取数据 以16位整数形式读取数据 以32位浮点形式读取数据 五.参考文献 前言 正在学习SMART200的Mo ...
最新文章
- python将html存为pdf_用Python将HTML转为PDF。
- jquery文件上传插件uploadify 讲解
- 删除github上的commit历史记录
- pC机OracLe库磁盘坏如何恢复,电脑硬盘坏了数据能恢复吗(6步教你自己在家轻松恢复数据)...
- 计算机三级之嵌入式系统学习笔记6
- 内核低分辨率定时器实现
- VMware Converter Standalone结合TrueImage 迁移HyperV虚机
- 微信开发者工具的tabBar和数据双向绑定
- matlab的取整函数
- SSM用户注册登录案例
- 计算机上fn按键,fn键设置方法
- linux 检查zip是否损坏,用-v参数 unzip -v test.zip 检查zip文件是否损坏代常亮
- 60分钟搞定JAVA加解密
- Google Earth Engine APP(GEE)——用一个选择器选择不同城市的应用
- ArcGIS Engine10.0轻松入门级教程(1)——必备基础知识
- 手把手教你用jQuery Mobile做相册
- EXCEL多页打印保留表头
- 微信公众号活动策划方案怎么写?看完你也可以直接套用
- Mysql窗口函数 (知识点梳理+题目解析+面试实战)(四万字长文,一文读懂,建议收藏后食用)
- 解决QQ识图后复制文字然后将其粘贴到文件重命名中,总是显示重命名不成功
热门文章
- 重庆计算机上机操作试题,重庆市计算机等级考试C语言上机模拟试题
- SIGIR 2021 | 广告系统位置偏差的CTR模型优化方案
- Python synonyms查找中文任意词汇的同义词近义词
- java版:层序遍历
- Dev-C++5.11游戏创作之飞机大战
- 记录安装、配置并入门使用appium的过程
- IE11,360浏览器FormData 方法entries
- Carsim与不同版本MATLAB联合仿真设置——个人积累
- lisp绘制直齿圆柱齿轮_基于AutoLISP的模拟滚齿以及滚刀齿形验证
- 永恒之蓝ms17-0109(缓冲区溢出漏洞)