耀华仪表A9数据解析(C#)
耀华仪表A9 数据解析,磨蹭一中午,终于把他解析出来了,测试了一下午感觉很完美,在这里分享给大家;废话不说,直接贴代码;顺便给大家推荐一个开源称重软件,git 码云地址:https://gitee.com/jinhengliuyafei/2022.git , 谢谢大家支持;
/// <summary>
/// 缓存
/// </summary>
List<byte> buffData = new List<byte>();
/// <summary>
/// 缓存
/// </summary>
List<byte> buffData = new List<byte>();
/// <summary>
/// 仪表数据解析
/// </summary>
/// <param name="data">串口数据</param>
/// <returns></returns>
public string DataConvert(byte[] data)
{
string weightVal = string.Empty;
buffData.AddRange(data);
if (buffData.Count < 12) return weightVal;
int startFlag = buffData.LastIndexOf(2);
int endFlag = buffData.LastIndexOf(3);
if (startFlag >= 0 && 0 < endFlag && startFlag < endFlag)
{
//截取一帧数据
var tmpData = buffData.GetRange(startFlag, endFlag - startFlag + 1);
if (tmpData.Count < 12 || tmpData.Count >12) return weightVal;
buffData.Clear();
//判断符号
string flag = string.Empty;
if (tmpData[1] == 45) //45的ascii符号是 -;
{
flag = "-";
}
//读取中间6个字节的数据
string value = string.Empty;
byte[] arr = new byte[6];
int j = 0;
for (int i = 2; i < 8; i++)
{
arr[j] = tmpData[i];
j++;
}
string num = Encoding.ASCII.GetString(arr);
//读取小数位
byte[] arrDot = new byte[1];
arrDot[0] = tmpData[8];
int dot = 0;
int.TryParse(Encoding.ASCII.GetString(arrDot), out dot);
int len = num.Length - dot;
if (len <= 0) return string.Empty;
string num1 = num.Substring(0, len);
string num2 = num.Substring(num.Length - dot, dot);
string result = flag + num1 + "." + num2;
//校验
byte[] checkData = new byte[12];
for (int i = 0; i < tmpData.Count && i < 12; i++)
{
checkData[i] = tmpData[i];
}
var heightResult = HeightBitValidate(checkData);
var lowResult = LowBitValidate(checkData);
if (heightResult == tmpData[9] && lowResult == tmpData[10])
{
weightVal = result;
}
}
return weightVal;
}
/// <summary>
/// 高位验证
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static int HeightBitValidate(byte[] data)
{
byte[] height = new byte[8];
if (data.Length == 12 && data[0] == 2)
{
int i = 0;
for (int index = 1; index < 9; index++)
{
height[i] = (byte)((data[index]) >> 4);
i++;
}
}
int tmp = 0;
for (int i = 0; i < height.Length; i++)
{
tmp = tmp ^ height[i];
}
if (tmp <= 9)
{
tmp += 48;
}
else
{
tmp += 55;
}
return tmp;
}
/// <summary>
/// 低位验证
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static int LowBitValidate(byte[] data)
{
byte[] height = new byte[8];
if (data.Length == 12 && data[0] == 2)
{
int i = 0;
for (int index = 1; index < 9; index++)
{
height[i] = (byte)((data[index]) << 4);
i++;
}
}
int tmp = 0;
for (int i = 0; i < height.Length; i++)
{
tmp = tmp ^ height[i];
}
tmp = tmp >> 4;
if (tmp <= 9)
{
tmp += 48;
}
else
{
tmp += 55;
}
return tmp;
}
耀华仪表A9数据解析(C#)相关推荐
- xk3190-a9 和计算机com口连接方式,耀华XK3190-A9+仪表串行通讯接口与仪表的联接和使用...
耀华XK3190-A9+仪表串行通讯接口与仪表的联接和使用 ▲!通讯接口输出引线与计算机联接必须准确无误,倘若联接错误,将损坏仪表输出端口或计算机通讯输入端口,甚至严重损坏仪表和计算机及相应的外部设备 ...
- 用计算机设置仪表通讯地址,教你耀华XK3190-A9+仪表接电脑通讯协议
原标题:教你耀华XK3190-A9+仪表接电脑通讯协议 ▲!通讯接口输出引线与计算机联接必须准确无误,倘若联接错误,将损坏仪表输出端口或计算机通讯输入端口,甚至严重损坏仪表和计算机及相应的外部设备. ...
- 数据解析1:XML解析(2)
上一篇着重记录了XML解析中的SAX解析,该篇继续上篇(数据解析1:XML解析(2))未讲完的内容. XML补充: 1. 2. . 3. 示例:使用SAX解析一个比较复杂的XML文件 1 <?x ...
- 《硬件接入》耀华XK3190-A9+地磅安卓(java)接入过程分享
最近遇到在安卓上通过串口连接地磅的需求, 基本上实现了读数和判断地磅稳定状态 , 这里分享出来实现过程以方便大家开发.我们开发用的打印机是XK3190-A9+ ,需要这个打印机参数文档的可以耀华官网下 ...
- 基于TencentOS-tiny实现PM2.5传感器(攀藤PMSA003)数据解析思路及实现
说明:此文章提供了一种基于TencentOS-tiny的串口数据解析思路及实现,感谢戴大神最初写的源码,这种思路同样可以实现AT框架.基于串口的GPS数据解析等等. 1. PM2.5传感器 本文使用的 ...
- c语言编程求macd最大值,2010年天津工业大学耀华杯计算机竞赛试卷(C语言全卷带答案).doc...
您所在位置:网站首页 > 海量文档  > 高等教育 > 习题/试题 2010年天津工业大学耀华杯计算机竞赛试卷(C语言 ...
- Python实现OSM地图数据解析——OSM2Rail
目录 1. 简介 2. 功能特色 2.1 自动下载OpenStreetMap地图数据包 2.2 提供更精确的铁路网络数据解析 2.3 扩展GMNS标准 3. 快速上手 4. 效果展示 5. 相关阅读 ...
- 上海耀华地磅串口开发(C#)
上海耀华地磅串口开发(C#) 耀华地磅通用的型号为XK3190-DS3q1和电脑采用DB9接线方式,RS232协议传输. 如果需要转接 接线正常后我们开始通过C#遍历计算机所有的串口设备 打开串口 接 ...
- 耀华YHL-5屏幕开发教程
耀华YHL-5屏幕开发教程 耀华LED通讯协议 数据处理与函数封装 发送重量数据函数封装 耀华LED通讯协议 波特率1200,数据位8位(只能显示6个数字或符号) 发送端串口以连续发送方式时,数据以A ...
最新文章
- 关于学习tf.random.normal()和tf.random.uniform()的一点小总结
- 谷歌首款Tensor手机芯片,全是AI炫技,性能一笔带过
- Asp.Net大型项目实践(7)-用Unity实现AOP之事务处理+为啥要用AOP(附源码)
- 我的VIM配置及说明【K-VIM】
- 3月2日,阿里云开源 PolarDB 企业级架构即将发布
- 关于JDK8采坑JCE加密限制版本问题
- vlookup两个条件匹配_vlookup,你还是只会基础的单条件查找?
- store 存取数据数组对象_如何从Firestore文档中获取对象数组
- 布同:pdf自定义分割(断章)
- IBATIS的优缺点
- 2019年失业以后,他们都经历了什么?
- jenkins+ansible+gitlab
- 节约里程法—单配送中心CVRP求解
- 常用实用网站整理大全
- iOS开发之地图代理不起作用(提示vImage decode failed, falling back to CG path.)
- 教你批量采集晨光文具的商品图片到电脑中
- ECCV 2020预会议 直播笔记| Cross-Modal Weighting Network for RGB-D Salient Object Detection
- VUE-waterfall瀑布流组件使用
- 警务系统三维可视化管理与情报研判综合分析平台
- 嵌入式系统的硬件核心是什么?