生产线称重实时打印条码标签
2010-07-14 19:47
246 查看
由于生产的一些产品,包装后需要把产品的毛重实时打印到包装的标签上去,但一些工业用电子秤(电子磅)等称重器,都不带实时标签打印功能,即使一些超市用的称重器能打印标签,但如果换了不同标签格式,修改起来也比较麻烦。所以需要开发一套软件来实时采集称重器的重量数据,并按设置好的标签格式实时打印一个包装箱的条码标签。
![](http://images.cnblogs.com/cnblogs_com/haoyue/es2.jpg)
1.获取电子秤称重数据
称重器采用了上海耀华的XK3190-A7,![](http://images.cnblogs.com/cnblogs_com/haoyue/es2.jpg)
将电子秤跟电脑连上,接收数据一看,数据是连续发送,而且还没稳定的称重数据也都发送过来了,发送的数据还是高位和低位颠倒的,看来还得费一番功夫去解析数据和算法判断称重是否已经稳定了。电子秤发送过来的数据截图如下:
![](http://images.cnblogs.com/cnblogs_com/haoyue/es.jpg)
解析电子秤数据的代码
![](http://images.cnblogs.com/cnblogs_com/haoyue/es.jpg)
解析电子秤数据的代码
/// <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; } } #endregion public 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,为了提高生产线实时打印速度,所以采用指令打印方式。![](http://images.cnblogs.com/cnblogs_com/haoyue/bar.jpg)
相关文章推荐
- NiceLabel一行多列的条码标签如何打印?
- 扫描条码实时打印装箱单
- LightLabel 条码标签设计打印系统1.2.1
- C# 标签(条码)的打印与设计(一)
- C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)
- AS400 RPGLE 条码打印机(Zebra888-TT)打印中文标签 方法 2
- 票据打印, 账单打印, 标签打印, 文档打印, 条码打印, 批量打印, 包装纸打印与设计,可变数据打印打印,发布,VC++源代码组件库解决方案
- 【随笔】水晶报表标签打印不显示条码
- (转)VS2010结合水晶报表做条码标签打印功能
- Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版
- jquery/js 实现 标签 条码 一维码 Web页面 区域打印解决方案 实例
- C# 标签(条码)的打印与设计(二)
- 基于.Net下整合FastReport,实现条码标签批量打印
- VS2010结合水晶报表做条码标签打印功能
- C#调用斑马打印机打印条码标签(支持COM、LPT、USB、TCP连接方式和ZPL、EPL、CPCL指令)
- VB2010 打印条码标签方法二
- java调用条码打印机打印标签完整例子(打印中文,打印二维码)
- TEC指令打印标签/条码_连续打印多个标签
- jquery/js 实现 标签 条码 一维码 Web页面 区域打印解决方案 实例
- 使用Java Communication API 打印条码标签