基于JACOB的托利多电子称与计算机通信的研究的论文-通信技术论文.docxVIP

基于JACOB的托利多电子称与计算机通信的研究的论文-通信技术论文.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

??

?

??

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

通信技术论文

?

??

?

?

?

?

?

?

???

?

?

?

?

?

?

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

在基于javaswing技术开发的论文联盟http://过磅管理系统中,需要与串口通信,读取电子称的数据。microsoft的mscomm是一个功能强大的串口通信控件,在vb中用它来开发串口通信程序是一个不错的选择。java的jni类库用于访问c/c++代码是比较方便的,但是用来访问vb开发的串口通信程序却很麻烦[1]。jacob(java-combridge)是一个开源的基于jni技术开发的类库,用于java代码与com组件之间的通信。本文利用jacob在javaswing中调用vb下开发的dll串口通信程序,实现对地磅数据的自动读取。

一、8142系列电子秤串口数据格式与mscomm通信控件

绿华糖厂使用的托利多电子秤型号是8142或是8142pro,这两种电子秤的串口发送数据方式都是设置为连续发送,而且数据格式都是一样的,如表1所示:

其中,状态字a、b、c分别表示小数点位置、分度倍乘、是否超载等信息,具体见电子称所附说明书。限于篇幅,不再一一给出。综上可知一帧数据共有18个字节,但实际传输中只用了17个字节,最后一个字节检查校验和,一般不使用。

计算机与串口通信程序的开发利用mscommactivex控件是比较方便的[2]。它具有如下重要属性:commport属性:设置与返回通讯端口数;settings属性:设置与返回波特率,奇偶校验位,字符串的停止位和数据位;portopen属性:设置与返回通讯端口的状态,并可开放、关闭端口;input属性:返回和删除接收缓冲区的字符;output属性:写字符串到发送缓冲区。wwW..COm

(一)数据包的提取

数据包的提取是利用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环境下完成的。点击“文件”-“新建工程”,在弹出的新建工程对话框中选择activexdll控件选项,新建一个工程,取名为tuledo8142。并为该工程添加一个mscomm控件。源码主要包括两个函数与一个oncomm事件处理。其中getcheng函数供swing调用以设置通信格式并打开com口[3]。其代码如下:

publicfunctiongetcheng()

mport=1

mscomm1.settings=9600,e,7,1

mscomm1.rthreshold=18

mscomm1.inputlen=18

mscomm1.inbuffercount=0

mscomm1.portopen=true

endfunction

在oncomm事件中判断数据帧是否有效,并负责析取重量数据,主要代码如下:

privatesubmscomm1_oncomm()

diminbytes()asbyte

inbytes=mscomm1.input

ifinbytes(0)=2andinbytes(16)=13then

value=chr(inbytes(4))chr(inbytes(5))chr(inbytes(6))chr(inbytes(7))chr(inbytes(8)

文档评论(0)

159****8201 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档