Java对接维特智能WIT901WIFI姿态传感器
背景
最近有个项目需要对接传感器,将传感器的数据转发到其他设备,目前只有维特智能的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姿态传感器的更多相关文章
- Java对接百度智能云人脸识别
------------------------->这篇文章就是自己做个笔记<------------------------- 首先登录or注册自己的百度智能云管理中心:https:// ...
- 使用web3j工具生成java版本的智能合约
这里需要使用的环境 web3j,nodejs 安装编译sol工具 $ npm install -g solc 保存为hello.sol文件到本地 pragma solidity 0.4.19; con ...
- Java对接拼多多开放平台API(加密上云等全流程)
前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...
- java selenium (十三) 智能等待页面加载完成
我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作. 否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操 ...
- C#在与java对接时候的UrlEncode的坑
最近与建行接口做对接和与一家短信运营商做对接时候遇到了这个坑 在java中对UrlEncode 时候哪些url非安全字符被转为%数字和大写字幕组合,比如:zhangsan/d 会被转为 zhangsa ...
- java对接微信支付
对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层) 此部分业务逻辑部分可以省略 @RequestMapping("/wxpay.htm" ...
- java对接短信平台
短信验证码目前是比较主流验证身份的一种方式,下面分享下我对接的几种短信平台 阿里云短信:https://api.alidayu.com/docs/api.htm?spm=a3142.7395905.4 ...
- Java对接微信公众号模板消息推送
内容有点多,请耐心! 最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offi ...
- Razorpay支付对接,JAVA对接篇
Razorpay 作为印度本土的一家支付公司,类似中国的支付宝 微信,本篇记录一下对接印度第三方支付公司 准备工作: 注册公司 申请Razorpay账号 申请正式环境 Razorpay工作台: 获取k ...
- 使用Java对接永中格式转换
永中格式转换服务基于永中DCS的文档转换能力,支持不同格式文件之间的高质量互转,可实现PDF文档与Word.Excel.PPT.图片的高质量互转,PDF文档转换完美保留原文档的版式,格式等,转换效果出 ...
随机推荐
- Java 的 G1 垃圾回收流程
Java 的 G1 垃圾回收流程 G1(Garbage-First)垃圾收集器 是一种区域化.并发.低延迟的垃圾回收器,适合大堆内存和对暂停时间有严格要求的应用程序.G1 的垃圾回收流程主要包括以下阶 ...
- liunx git 免密码登录
vscode远程git或在linux环境使用git时,每次clone都要输入帐号密码,很不方便,可以使用下面一行命令,系统会记录你输入的下一次帐号密码.(明文记录,注意规避风险) # 执行 g ...
- 支持命令行输入中文(例如redis-cli输入中文)
修改 cmd 控制台默认代码页编码的几种方法[GBK.UTF-8]_FKNIGHT 的博客-CSDN博客_修改cmd编码 1.进入redis-cli.exe所在文件夹 2.在路径栏输入cmd回车 3. ...
- Sentinel——服务降级
目录 简介 Sentinel方法级降级 Sentinel类级降级 OpenFeign类级降级 简介 服务降级是一种增强用户体验的方式.当用户的请求由于各种原因被拒后,系统返回-一个事先设定好的.用户可 ...
- SpringBoot3特性——错误信息Problemdetails
Spring Framework 6 实现了 HTTP API 规范 RFC 7807 的问题详细信息. 在本文中,我们将学习如何在 SpringBoot 3 REST API(使用 Spring F ...
- K8s进阶之Deployment的更新&回滚
更新概述 更新指的是对 Deployment 所管理应用的配置.镜像版本等进行修改并应用到集群中的过程.通过更新 Deployment,你能够实现应用功能的升级.修复漏洞.调整资源分配等操作. 更新触 ...
- 在鸿蒙Next中开发一个月历组件
最近一直在出差,工作繁忙,很久没有时间更新文章了,连华为开发者大会也错过了.今天周末,忙里偷闲给大家分享一个鸿蒙月历组件. 这样的组件大家在工作中应该经常会遇到,而鸿蒙又没有提供一个这样的系统组件,今 ...
- 10个让你成为CSS画家的技巧,不容错过
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- .NET 原生驾驭 AI 新基建实战系列(七):Weaviate ── 语义搜索的智能引擎创新者
引言 随着人工智能和机器学习技术的迅猛发展,向量数据在推荐系统.自然语言处理.图像搜索等领域的应用日益广泛.传统的数据库在处理高维向量数据时往往面临性能瓶颈,而向量数据库的出现为这一问题提供了高效的解 ...
- 图解Spring源码4-Spring Bean的作用域
>>>点击去看B站配套视频<<< 系列文章目录和关于我 1. 从一个例子开始 小陈经过开店标准化审计流程后,终于拥有了一家自己的咖啡店,在营业前它向总部的咖啡杯生产 ...