背景

最近有个项目需要对接传感器,将传感器的数据转发到其他设备,目前只有维特智能的WIT901WIFI传感器。

传感器长这样

配置网络

这个传感器是通过WIFI传输数据,所以第一步需要配置WIFI。

下载上位机软件

官方页面 https://wit-motion.yuque.com/wumwnr/docs/cmxpmgcensdqg5ag#TKIRF

直接下载上位机软件 https://witpic-1253369323.cos.ap-guangzhou.myqcloud.com/wit-cloud/ep/uploadFile/0b22e450-5040-402f-a404-2c34f6a109cfwifi-udp上位机(v3.0.11).zip

配置WIFI

先通过Type-C线连接传感器至电脑,将传感器开关打开,拨到ON

需要明确一点,WIFI必须是2.4G的,而且不能是中文名,否则会连接不上

打开UDP上位机软件,菜单->系统设置->有线配网

选择一个通讯串口,不知道选哪个自己试一试就行

填写WIFI名称和WIFI密码,服务器选当前上位机,点开始配网

成功后会提示服务器连接成功,并且会弹出一个TempData的窗口

如果失败检查下WIFI是否连接上了,电脑和WIFI是否在同一个局域网



然后主窗口应该会显示传感器的数据,如果没有就重启软件

设置传感器服务器

传感器服务器就是指接受传感器数据的设备

如果要设置接收传感器数据的服务器,需要先给传感器发送服务器IP

如果已知传感器IP,可直接向传感器IP:9250发送UDP数据包,数据包内容如下

WIT192.168.0.13\r\n

其中192.168.0.13是接收传感器数据的服务器IP地址

如果未知传感器IP,可通过发送数据包到广播地址255.255.255.255:9250,数据包内容同上

Java代码如下

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; import static java.net.InetAddress.getByName; public class SensorUtil {
public static void setSensorServer() throws IOException {
// 设置要发送的消息和目标地址
String message = "WIT192.168.137.1\r\n";
InetAddress address = getByName("192.168.137.255"); // 192.168.137.1网段的广播地址
int port = 9250; // 目标端口
// 将消息转换为字节数组
byte[] buffer = message.getBytes();
DatagramSocket socket = new java.net.DatagramSocket();
// 创建DatagramPacket对象,用于发送消息
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);
// 设置socket的广播属性
socket.setBroadcast(true);
// 将消息发送出去
socket.send(packet);
socket.close();
}
}

接收传感器数据

接收传感器数据需要服务器监听本机UDP的1399端口

重点:UDP上位机软件也会监听1399端口,所以需要先关闭UDP上位机软件

使用netty监听并打印数据

import cn.hutool.core.util.StrUtil;
import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.DatagramPacket;
import io.netty.channel.socket.nio.NioDatagramChannel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; @Slf4j
@Component
public class WIT901UDPServer { private static final int PORT = 1399;
private final EventLoopGroup group = new NioEventLoopGroup(); public void start() {
Bootstrap b = new Bootstrap();
b.group(group)
.channel(NioDatagramChannel.class)
.option(ChannelOption.SO_BROADCAST, true)
.handler(new SimpleChannelInboundHandler<DatagramPacket>() {
@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) {
ByteBuf buf = msg.content();
String receiveData = StrUtil.removeSuffix(buf.toString(StandardCharsets.UTF_8), "\r\n");
log.info("Receive Data: {}", receiveData);
}
});
try {
b.bind(PORT).sync();
} catch (InterruptedException e) {
shutdown();
}
} public void shutdown() {
group.shutdownGracefully();
} }

查看接收到的数据

数据解析

参考官方文档 https://wit-motion.yuque.com/wumwnr/docs/lhinmv#2dc7f764

接收数据格式如下

WT5300005765030.026,0.127,0.998,0.000,0.000,0.000,7.349,-1.527,8.618,31,215,262,45.92,4.15,-65,13008,0\r\n
数据内容 数据名称
WT5300005765 设备编号
03 未知,官方没有说明
0.026,0.127,0.998 加速度X,加速度Y,加速度Z
0.000,0.000,0.000 角速度XYZ
7.349,-1.527,8.618 角度XYZ
31,215,262 磁场XYZ
45.92 温度
4.15 电量
-65 信号
13008 版本号
0 报警信号
\r\n 结束符

Java对接维特智能WIT901WIFI姿态传感器的更多相关文章

  1. Java对接百度智能云人脸识别

    ------------------------->这篇文章就是自己做个笔记<------------------------- 首先登录or注册自己的百度智能云管理中心:https:// ...

  2. 使用web3j工具生成java版本的智能合约

    这里需要使用的环境 web3j,nodejs 安装编译sol工具 $ npm install -g solc 保存为hello.sol文件到本地 pragma solidity 0.4.19; con ...

  3. Java对接拼多多开放平台API(加密上云等全流程)

    前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...

  4. java selenium (十三) 智能等待页面加载完成

    我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作.  否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操 ...

  5. C#在与java对接时候的UrlEncode的坑

    最近与建行接口做对接和与一家短信运营商做对接时候遇到了这个坑 在java中对UrlEncode 时候哪些url非安全字符被转为%数字和大写字幕组合,比如:zhangsan/d 会被转为 zhangsa ...

  6. java对接微信支付

    对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层)  此部分业务逻辑部分可以省略 @RequestMapping("/wxpay.htm" ...

  7. java对接短信平台

    短信验证码目前是比较主流验证身份的一种方式,下面分享下我对接的几种短信平台 阿里云短信:https://api.alidayu.com/docs/api.htm?spm=a3142.7395905.4 ...

  8. Java对接微信公众号模板消息推送

    内容有点多,请耐心! 最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offi ...

  9. Razorpay支付对接,JAVA对接篇

    Razorpay 作为印度本土的一家支付公司,类似中国的支付宝 微信,本篇记录一下对接印度第三方支付公司 准备工作: 注册公司 申请Razorpay账号 申请正式环境 Razorpay工作台: 获取k ...

  10. 使用Java对接永中格式转换

    永中格式转换服务基于永中DCS的文档转换能力,支持不同格式文件之间的高质量互转,可实现PDF文档与Word.Excel.PPT.图片的高质量互转,PDF文档转换完美保留原文档的版式,格式等,转换效果出 ...

随机推荐

  1. 康谋分享 | 汽车仿真与AI的结合应用

    在自动驾驶领域,实现高质量的虚拟传感器输出是一项关键的挑战.所有的架构和实现都会涉及来自质量.性能和功能集成等方面的需求.aiSim也不例外,因此我们会更加关注于多个因素的协调,其中,aiSim传感器 ...

  2. [笔记]通过命令行连接MySQL数据库服务器的几种方式总结如下

    通过命令行连接MySQL数据库服务器的几种方式总结如下: 1.连接本地数据库,用户名为"root",密码"123456"(注意:"-p"和& ...

  3. 【记录】ChatGPT|近期三次更新一览(更新至2023年2月3日)

      如果你还没有使用过ChatGPT,可以先看看我的上一篇文章:[记录]ChatGPT|使用技巧与应用推荐(更新至2023年2月8日).   1月11号晚上,ChatGPT突然很多人都无法登录,包括我 ...

  4. LSTM 原理

    之前在讨论 RNN (递归神经网络) 的梯度消失 和 梯度爆炸都会对咱的网络结构产生极大的影响. 梯度爆炸, 也是在参数更新这块, 调整步伐太大, 产生 NaN 或 Inf, 代码就搞崩了直解决梯度消 ...

  5. 'invalid flag in #cgo LDFLAGS: -w' 问题解决

    当我们在go项目中使用C库,或者引用的第三方库有使用C库,有时候会遇到 invalid flag in #cgo LDFLAGS: -w 这种错误. 这是因为在项目代码中,使用了#cgo指令符(dir ...

  6. C#网络编程(四)----HttpClient

    简介 HttpClient是C#中用于发送/接收HTTP请求的核心类,属于 System.Net.Http 命名空间.它是 .NET 中处理网络通信的现代 API,设计目标是替代早期的 WebClie ...

  7. 在windows server中安装docker

    windows server 建议选择win10系统. 首先要下载wsl2: 主要参考微软官方文档:https://learn.microsoft.com/en-us/windows/wsl/inst ...

  8. django-channels自定义中间件验证token的方法

    测试版本: python 3.8 djnago 3.2 channels 3.0 需求 在使用channels 建立websocket连接的时候,需要验证客户端的token,并保存一些关键信息 实现原 ...

  9. dfs优化剪枝

    题目链接:D - Peaceful Teams (atcoder.jp) 先看数据范围,肯定是搜索相关 首先想到从第1个人, 第0个队开始的搜索顺序 ,因为这属于内部顺序,所以每次搜索要回溯状态,注意 ...

  10. WPF与WinForm的对比

    WPF与WinForm的对比 本文同时为b站WPF课程的笔记,相关示例代码 创建新项目 在vs2022中,这两者分别叫做WPF应用和Windows窗体应用. 渲染引擎和设计 WPF使用DirectX作 ...