基于JACOB的托利多电子称与计算机通信的研究

来源 :硅谷 | 被引量 : 0次 | 上传用户:baochangjingmao
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]介绍在Java application中基于JACOB利用dll实现托利多8142电子秤与计算机数据通信的技术。
  [关键词]dll 8142电子称 串口通信 Java
  中图分类号: TP3文献标识码:A 文章编号:1671-7597(2008)0720014-01
  
  在基于JAVA SWING 技术开发的过磅管理系统中,需要与串口通信,读取电子称的数据。Microsoft 的Mscomm是一个功能强大的串口通信控件,在VB中用它来开发串口通信程序是一个不错的选择。JAVA 的jni类库用于访问c/c++代码是比较方便的,但是用来访问VB开发的串口通信程序却很麻烦[1]。JACOB(JAVA-COM Bridge)是一个开源的基于jni技术开发的类库,用于JAVA代码与COM组件之间的通信。本文利用JACOB在JAVA SWING 中调用VB下开发的dll串口通信程序,实现对地磅数据的自动读取。
  
  一、8142 系列电子秤串口数据格式与Mscomm通信控件
  
  绿华糖厂使用的托利多电子秤型号是8142或是8142pro,这两种电子秤的串口发送数据方式都是设置为连续发送,而且数据格式都是一样的,如表1所示:
  


  其中,状态字A、B、C分别表示小数点位置、分度倍乘、是否超载等信息,具体见电子称所附说明书。限于篇幅,不再一一给出。综上可知一帧数据共有18个字节,但实际传输中只用了17个字节,最后一个字节检查校验和,一般不使用。
  计算机与串口通信程序的开发利用MSComm ActiveX控件是比较方便的[2]。它具有如下重要属性:CommPort属性:设置与返回通讯端口数;Settings属性:设置与返回波特率,奇偶校验位,字符串的停止位和数据位;PortOpen属性:设置与返回通讯端口的状态,并可开放、关闭端口;Input属性:返回和删除接收缓冲区的字符;Output属性:写字符串到发送缓冲区。
  (一)数据包的提取
  数据包的提取是利用OnComm事件来完成的。设置MSComm的Rthreshold属性为18,这样当接收缓冲区收到18个字节时,就会发生Mscomm事件。由于电子称工作于连续发送方式,即使收到18个字节仍不能保证是一个完整的数据帧。因此就必须对这18个字节做进一步的分析,以确认是否为有效数据。由表1的数据格式可知,正确的数据包的第一个字节为02H,第17个字节为0DH。这样,在Mscomm事件中就可以检测这两个位置的字节以判断是否为正确的数据帧。
  (二)超载检测和负值检测
  如果接受的数据超载(即接受的重量超过电子秤的量程范围)或者为负值,接受数据就没有意义了,所以必须对它进行检测。超载检测主要是判断数据包中的状态字B的‘2’位数据是否为‘1’,若为‘1’,则为超载;若为‘0’,则为正常,可以通过超载检测。负值检测主要是判断状态字B中的‘1’位数据是否为‘1’,若为‘1’,则为负值;若为‘0’,则为正常,可以通过检测。
  (三)重量数据的析取
  在托利多电子秤上所显示的重量数据在数据包中处于5 到10 位,有6 个字节,每个字节对应于电子秤所显示的一位数值。将每个字节转换为字符并连接为字符串,就可以作为重量数据返回给上层调用程序了。
  二、电子称数据采集DLL控件的开发
  通信程序的开发是在VB6.0环境下完成的。点击“文件”->“新建工程”,在弹出的新建工程对话框中选择ActiveX DLL控件选项,新建一个工程,取名为tuledo8142。并为该工程添加一个MSComm控件。源码主要包括两个函数与一个OnComm事件处理。其中getCheng函数供swing调用以设置通信格式并打开COM口[3]。其代码如下:
  Public Function getCheng()
  MSComm1.CommPort = 1
  MSComm1.Settings = "9600,e,7,1"
  MSComm1.RThreshold = 18
  MSComm1.InputLen = 18
  MSComm1.InBufferCount = 0
  MSComm1.PortOpen = True
   End Function
  在OnComm事件中判斷数据帧是否有效,并负责析取重量数据,主要代码如下:
  Private Sub MSComm1_OnComm()
  Dim inbytes() As Byte
  inbytes = MSComm1.Input
  If inbytes(0) = 2 And inbytes(16) = 13 Then
  value = Chr(inbytes(4)) & Chr(inbytes(5)) & Chr(inbytes(6)) & Chr(inbytes(7)) & Chr(inbytes(8)) & Chr(inbytes(9))
  MSComm1.InBufferCount = 0
  MSComm1.PortOpen = False
  Exit Sub
  End Sub
  getValue函数仅供swing读出重量值:
  Public Function getValue() As String
   getValue = value
  End Function
  接着就需要将该通信程序封装为OCX控件。具体步骤为,点击“文件”->“生成tuledo8142.dll…” 。这样会生成tuledo8142.dll文件,可以供swing使用了。
  
  三、在swing中使用数据采集dll控件
  
  (一)JACOB的安装
  在Eclipse3.2中,右键点击工程,打开configuration对话框,将jacob.jar文件加入到CLASSPATH中。
  (二)在swing中的JAVA读磅值函数
  public String readCheng(){
   String result= "noData";
   int count = 0;
   //使用JACOB启动读称:
   DispatchchengReader = new Dispatch("youjvcheng.Class1");
   Dispatch.call(chengReader, "beginReadCheng");
   //等待结果:
   while(result.equals("noData") ){
   result = Dispatch.call(chengReader, "getResult").toString();
   if(count++ >10000)break;
   }
  
  Return result;
  }
  (三)使用多线程实时显示磅值
  在实时显示数据的同时,为了不影响正常操作的进行,必须用多线称实现数据的显示[4]。以下是显示数据的线称类:
  class dispChengThread implements Runnable
   {
   public void run()
   {
   Dispatch chengReader = new Dispatch("cheng4Thread.Class1");
   while(isChengThreadRunned){
   try{
   Thread.sleep(400);
   }catch(InterruptedException e)
   {
   System.out.println(" 读磅秤线程出现异常:\n");
   e.printStackTrace();
   }
   String result= "noData";
   int count = 0;
  
   //启动读称:
   Dispatch.call(chengReader, "beginReadCheng");
   //等待结果:
   while(result.equals("noData") ){
   //每隔50ms读一次数据:
   try{
   Thread.sleep(50);
   }catch(InterruptedException e)
   {
  System.out.println(" 讀磅秤线程出现异常:\n");
   e.printStackTrace();
   }
   result = Dispatch.call(chengReader, "getResult").toString();
   if(count++ >10)break;
   }//end while
  ValueChengLabel.setText( ( "第"+v++ +"次读磅:"+result));
   valueCheng = result;
   }//end while
   //线程结束:
   valueChengLabel.setText("");
   chengReader = null;
   }//end run()
   }// end dispChengThread
  
  四、应用情况
  
  本文提出swing电子称数据采集方案已在籽棉收购系统中得到应用。数据读取快速准确,运行稳定,取的了满意的效果。
  
  参考文献:
  [1]雍俊海.Java 程序设计教程[M]. 清华大学出版社,2007.
  [2]贺海辉,石林祥,魏淑桃. 基于MSComm和Windsock的智能管理系统的研究与设计[J] .微计算机信息,2006,22,(7):230-232.
  [3]Jeffrey Richter. Windows 核心编程[M].机械工业出版社,2000.
  [4]Karl Avedal,Danny Ayers. JAVA编程指南[M].电子工业出版社,2001.
其他文献
中图分类号:G42 文献标识码:A 文章编号:1671-7597(2009)0110158-01    随着社会的发展,人们对数学教育的要求会越来越高。为适应这种要求,高中数学试验教材已在全国十一个省市试用,高中数学课程标准也在讨论制订之中。但我们知道:从教育的效果来看,课程可分为预期课程、实施课程和实现课程三种。预期课程是由国家政府部门和教育专家们制订的,而实施课程是教师根据自己对预期课程的理解
期刊
中图分类号:S1 文献标识码:A 文章编号:1671-7597(2009)0110196-01    农业机械是农业生产力中最具有活力的要素,农业机械化历来是衡量农业发展水平、反映农业现代化进程的重要标志。纵观世界各国农业机械化发展道路,都有其相同或相似的发展规律。科学分析我国农机化发展形势,把握发展规律,是做好今后一个时期我国农业机械化工作的基础和前提。当前,从社会发展的客观需要和经济、技术条件
期刊
中图分类号:D4文献标识码:A文章编号:1671-7597(2009)0110200-01    农村人口的增长,农村耕地的减少,农业劳动生产率的提高,是造成农村劳动力过剩的三大主要原因。而实现农村富余劳动力转移又是关乎农民就业、农民增收、农村稳定、农村实现小康的重要途径。因此,农村富余劳动力转移就成为各级政府思考的重要问题,并伴随着改革开放三十年。但随着新的经济转型期的到来,农村富余劳动力如何转
期刊
[摘要]Excel 2003是微软公司出品的Office 2003 办公软件系列中的一个核心组件之一,它是一个通用的电子表格处理软件。使用它可以方便快捷的进行数据运算和数据分析,以成绩统计查询为例简单说明Excel2003强大的数据管理能力。  [关键词]Excel 2003 数据运算 数据分析 数据查询 函数  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0720
期刊
[摘要]Web 2.0在短短两年的时间成为互联网的主流,一大批带有明显Web 2.0色彩的网站聚集了大量人气。在颠覆传统的冲浪模式的同时,一些商家开始尝试把Blog、RSS、长尾理论等典型的Web 2.0应用引入电子商务领域,以期利用新的销售思想和模式吸引人气、增加利润,其中不乏成功者。Web 2.0的思想及其应用将会在更大的范围内促进电子商务的发展,把电子商务带进一个崭新的时代。  [关键词]W
期刊
[摘要]随着电子科学技术的飞速发展,面对运算量巨大的科学计算, DSP技术的出现和发展彻底的变革了人们的工作、学习和生活方式。DSP(Digital Signal Processing)是数字信号处理技术的缩写,也可以代表数字信号处理器(Digital Signal Processor)。DSP目前已经处于数字信息产品核心引擎的地位,面对中外巨大的市场空间,我们应该努力去挖掘DSP技术的应用和发展
期刊
[摘要]在全球传媒界同仁的共同努力下,电视作为一种现代化传播手段而发展到今天,其在技术层面上已经很难取得实质性的突破。于是,电视节目的创作理念成为人们最为关注的问题,在这个范围内进行的革命,也成为一种必然。因此,深入分析电视谈话类和电视娱乐类节目的平民意识对于电视在传播领域内更好地发挥其积极作用具有非常重要的意义。  [关键词]电视谈话节目 电视娱乐节目 平民意识 互动 娱乐性   中图分类号:J
期刊
[摘要]将简述如何在以OLED作为操作面板的电控设备上,实现多级功能菜单的设计及显示。  [关键词]单片机 OLED 多级菜单  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0720016-02    随着人性化、智能化电控设备的发展,其功能越来越强大,操作面板显示内容越来越多,已不再满足于数码管显示,取而代之的是LCD、OLED等显示面板。而对于野外工作的电控设备
期刊
[摘要]主要比较VB程序设计中鼠标和键盘使用的优缺点问题,并对键盘及快捷键的操作进行分析和设计,对于初学程序设计的读者具有非常重要的参考和借鉴意义。  [关键词]窗体 事件 Ascii 代码 快捷键等等。  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0720042-01    在微软的各类应用程序中,不无例外地包含菜单、工具栏、各种按钮(如命令按钮、单选、复选、列
期刊
[摘要]主要从大型数据库ORACLE环境四个不同级别的调整分析入手,分析ORACLE的系统结构和工作机理,从不同方面较全面地总结ORACLE数据库的优化调整方案。  [关键词]ORACLE数据库 环境调整 优化设计 方案  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)0720043-01    ORACLE数据库中数据存取性能的改善,可以进行调整级别,第一级调整是操
期刊