应讯一体机称重生命周期分为三步

1、打开串口

 Common_SerialHelper.SettingCom(Common_SerialHelper.Com_Scanbox1,"Com1", ComWeight_DataReceived, ref error);

定义串口、打开串口【传入委托方法】

2、定义委托回调数据         

/// <summary>/// 串口委托接收事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void ComWeight_DataReceived(object sender, SerialDataReceivedEventArgs e){if (StartBool && ((SerialPort)sender) != null && ((SerialPort)sender).IsOpen){byte[] ReDatas = new byte[((SerialPort)sender).BytesToRead];((SerialPort)sender).Read(ReDatas, 0, ReDatas.Length);//读取数据SetDataLog(Common_SerialHelper.DataReceived(ReDatas)); Thread.Sleep(100);}else//停止{try{ string error = "";Common_SerialHelper.StopCom(Common_SerialHelper.Com_ScanWeight, ref error);}catch (Exception ex) { DataHelper.WriteMessage("日志Com_DataReceived1输出报错:" + ex.ToString()); }}}

3、关闭串口

    

Common_SerialHelper.StopCom(Common_SerialHelper.Com_Scanbox1, ref error);

4、如果有需要也可以给串口发送数据

   /*
* LYP
* 2020-12-17
* 串口连接帮助类
* SettingCom开启串口
*  StopCom关闭串口
*/public class Common_SerialHelper{/// <summary>/// /// </summary>private static SerialPort scanbox1;private static SerialPort ScanWeight;public static readonly string Str_ScanBox1 = "ScanBox1";public static readonly string Str_ScanWeight = "Str_ScanWeight";public Dictionary<SerialPort, string> dicport = new Dictionary<SerialPort, string>();public static SerialPort Com_Scanbox1 { get { if (scanbox1 == null || !scanbox1.IsOpen) { scanbox1 = new SerialPort(); } return scanbox1; } set => scanbox1 = value; }public static SerialPort Com_ScanWeight { get { if (ScanWeight == null || !ScanWeight.IsOpen) { ScanWeight = new SerialPort(); } return ScanWeight; } set => ScanWeight = value; }static int BT_Type = IniFile.Instance.GetInt("SerialPort", "BT_Type", 3);#region COM1/// <summary>/// 打开串口/// </summary>/// <param name="ComScan1">串口</param>/// <param name="comport">端口</param>/// <param name="ComControl_DataReceived">委托接收事件</param>/// <param name="error">返回错误</param>public static void SettingCom(SerialPort ComScan1, string comport, SerialDataReceivedEventHandler ComControl_DataReceived, ref string error){#region 扫描器串口设置 try{if (comport == null || comport == ""){error = "请先设置串口保存!";return;}if (ComScan1 != null && ComScan1.IsOpen){ComScan1.Close();}}catch (Exception E){error = "关闭失败:" + E.ToString();}ComScan1.BaudRate = Convert.ToInt32(IniFile.Instance.GetInt("SerialPort", "BaudRate_scan", 9600));ComScan1.DataBits = 8;ComScan1.Encoding = Encoding.UTF8;ComScan1.StopBits = StopBits.One;ComScan1.Parity = Parity.None;ComScan1.RtsEnable = true;// 打开RTS ,这步很重要try{try{if (!ComScan1.IsOpen){ComScan1.PortName = comport;// IniFile.Instance.GetString("systemSet", "com", "1");ComScan1.Open();}else if (ComScan1.IsOpen){ComScan1.Close();}}catch (Exception exss){error = "打开[" + ComScan1.PortName + "]失败!!!";}ComScan1.DataReceived -= ComControl_DataReceived;ComScan1.DataReceived += ComControl_DataReceived;}catch (Exception exs){error = exs.Message;}#endregion}public static void StopCom(SerialPort ComScan1, ref string error){try{if (ComScan1 == null || ComScan1.PortName == ""){error = "请先设置串口保存!";return;}if (ComScan1 != null && ComScan1.IsOpen){ComScan1.Close();}}catch (Exception E){error = "关闭失败:" + E.ToString();}}#region 串口获取数据public static char[] hexDigits = {'0',     '1',     '2',     '3',     '4',     '5',     '6',     '7','8',     '9',     'A',     'B',     'C',     'D',     'E',     'F'};public static string ToHexString(byte[] bytes){char[] chars = new char[bytes.Length * 3];for (int i = 0; i < bytes.Length; i++){int b = bytes[i];chars[i * 3] = hexDigits[b >> 4];chars[i * 3 + 1] = hexDigits[b & 0xF];chars[i * 3 + 2] = ' ';}return new string(chars);}///<summary> /// 从16进制转换成汉字 /// </summary> /// <param name="hex"></param> /// <param name="charset">编码,如"utf-8","gb2312"</param> /// <returns></returns> public static string UnHex(string hex, string charset){if (hex == null)throw new ArgumentNullException("hex");hex = hex.Replace(",", "");hex = hex.Replace("\n", "");hex = hex.Replace("\\", "");hex = hex.Replace(" ", "");if (hex.Length % 2 != 0){hex += "20";//空格 }// 需要将 hex 转换成 byte 数组。 byte[] bytes = new byte[hex.Length / 2];for (int i = 0; i < bytes.Length; i++){try{// 每两个字符是一个 byte。 bytes[i] = byte.Parse(hex.Substring(i * 2, 2),System.Globalization.NumberStyles.HexNumber);}catch{// Rethrow an exception with custom message. throw new ArgumentException("hex is not a valid hex number!", "hex");}}System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);return chs.GetString(bytes, 0, bytes.Length).Replace("\0", "");}#endregion#endregionpublic static string DataReceived(byte[] b){string s = "";if (BT_Type == 0){#region 公司耀华地磅数据 #endregion}else if (BT_Type == 1){#region 托利多地磅 #endregion}else if (BT_Type == 2|| BT_Type == 4){ #region 应讯工控机版本-分体机|百伦丝 #endregion}else if (BT_Type == 3){#region 应讯工控机版本-一体机s = ToHexString(b);
#if DEBUGDataHelper.WriteMessage("数据:" + ToHexString(b) + "开始");
#endiftry{if (s.Length > 9 && s.IndexOf("0D 0A ") > -1 && s.IndexOf("6B 67") > -1)//6B 67 重量{int index2 = s.IndexOf("6B 67 ");if (index2 + 2 * 3 <= s.Length && index2 - 6 * 3 > 0){s = UnHex(s.Substring(index2 - 3 * 6, 3 * 5).Trim(), "utf-8");}else{s = "-1";}}
#if DEBUGDataHelper.WriteMessage("数据:" + s + "结束");
#endifreturn s;}catch (Exception ex){DataHelper.WriteMessage("接收数据异常:" + ex.ToString());return s;} #endregion}else{return "-";}}}

应讯智能-一体机称重重量获取相关推荐

  1. 智能工业称重解决方案

    一.行业背景 工业中的称重管理一向是工业场景中的重要工作之一.尤其是在无人值守情况下,如何做好称重数据的快速传输.有效管理及防范作弊,长久以来一直是行业致力探讨的问题. 在工业称重领域,初期是人工记录 ...

  2. python对接称重仪(获取串口数据)

    业务上是 有两个按钮 一个是打开 一个是关闭 记得先看仪器的说明说调成一直循环向电脑发送数据 误区:一开始在关闭的时候总想着杀死线程也找到了方案. 后来看杀死线程处理不太友好.所以加了off来控制线程 ...

  3. 智能称重系统应用车牌识别解决方案

    传统称重管理系统需要在测量车辆载重的同时记录车牌号码,并建立对应关系,采用人工录入车牌方式,需要较长的等待时间,且容易产生失误甚至作弊等问题.车牌识别地磅称重系统是车牌识系统和称重两种系统相结合,实现 ...

  4. 基于STM32设计智能称重系统(华为云IOT)

    伴随着网络技术,各种通讯技术,传感器技术的飞速发展,物联网技术成为了当今技术领域发展为迅速的技术.而物联网技术的核心仍然是以互联网技术为基础的,物联网是新一代信息技术的重要组成部分,也是信息化时代的重 ...

  5. 基于STM32设计物联网在线智能称重系统(OneNet)_2022

    1. 前言 本设计的模型来源于物流.矿山.高速公路等场合,车辆称重地螃的智能化升级要求.需要结合这些场合,设计基于物联网的智能在线称重方案,开发智能称重控制器,合理选择部署多个重量传感器和必要的算法. ...

  6. 基于华为云 IOT 设计智能称重系统 (STM32)【一】

    1.前言 伴随着网络技术,各种通讯技术,传感器技术的飞速发展,物联网技术成为了当今技术领域发展为迅速的技术.而物联网技术的核心仍然是以互联网技术为基础的,物联网是新一代信息技术的重要组成部分,也是信息 ...

  7. 智能IC卡称重系统流程及技术要求

    1.司机至开卡处凭行车本或身份证领取智能IC卡:发卡主要有两种模式: 自助发卡:系统内已有车辆信息,司机可通过身份证扫描,自助领取IC卡,对于装车量等信息,由司机手动通过触摸屏录入,录入完毕,点击&q ...

  8. 【mcuclub】称重-HX711

    一.实物图 二.原理图 编号 名称 功能 1 GND 电源地 2 DT 数据输出引脚 3 SCK 时钟引脚 4 VCC 电源正 三.简介 HX711是一款专为高精度称重传感器而设计的24位A/D转换器 ...

  9. 地磅称重软件源码_【漯河衡器】浅谈地磅称重的发展趋势

    发展,是人类物质社会的一个永恒的话题.每一个个体,集团,企业都需要不断地发展.才能应对社会的整体发展.对于地磅称重行业也是如此.今天衡安软件的小编就来讲一讲地磅称重的发展以及发展趋势. 地磅称重 一. ...

最新文章

  1. Error: Network is unreachable. Reason: couldn‘t connect to server localhost:27017(连接mongodb数据库失败)
  2. 抽象类和接口类的区别
  3. (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
  4. No1_6.字符串的基本操作2_Java学习笔记
  5. PyODPS DataFrame:统一的数据查询语言
  6. 19.CSS background
  7. 安装jdk-linux-i586.rpm.bin
  8. redis客户端下载(windos版本)
  9. 打印服务器 支持 佳能 2900+打印机,佳能LBP2900,夏普等特殊打印机如何实现打印?(虚拟USB软件用途之二)...
  10. 你有想过如何合适地给 JavaScript 变量命名吗?
  11. 常见文件存储系统的解决方案
  12. linux检查apr,Linux上安装APR
  13. Gartner曾劭清:云计算技术成就企业数字化转型之路
  14. amd显卡风扇调节_解决办法:设置显卡风扇速度的教程方法
  15. 汉信码生成和识别SDK
  16. 【21天习惯养成记~~day17晚】
  17. 桌面 计算机 网络连接怎么办,电脑显示不安全网络连接失败怎么办
  18. 使用三台路由器实现wan与vlan通信
  19. 论文总结 -论文写作注意事项(持续更)
  20. 网 络 存 储 技 术

热门文章

  1. 记录一次文本挖掘 情感分析的项目过程
  2. win10怎么跳过系统更新?win10屏蔽指定更新补丁的设置方法
  3. H5棋牌及APP下载类域名在微信内转发如何做好防封防拦截
  4. 【GNN】图注意力网络GAT(含代码讲解)
  5. 人工智能视觉实训平台实验指导书
  6. 不让Bug陪你过年,StarRocks年终抓虫派对重金相邀!
  7. Xposed使用技巧-反射
  8. 2020年中国皮肤科用药行业现状及竞争格局,市场需求较大「图」
  9. PCIe SSD助力数据中心腾飞
  10. [翻译] 使用FXGL创建一个简单游戏 Pong (FXGL 11)