基于JACOB的托利多电子称与计算机通信的研究_第1页
基于JACOB的托利多电子称与计算机通信的研究_第2页
基于JACOB的托利多电子称与计算机通信的研究_第3页
基于JACOB的托利多电子称与计算机通信的研究_第4页
基于JACOB的托利多电子称与计算机通信的研究_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于的托利多电子称与计算机通信的研究基于的托利多电子称与计算机通信的研究在基于javasing技术开发的过磅管理系统中,需要与串口通信,读取电子称的数据。irsft的s是一个功能强大的串口通信控件,在vb中用它来开发串口通信程序是一个不错的选择。java的jni类库用于访问/+代码是比较方便的,但是用来访问vb开发的串口通信程序却很费事1。jab(java-bridge)是一个开源的基于jni技术开发的类库,用于java代码与组件之间的通信。本文利用jab在javasing中调用vb下开发的dll串口通信程序,实现对地磅数据的自动读龋一、8142系列电子秤串口数据格式与s通信控件绿华糖厂使用的

2、托利多电子秤型号是8142或是8142pr,这两种电子秤的串口发送数据方式都是设置为连续发送,而且数据格式都是一样的,如表1所示:其中,状态字a、b、分别表示小数点位置、分度倍乘、是否超载等信息,详细见电子称所附说明书。限于篇幅,不再一一给出。综上可知一帧数据共有18个字节,但实际传输中只用了17个字节,最后一个字节检查校验和,一般不使用。计算机与串口通信程序的开发利用sativex控件是比较方便的2。它具有如下重要属性:prt属性:设置与返回通讯端口数;settings属性:设置与返回波特率,奇偶校验位,字符串的停顿位和数据位;prtpen属性:设置与返回通讯端口的状态,并可开放、关闭端口;

3、input属性:返回和删除接收缓冲区的字符;utput属性:写字符串到发送缓冲区。一数据包的提取数据包的提取是利用n事件来完成的。设置s的rthreshld属性为18,这样当接收缓冲区收到18个字节时,就会发生s事件。由于电子称工作于连续发送方式,即使收到18个字节仍不能保证是一个完好的数据郑因此就必须对这18个字节做进一步的分析,以确认是否为有效数据。由表1的数据格式可知,正确的数据包的第一个字节为02h,第17个字节为0dh。这样,在s事件中就可以检测这两个位置的字节以判断是否为正确的数据郑二超载检测和负值检测假如承受的数据超载即承受的重量超过电子秤的量程范围或者为负值,承受数据就没有意义

4、了,所以必须对它进展检测。超载检测主要是判断数据包中的状态字b的2位数据是否为1,假设为1,那么为超载;假设为0,那么为正常,可以通过超载检测。负值检测主要是判断状态字b中的1位数据是否为1,假设为1,那么为负值;假设为0,那么为正常,可以通过检测。三重量数据的析取在托利多电子秤上所显示的重量数据在数据包中处于5到10位,有6个字节,每个字节对应于电子秤所显示的一位数值。将每个字节转换为字符并连接为字符串,就可以作为重量数据返回给上层调用程序了。二、电子称数据采集dll控件的开发通信程序的开发是在vb6.0环境下完成的。点击文件-新建工程,在弹出的新建工程对话框中选择ativexdll控件选项

5、,新建一个工程,取名为tuled8142。并为该工程添加一个s控件。源码主要包括两个函数与一个n事件处理。其中getheng函数供sing调用以设置通信格式并翻开口3。其代码如下:publifuntingetheng()s1.prt=1s1.settings=9600,e,7,1s1.rthreshld=18s1.inputlen=18s1.inbufferunt=0s1.prtpen=trueendfuntin在n事件中判断数据帧是否有效,并负责析取重量数据,主要代码如下:privatesubs1_n()diinbytes()asbyteinbytes=s1.inputifinbytes(0

6、)=2andinbytes(16)=13thenvalue=hr(inbytes(4)hr(inbytes(5)hr(inbytes(6)hr(inbytes(7)hr(inbytes(8)hr(inbytes(9)s1.inbufferunt=0s1.prtpen=falseexitsubendsubgetvalue函数仅供sing读出重量值:publifuntingetvalue()asstringgetvalue=valueendfuntin接着就需要将该通信程序封装为x控件。详细步骤为,点击文件-生成tuled8142.dll。这样会生成tuled8142.dll文件,可以供sing使

7、用了。三、在sing中使用数据采集dll控件一jab的安装在elipse3.2中,右键点击工程,翻开nfiguratin对话框,将jab.jar文件参加到lasspath中。二在sing中的java读磅值函数publistringreadheng()stringresult=ndata;intunt=0;dispathhengreader=nedispath(yujvheng.lass1);dispath.all(hengreader,beginreadheng);hile(result.equals(ndata)result=dispath.all(hengreader,getresult)

8、.tstring();if(unt+10000)break;returnresu三使用多线程实时显示磅值在实时显示数据的同时,为了不影响正常操作的进展,必须用多线称实现数据的显示4。以下是显示数据的线称类:lassdisphengthreadipleentsrunnablepublividrun()dispathhengreader=nedispath(heng4thread.lass1);hile(ishengthreadrunned)trythread.sleep(400);ath(interruptedexeptine)e.printstaktrae();stringresult=ndata;intunt=0;dispath.all(hengreader,beginreadheng);hile(result.equals(ndata)trythread.sleep(50);ath(interruptedexeptine)e.printstaktrae();result=dispath.all(hengreader,getresult).tstring();if(unt+10)break;valuehenglabel.set

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论