由于生产的一些产品,包装后需要把产品的毛重实时打印到包装的标签上去,但一些工业用电子秤(电子磅)等称重器,都不带实时标签打印功能,即使一些超市用的称重器能打印标签,但如果换了不同标签格式,修改起来也比较麻烦。所以需要开发一套软件来实时采集称重器的重量数据,并按设置好的标签格式实时打印一个包装箱的条码标签。

1.获取电子秤称重数据

称重器采用了上海耀华的XK3190-A7,

将电子秤跟电脑连上,接收数据一看,数据是连续发送,而且还没稳定的称重数据也都发送过来了,发送的数据还是高位和低位颠倒的,看来还得费一番功夫去解析数据和算法判断称重是否已经稳定了。电子秤发送过来的数据截图如下:

解析电子秤数据的代码

/// <summary>/// 电子秤对象:/// </summary>public class ElectronicScale{/// <summary>/// 连续相同重量次数/// </summary>private int _sameCount = 20;/// <summary>/// 误差范围/// </summary>private decimal _errorLimit = 0.5M;/// <summary>/// 计数/// </summary>private int _readCount = 0;/// <summary>/// 上一次读数/// </summary>private decimal _lastWeight;/// <summary>/// 最小重量起/// </summary>private decimal _minWeight = 0.2M;/// <summary>/// 重量队列,先进先出/// </summary>private Queue _dataQueue = new Queue();/// <summary>/// 是否有新的重物/// </summary>private bool _isChanged = true;#region 构造函数public ElectronicScale(){}#endregion#region 属性/// <summary>/// 最小起秤重量/// </summary>public decimal MinWeight{get{ return _minWeight; }set{ _minWeight = value; }}/// <summary>/// 频率(连续相同重量次数,5--10)/// </summary>public int SameCount{get{ return _sameCount; }set{_sameCount = value;}}/// <summary>/// 误差范围(设置为重物的最小重量)/// </summary>public decimal ErrorLimit{get{return _errorLimit;}set{_errorLimit = value;}}/// <summary>/// 接收到的重量队列/// </summary>public Queue WeightQueue{get { return _dataQueue; }}#endregionpublic void OnDataReceived(object sender, WeightEventArgs e){try{decimal weight = e.Weight;                if (weight <= _minWeight){_readCount = 0;_isChanged = true;}if (Math.Abs(weight - _lastWeight) <= _errorLimit){//连续在误差范围里,就开始计数_readCount++;}_lastWeight = weight;if (_readCount >= _sameCount && _isChanged){if (weight <= _minWeight)return;_dataQueue.Enqueue(weight);_lastWeight = weight;_isChanged = false;}//string recevieData = _serialPort.ReadExisting();//string logData=DateTime.Now.ToString("hh:mm:ss")+":"+recevieData;//if (_dataQueue.Count > 0)//{//    InvokeRichText.Log(this.richTextBox1, LogMsgType.Receiving, _dataQueue.Dequeue().ToString() + "\r\n");//}}catch{}}}

2. 连接条码打印机打印条码标签

取得称重数据后,还得及时驱动条码打印机开始打印条码标签。条码打印机采用Zebra 105S,为了提高生产线实时打印速度,所以采用指令打印方式。

转载于:https://www.cnblogs.com/haoyue/archive/2010/07/14/1777500.html

生产线称重实时打印条码标签相关推荐

  1. 扫描枪连接zebra打印机打印条码标签无需电脑

    在一些流水线生产的现场,需要及时打印条码标签,由于现场环境和空间限制,无法摆放电脑或者通过连接电脑来打印条码标签的速度太慢, 瑞科条码特提供了一套扫描枪直接连接条码打印机,扫描枪扫描条码之后直接打印输 ...

  2. 无条码商品新建商品档案,搭配蓝牙便携打印机移动打印条码标签

    null无条码商品的商品档案新建,并打印条码标签,即可实现仓库条码管理,扫码入库,出库,盘点等操作., 视频播放量 1.弹幕量 0.点赞数 0.投硬币枚数 0.收藏人数 0.转发人数 0, 视频作者 ...

  3. 条码打印软件如何连接激光打印机打印条码标签

    在连接打印机打印条码标签之前,需要对条码打印软件有一个简单的了解,条码打印软件是通过驱动来连接各种打印机进行打印条码标签的,所以在连接激光打印机打印条码标签时,需要在电脑上安装通用激光打印机驱动.接下 ...

  4. VB2010 打印条码标签方法二

    VB2010 打印条码标签方法二 最近有个案子要用到条码标签打印,以前都是用vb与codesoft软件连携完成,条码打印样式的设定都是在codesoft软件中完成,自制软件这边只是将变量值传递给cod ...

  5. 使用普通打印机打印条码标签

    条码标签不仅可以在专用的标签打印机上打印,也可以在普通打印机上打印,我们只需要设计好一个标签的内容,然后排版,最后选择普通打印机即可.下面小编用一个例子来演示操作步骤. 首先我们打开条码标签软件,新建 ...

  6. c# 小票打印机打条形码_C#调用CODESOFT打印条码标签的关键代码

    C#调用CODESOFT打印条码标签的关键代码 在C#调用CODESOFT的实际过程中,会涉及到一些特别的业务需求,我们将C#调用CODESOFT的一些功能需求总结了一下,希望对大家有所帮助. 我们会 ...

  7. Android之收银机称重和打印及抹零

    Android之收银机称重和打印及抹零 文章目录 Android之收银机称重和打印及抹零 前言 一.收银机称重 1.效果图 2.引入库 3.代码实现 二.收银机本机打印 1.效果图 2.引入库 3.代 ...

  8. 办公软件之excel打印时打印区域与纸张不符解决方法

    在办公的同时 难免要遇到作一些表之类的 但是呢 也会常常遇到一些棘手的问题 那么我们接下来就解决一下这个办公软件之excel打印时打印区域与纸张不符解决方法 一:首先插入分页符 有助于我们排版的方便  ...

  9. 条码打印软件如何使用Excel表批量打印条码标签

    由于时代的发展,现在的印刷行业中批量生成可变数据标签并批量打印已经成为一项非常重要的工作.同时在条码打印软件中,使用数据库导入批量生成可变数据标签并批量打印也是专业的条码打印软件中的基础功能.本文我们 ...

最新文章

  1. 51CTO交流摘录(1):SOC的定义、适用性和组成
  2. cocos2d-x的未来之旅
  3. Java必备常用操作API
  4. minifilter 与用户态的通信
  5. 如何在数据源是空的时候,gridview显示表头(万能)
  6. mac python安装pyqt5_pyqt5 mac os 安装
  7. 第一个冷门与真正的死亡之组
  8. 增强学习 | AlphaGo背后的秘密
  9. Linux文件中批量转换时间戳,linux 文件日期转时间戳
  10. 关于净推荐值(NPS)的理解
  11. matlab 线透明度,matlab 曲线填充 透明度
  12. python把英语句子成分字母_如何标注英语句子成分?
  13. vmware workstation与WIFI共享大师
  14. 4043:GPA排名系统
  15. 电脑显示没有wifi连接到服务器地址,WIFI无ip分配怎么解决
  16. 物联网中常提到的M2M究竟是什么?
  17. 《第六周RFID作业》物联112118 林家辉
  18. 根据docker镜像反推dockerfile
  19. termux使用教程python-利用Termux超级终端在手机上运行Python开发环境
  20. MP3切分工具, 简单,粗暴好用。

热门文章

  1. golang中的strings.SplitAfter
  2. http 400错误
  3. CC++面试题大汇总
  4. 3.STM32中对EXTI_PE5_Config()函数的理解(自定义)之中断控制按键LED
  5. bool 变量想为什么一般初始化为FALSE 比较好?
  6. jvm十五:java虚拟机内存图
  7. java:不同数据类型的转换规则
  8. Enterprise Library 2.0 -- Caching Application Block
  9. 第二十一讲 任务的删除
  10. LINUX 下面SQL定时备份