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

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

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

  2. python3读取excel数据-Python3读取和写入excel表格数据的示例代码

    python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python ...

  3. python3读取excel数据-python3 读取Excel表格中的数据

    需要先安装openpyxl库 通过pip命令安装: pip install openpyxl 源码如下: #!/usr/bin/python3 #-*- coding:utf-8 -*- import ...

  4. java获取xlsx某列数据_Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...

  5. java搜索excel表格里的数据_Java读取Excel表格中的数据

    前言 本文主要讲述如何在Java中读取Excel表中的数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一.添加jar包文件 描述:在Java中导入导出Ex ...

  6. python3 写入excel表格数据_Python3读取和写入excel表格数据

    目录 python操作excel主要用到 xlrd和xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.pytho ...

  7. c#往结构体里面读数据_C# 结构体和ListT类型数据转Json数据保存和读取

    1 一.结构体转Json2 3 public structFaceLibrary4 {5 public stringface_name;6 public byte[] face_Feature;7 } ...

  8. c 读取mysql中表中数据_c#读取MySQL数据表中的内容

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. python3读取excel某一列_怎样用python,读取excel中的一列数据!python读取excel某一列数据...

    Python 如何循环读取csv或者excel中的一列数据,写入到中搜索 是可以 a.csv复制到 b.csv中 import csv def foo(): with open('a.csv', 'r ...

最新文章

  1. WebBrowserProgramming - Python Wiki
  2. 技巧 | OpenCV中如何绘制与填充多边形
  3. 这个登上Nature封面的「群体学习」,无需中央协调员,比联邦学习更优秀
  4. Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会
  5. Mac 技术篇-Geany编辑器批量设置制表符为空格,geany设置默认制表符替换为空格
  6. Java Syncrhonisers
  7. mysql并发获取唯一数值_高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]...
  8. 视觉意识的主动推理模型
  9. 奎享添加自己字体_如何添加字体?系统字体的两种方法添加方法
  10. Java工具类 BeanUtils库介绍以及对象拷贝
  11. (Spring+SpringMVC+mybatis)SSM企业职工工资管理系统
  12. ie8位16进制色转换工具
  13. WIN7/WIN10/WIN11系统下触屏软键盘无法跟随跳出,桌面模式无法自动弹出(随动键盘)
  14. C | C++定义全局变量的方法
  15. AnnexB与avcc的区别
  16. JavaScript实现图片文字识别与读取
  17. android intel x86 性能,英特尔解释安卓与x86兼容问题
  18. 标准网页两侧浮动广告代码 支持FF及IE
  19. [图文]历届奥斯卡影帝(中)
  20. Win7安装kb4474419补丁(附补丁连接)

热门文章

  1. 生活中回归分析实际例子_回归分析中R方和调整R方的区别
  2. html只读下拉框,Html.DropDownList – 禁用/只读
  3. 使用winscp在从linux向windows传输文件
  4. Ubuntu 打开 initramfs
  5. CSV格式整理,去除与上一行数据重复的单元格
  6. mysql 锁24小时_MySQL中Alter table 不长时间锁表的情况汇总。
  7. 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
  8. python之websocket
  9. 2017-2018-1 20155234第三周《信息安全系统设计基础》学习总结
  10. rocketmq安装部署过程(4.0.0版本)