c#读蓝牙数据_C#读取BWT901CL蓝牙传感器的数据
1 简述
老师有个人体姿态的项目,让我做下那个传感器这部分的数据采集和展示。产品是用的BWT901CL,给大家看下模块
想做一个人体姿态的实验,老师要求不能用商家的软件,只能自己根据协议去协议一个简单的上位机的。
2 Form的设计
先给大家上个图,我这个只是演示所以做的比较简单。基本上要写的程序从这个图里都能看出来。一共是分为三个部分。1、串口选择 2、波特率的选择 3、数据处理和显示部分。接下来和大家一一分享。
3 程序设计
3.1 串口选择程序设计
整体来说这个逻辑是这样的。首要从设备管理器获取现在的串口的列表。然后,有两个逻辑。
1、就是你第一次进去上位机,这个时候你还没有去选择串口号。当你去选择你想要的COM口时呢会在前面出现一个√。
2、就是在COM列表下面加上一个Close
private void RefreshComPort(object sender, EventArgs e){toolStripComSet.DropDownItems.Clear();foreach (string portName in System.IO.Ports.SerialPort.GetPortNames()){toolStripComSet.DropDownItems.Add(portName, null, PortSelect);if ((spSerialPort.IsOpen) & (spSerialPort.PortName == portName)){ToolStripMenuItem menu = (ToolStripMenuItem)toolStripComSet.DropDownItems[toolStripComSet.DropDownItems.Count - 1];menu.Checked = true;}}toolStripComSet.DropDownItems.Add(new ToolStripSeparator());toolStripComSet.DropDownItems.Add("Close", null, PortClose);}
3.2 波特率的选择
写波特率的选择还是相对来说要简单点,基本上就是一个Switch语句去做一个波特率的选择。BWT901CL模块的波特率是从2400-921600.
private void SetBaudrate(int iBaund){toolStripMenuItem2.Checked = false;toolStripMenuItem3.Checked = false;toolStripMenuItem4.Checked = false;toolStripMenuItem5.Checked = false;toolStripMenuItem6.Checked = false;toolStripMenuItem7.Checked = false;toolStripMenuItem8.Checked = false;toolStripMenuItem9.Checked = false;toolStripMenuItem10.Checked = false;toolStripMenuItem11.Checked = false;switch (iBaund){case 2400: toolStripMenuItem2.Checked = true; break;case 4800: toolStripMenuItem3.Checked = true; break;case 9600: toolStripMenuItem4.Checked = true; break;case 19200: toolStripMenuItem5.Checked = true; break;case 38400: toolStripMenuItem6.Checked = true; break;case 57600: toolStripMenuItem7.Checked = true; break;case 115200: toolStripMenuItem8.Checked = true; break;case 230400: toolStripMenuItem9.Checked = true; break;case 460800: toolStripMenuItem10.Checked = true; break;case 921600: toolStripMenuItem11.Checked = true; break;}
3.3 数据处理和显示部分
private void DecodeData(byte[] byteTemp){double[] Data = new double[4];double TimeElapse = (DateTime.Now - TimeStart).TotalMilliseconds / 1000;Data[0] = BitConverter.ToInt16(byteTemp, 2);Data[1] = BitConverter.ToInt16(byteTemp, 4);Data[2] = BitConverter.ToInt16(byteTemp, 6);Data[3] = BitConverter.ToInt16(byteTemp, 8);//显示尺寸格式布局sRightPack++;switch (byteTemp[1]){case 0x51://Data[3] = Data[3] / 32768 * double.Parse(textBox9.Text) + double.Parse(textBox8.Text);Temperature = Data[3] / 100.0;Data[0] = Data[0] / 32768.0 * 16;Data[1] = Data[1] / 32768.0 * 16;Data[2] = Data[2] / 32768.0 * 16;a[0] = Data[0];a[1] = Data[1];a[2] = Data[2];a[3] = Data[3];if ((TimeElapse - LastTime[1]) < 0.1) return;LastTime[1] = TimeElapse;break;case 0x52://Data[3] = Data[3] / 32768 * double.Parse(textBox9.Text) + double.Parse(textBox8.Text);Temperature = Data[3] / 100.0;Data[0] = Data[0] / 32768.0 * 2000;Data[1] = Data[1] / 32768.0 * 2000;Data[2] = Data[2] / 32768.0 * 2000;w[0] = Data[0];w[1] = Data[1];w[2] = Data[2];w[3] = Data[3];if ((TimeElapse-LastTime[2])<0.1) return;LastTime[2] = TimeElapse;break;case 0x53://Data[3] = Data[3] / 32768 * double.Parse(textBox9.Text) + double.Parse(textBox8.Text);Temperature = Data[3] / 100.0;Data[0] = Data[0] / 32768.0 * 180;Data[1] = Data[1] / 32768.0 * 180;Data[2] = Data[2] / 32768.0 * 180;Angle[0] = Data[0];Angle[1] = Data[1];Angle[2] = Data[2];Angle[3] = Data[3];if ((TimeElapse-LastTime[3])<0.1) return;LastTime[3] = TimeElapse;break;default:break;} }byte byteLastNo = 0;
4 结果展示
c#读蓝牙数据_C#读取BWT901CL蓝牙传感器的数据相关推荐
- 使用ESP32 MicroPython I2C功能读取 BH1750光度传感器模块数据
简 介: 使用ESP32读取BH1750的光度传感器的数据.但是最终不知道甚么原因,所读取的数据都是0 ? 后面通过证明,说明在原来进行I2C写的时候出现了语法错误. 关键词: BH1750,ESP3 ...
- python3读取excel数据-Python3读取和写入excel表格数据的示例代码
python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python ...
- python3读取excel数据-python3 读取Excel表格中的数据
需要先安装openpyxl库 通过pip命令安装: pip install openpyxl 源码如下: #!/usr/bin/python3 #-*- coding:utf-8 -*- import ...
- java获取xlsx某列数据_Java读取Excel指定列的数据详细教程和注意事项
本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...
- java搜索excel表格里的数据_Java读取Excel表格中的数据
前言 本文主要讲述如何在Java中读取Excel表中的数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一.添加jar包文件 描述:在Java中导入导出Ex ...
- python3 写入excel表格数据_Python3读取和写入excel表格数据
目录 python操作excel主要用到 xlrd和xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.pytho ...
- c#往结构体里面读数据_C# 结构体和ListT类型数据转Json数据保存和读取
1 一.结构体转Json2 3 public structFaceLibrary4 {5 public stringface_name;6 public byte[] face_Feature;7 } ...
- c 读取mysql中表中数据_c#读取MySQL数据表中的内容
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- python3读取excel某一列_怎样用python,读取excel中的一列数据!python读取excel某一列数据...
Python 如何循环读取csv或者excel中的一列数据,写入到中搜索 是可以 a.csv复制到 b.csv中 import csv def foo(): with open('a.csv', 'r ...
最新文章
- WebBrowserProgramming - Python Wiki
- 技巧 | OpenCV中如何绘制与填充多边形
- 这个登上Nature封面的「群体学习」,无需中央协调员,比联邦学习更优秀
- Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会
- Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
- Java Syncrhonisers
- mysql并发获取唯一数值_高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]...
- 视觉意识的主动推理模型
- 奎享添加自己字体_如何添加字体?系统字体的两种方法添加方法
- Java工具类 BeanUtils库介绍以及对象拷贝
- (Spring+SpringMVC+mybatis)SSM企业职工工资管理系统
- ie8位16进制色转换工具
- WIN7/WIN10/WIN11系统下触屏软键盘无法跟随跳出,桌面模式无法自动弹出(随动键盘)
- C | C++定义全局变量的方法
- AnnexB与avcc的区别
- JavaScript实现图片文字识别与读取
- android intel x86 性能,英特尔解释安卓与x86兼容问题
- 标准网页两侧浮动广告代码 支持FF及IE
- [图文]历届奥斯卡影帝(中)
- Win7安装kb4474419补丁(附补丁连接)
热门文章
- 生活中回归分析实际例子_回归分析中R方和调整R方的区别
- html只读下拉框,Html.DropDownList – 禁用/只读
- 使用winscp在从linux向windows传输文件
- Ubuntu 打开 initramfs
- CSV格式整理,去除与上一行数据重复的单元格
- mysql 锁24小时_MySQL中Alter table 不长时间锁表的情况汇总。
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
- python之websocket
- 2017-2018-1 20155234第三周《信息安全系统设计基础》学习总结
- rocketmq安装部署过程(4.0.0版本)