在浏览器中和本地计算机串口进行通讯

本文介绍了如何在浏览器环境中,通过Applet与JavaScript结合实现B/S架构下读取二维条码扫描枪信息。首先,Applet使用Java串口编程读取串口数据,然后通过数字签名机制访问本地资源。JavaScript获取Applet中的数据并处理,将信息填充到网页输入区域。文中详细阐述了Applet实现思路、Java串口编程、数字签名制作步骤及Applet与JavaScript的交互细节。
摘要由CSDN通过智能技术生成
 

—Applet+Javascript实现B/S读取二维条码扫描枪信息

(一) 背景 2
(二) Applet实现思路 2
(三) Java Windows串口编程简介 4
(四) Applet + Javascript实现细节 5
(五) Applet数字签名制作步骤 13
(六) 二维条码扫描枪客户端程序使用说明(B/S版) 15
(七) 参考资料 17


(一)          背景
根据公司省府办二维条码项目的要求,需要达到以下的功能:在B/S构架的WEB应用中,能够在客户端的浏览器中,通过二维条码扫描枪,把二维条码中包含的信息读到浏览器中的各个输入区域。
根据前期项目已经开发的功能,我们已经完成了生成国家标准的公文交换PDF417二维条码,这种条码中包含多种信息,如标题、发文单位、发文时间、内容等信息,在WEB应用中,应用的方式类似以下描述:在浏览器中,打开的HTML页面包括各种输入区域,如标题输入区域、内容输入区域等,通过扫描抢,扫出二维条码中包含的信息,自动填入相应的输入区域中。扫描枪接在客户端计算机的串口上。
经过2天的摸索,本功能的程序已经开发实现,在摸索的过程中,发现Internet上这类技术的可用资料非常少,并且大多都是英文的资料,阅读起来很费劲。另外,这样的应用方式肯定不是最后一个,马上公司的新项目海南省行政审批中还会用到,所以把这个技术以文挡方式描述清楚,以方便日后使用。


(二)          Applet实现思路
根据上面的需求描述知道,要满足需求,需要完成2个步骤:首先,必须有程序通过和本地计算机进行串口通讯,通过串口读出扫描枪扫出来的二维条码包含的全部信息(IO操作);第二,读出的条码信息,必须能够送到浏览器脚本语言控制区,通过脚本语言把信息分到各个输入区域中。
Java处理IO操作有先天的优势,所以上述第一个环节,我们理所当然的想到了使用Java进行串口通讯读出扫描枪中所扫描到的二维条码信息,但串口是位于客户端计算机上,在B/S结构的WEB应用中,因此,采用Applet的Java代码进行串口通讯。
为什么要采用Applet,还有另外的一个重要原因。在上面的描述中,还有第二个环节,需要把IO操作的信息,传输到客户端脚本语言控制区域(客户端脚本语言一般选择Javascript),Applet能够和Javascript进行通讯是第一个环节采用Applet的另外一个重要原因。
以上描述可以总结为:Applet读取连接扫描枪的COM口(即串口)的二维条码信息,Javascript获取到Applet读到的信息后,进行相应处理,图示如下:


 

Applet实现需要考虑的问题是,因为Applet的安全性要求,在普通情况下,Applet是不允许访问本地计算机的资源的,比如,一个Applet不能去访问本地的文件系统,否则,随便在Internet上放一个Applet,把客户端的C盘文件全部删除,那还得了!但是,Applet的设计者并没有全部抑制这些功能,通过其他机制,是可以访问到本地的资源的,串口作为本地资源,就需要用到这种机制,这种机制就是数字签名。对Applet进行数字签名后,可以访问到本地资源。

应该指出,以上的实现思路并不是唯一的可实现的思路,我猜想(没有实践过),javascript+ActiveX,即用ActiveX代替Applet,也能达到相同的效果,我估计,ActiveX也能和javascript脚本语言进行通讯,原理和Applet应该类似。另外,技术总监提出第三种思路:在客户端使用C开发一个读串口的程序(理由是C读串口很方便),然后通过键盘防真技术,把扫描枪的输入模拟成为键盘输入达到输入效果,由于能力和时间的关系,没有被选择,但这是个很好的思路,日后有时间很值得去研究。


(三)          Java Windows串口编程简介
Java的IO操作有先天的优势,Java的IO操作是Java的核心之一,串口通讯作为Java IO操作中的一种,已经被封装的非常良好,使用Java进行串口通讯,程序员的工作变得非常简单。
Java进行串口通讯,可以归结成为以下5个过程:
1、          得到串口
2、          OPEN串口
3、          设置串口
4、          得到输入(输出)流,通过流操作,进行串口通讯
5、          CLOSE串口
串口操作包位于comm.jar,这个一个扩展的java包,在标准的JDK中并没有包含这个包,需要额外下载,另外,Java串口通讯还需要用到win32com.dll,在Sun下载comm.jar时,会包含这个dll。
串口通讯的5个过程,在Java 代码中,实现如下:
//第一步:获取串口
CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM1");
//第二步:OPEN串口
SerialPort      serialPort = (SerialPort)portId.open("Serial_Commun

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值