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传感器的数据相关推荐

  1. STM32读取BWT901CL传感器数据

    1 简述 最近想做一个检测小孩或者是老人,在家摔倒项目.大致和大家说一下项目的框架. 要用到一个能检测运动姿态的传感器,最好是无线的.于是我在网上找了一款带蓝牙的姿态角度传感器.给大家看下这个模块. ...

  2. 崔岩的笔记——使用QT在手机端读取传感器蓝牙数据——以BWT901CL传感器为例

    因为实验需要,我要在手机端读取BWT901CL传感器的蓝牙数据,QT中有封装好的用于蓝牙连接以及数据读取的类,因为代码不是我自己写的,因此我就不放完整的代码在上面,但我会尽可能的写的详细一些. QT在 ...

  3. 使用Arduino读取噪声传感器分贝值

    之前一直试图用树莓派读取噪声传感器的数据,然而我用的传感器只有模拟输出和电平输出,也就是说要是想检测噪声具体分贝值就只能使用AD转换模块,但是由于对AD转换模块的认识不深,所以遇到了一些困难,虽然那个 ...

  4. 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据

    简 介: 使用ESP32读取BH1750的光度传感器的数据.但是最终不知道甚么原因,所读取的数据都是0 ? 后面通过证明,说明在原来进行I2C写的时候出现了语法错误. 关键词: BH1750,ESP3 ...

  5. vb6 串口同时读取写入数据怎么避免冲突_实例:S7-200 SMART通过Modbus-RTU读取温湿度传感器数据...

    本实例我们介绍下西门子S7-200 SMART PLC如何通过Modbus-RTU协议读取温湿度传感器的数值.实例使用的硬件如下: S7-200 SMART CPU ST20: 温湿度传感器(支持Mo ...

  6. vb6编写dll读取dat文件_【STM32Cube_15】使用硬件I2C读取温湿度传感器数据(SHT30)...

    寻求更好的阅读体验,请移步Mculover666的个人博客: [STM32Cube_15]使用硬件I2C读取温湿度传感器数据(SHT30)​www.mculover666.cn 本篇详细的记录了如何使 ...

  7. STM32读取SM300D2七合一传感器模块数据在0.96寸OLED显示,通过DL-LN3X无线模块显示在上位机

    先看这个: 资料 https://blog.csdn.net/gsh_hello_world/article/details/56277182 https://blog.csdn.net/gsh_he ...

  8. 博世传感器BMM150数据读取

    博世传感器BMM150 博世磁力计BMM150数据读取 读取步骤 博世磁力计BMM150数据读取 最近一段时间一直在读取各种传感器数据,发现有些传感器使用较多网上也有很多参考例程,例如mpu6050, ...

  9. 西门子SMART200 通过Modbus 读取温湿度传感器数据实例

    文章目录 前言 一.温湿度传感器 二.传感器与Smart200接线 三.PLC程序 四.读取数据 以16位整数形式读取数据 以32位浮点形式读取数据 五.参考文献 前言 正在学习SMART200的Mo ...

最新文章

  1. python将html存为pdf_用Python将HTML转为PDF。
  2. jquery文件上传插件uploadify 讲解
  3. 删除github上的commit历史记录
  4. pC机OracLe库磁盘坏如何恢复,电脑硬盘坏了数据能恢复吗(6步教你自己在家轻松恢复数据)...
  5. 计算机三级之嵌入式系统学习笔记6
  6. 内核低分辨率定时器实现
  7. VMware Converter Standalone结合TrueImage 迁移HyperV虚机
  8. 微信开发者工具的tabBar和数据双向绑定
  9. matlab的取整函数
  10. SSM用户注册登录案例
  11. 计算机上fn按键,fn键设置方法
  12. linux 检查zip是否损坏,用-v参数 unzip -v test.zip 检查zip文件是否损坏代常亮
  13. 60分钟搞定JAVA加解密
  14. Google Earth Engine APP(GEE)——用一个选择器选择不同城市的应用
  15. ArcGIS Engine10.0轻松入门级教程(1)——必备基础知识
  16. 手把手教你用jQuery Mobile做相册
  17. EXCEL多页打印保留表头
  18. 微信公众号活动策划方案怎么写?看完你也可以直接套用
  19. Mysql窗口函数 (知识点梳理+题目解析+面试实战)(四万字长文,一文读懂,建议收藏后食用)
  20. 解决QQ识图后复制文字然后将其粘贴到文件重命名中,总是显示重命名不成功

热门文章

  1. 重庆计算机上机操作试题,重庆市计算机等级考试C语言上机模拟试题
  2. SIGIR 2021 | 广告系统位置偏差的CTR模型优化方案
  3. Python synonyms查找中文任意词汇的同义词近义词
  4. java版:层序遍历
  5. Dev-C++5.11游戏创作之飞机大战
  6. 记录安装、配置并入门使用appium的过程
  7. IE11,360浏览器FormData 方法entries
  8. Carsim与不同版本MATLAB联合仿真设置——个人积累
  9. lisp绘制直齿圆柱齿轮_基于AutoLISP的模拟滚齿以及滚刀齿形验证
  10. 永恒之蓝ms17-0109(缓冲区溢出漏洞)