c#开发地磅称重软件

2012年时即做过一个地磅称重软件,最近公司又接了一个地磅过磅软件的项目,把遇到的问题总结一下以备后用。

1.接线问题

因为客户方原来单独使用仪表,仪表未有接线和电脑连接,为此颇费周折才做好了接线。接线方式为仪表端所接阵脚为7、8,电脑端为2、5

2.读取仪表称重数

代码基本沿袭2012年为另一客户所开发的称重软件的代码。

注:本次客户所使用地磅为泰山衡器厂出的XK3200,但说明书上说明和耀华系列地磅兼容,而上一客户所使用地磅正是耀华XK3190,大概因此代码基本可直接通用。

下面贴代码了,使用的serialPort控件,命名为port

称重窗体设计器代码页 FrmWeigh.designer.cs中

this.port.BaudRate = 2400;
this.port.Parity = System.IO.Ports.Parity.Even;
this.port.StopBits = System.IO.Ports.StopBits.OnePointFive;
this.port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.port_DataReceived);

称重窗体FrmWeigh.cs获取地磅仪表数核心代码部分:

 1         /// <summary>
 2         /// 串口读取数据
 3         /// </summary>
 4         private void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
 5         {
 6             Thread.Sleep(100);            
 7             if (false == this.port.IsOpen) return;
 8             byte firstByte = Convert.ToByte(port.ReadByte());
 9             if (firstByte == 0x02)
10             {
11                 int bytesRead = port.ReadBufferSize;
12                 byte[] bytesData = new byte[bytesRead];
13                 byte byteData;
14 
15                 for (int i = 0; i < bytesRead - 1; i++)
16                 {
17                     byteData = Convert.ToByte(port.ReadByte());
18                     if (byteData == 0x03)//结束
19                     {
20                         break;
21                     }
22                     bytesData[i] = byteData;
23                 }
24                 strReceive = Encoding.Default.GetString(bytesData);
25             }
26             tbWeight.Invoke(new EventHandler(delegate { tbWeight.Text = GetWeightOfPort(strReceive); }));
27         }
28 
29         /// <summary>
30         /// 返回串口读取的重量
31         /// </summary>
32         /// <param name="?"></param>
33         /// <returns></returns>
34         private string GetWeightOfPort(string weight)
35         {
36             if (string.IsNullOrEmpty(weight) || weight.IndexOf("+") < 0 || weight.Length < 6)
37             {
38                 return "0.000";
39             }
40             weight = weight.Replace("+", "");
41             weight = int.Parse(weight.Substring(0, 3)).ToString() + "." + weight.Substring(3, 3);
42             return weight;
43         }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏申龙斌的程序人生

访问Bigone API获取数字资产的余额

昨天写了一篇文章《Bigone API 升级到v2,害死程序员》,有人反映API文档无法打开,请自备梯子访问https://open.big.one。

14920
来自专栏二进制文集

Java 知乎爬虫

基于 Java 的 webmagic,开发极其简单,这个知乎爬虫的代码主体就几行,而且只要专注提取数据就行了(其实是因为我也不知道其它 Java 的爬虫框架)。

27940
来自专栏贾老师の博客

网络数据帧与 MTU

26140
来自专栏月牙寂

golang时间戳格式化与解析

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

448110
来自专栏james大数据架构

NET实现微信公共平台上传下载多媒体文件

      举个例子,有人对着我们的公共微信号拍个照片发送过来,然后我们处理这个照片,比如进行ocr识别字(随后就会降到这个例子),或者人脸识别,或者拍照取证等...

30770
来自专栏Web 开发

又是一年PC操作系统三国鼎立的时刻~

Win8 在今早零时,发布开发者预览版,Lion已经发布多时,Ubuntu11.10的正式版也已经逼近

8800
来自专栏别先生

摸索出来的chrom调试前后台数据(Java&&Ajax)交互的方法分享一下咯!!!

1:开始没想分享的,后来看到有大佬分享如何使用Chrom的工具进行调试,哈哈哈哼,我就借着他的博客写一下我摸索的如何进行前后台数据交互吧(注:反正是自己瞎  捣...

367100
来自专栏GuZhenYin

用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室...

27390
来自专栏雪胖纸的玩蛇日常

Vue+Django2.0 REST framework打造前后端分离的生鲜电商项目(三)设计数据库以及导入原始数据

53950
来自专栏ImportSource

NoSQL如何构建数据存储模型

翻译内容:NoSQL Distilled 第三章 数据模型详解 3.5 Modeling for Data Access 作者简介: ? ...

388130

扫码关注云+社区

领取腾讯云代金券