JS和COM口通信

前言

最近需要实现一个需求:在浏览器上调用COM口进行打印输出和接收打印后的回调信息,可是在网上找了很多代码,不是抄来抄去,就是没法调用,所以就自己用VB6.0实现了一个控件。

COM口简介

计算机和外设连接需要有输入输出接口,常用的有串口和并口,而COM口就是就是串口来的。台式机后面的那个九针梯形的接口就是COM口。可以在Windows 的DOS界面输入如下命令查看COM口的状态:

mode com1

COM1口的状态信息
COM1

当COM口被占用的时候会提示 设备 COM 当前不可用

Windows的通信控件MSComm

MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。在VC、VB、Delphi等语言中均可使用。我的话是使用MSCOMM32.OCX控件,开发语言是用VB,开发工具使用的VB6.0。

MSComm控件的详细介绍可以看这里,主要看几个重要的属性和两种通讯方式。


  • CommPort

设置需要通讯的端口号
例如:MSComm1.commPort = 3,表示需要和com3端口进行通信


  • Settings

以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
例如: MSComm1.Settings = “9600,n,8,1”,表示波特率9600,无校验,8位数据位,停止位为1


  • InputMode

设置出入的数据类型,0为字符串,1位二进制
例如:MSComm1.InputMode = 1,表示 接收二进制类型数据


  • PortOpen

设置并返回通讯端口的状态。可以打开和关闭端口。
打开端口:portOpen = true;关闭端口:portOpen = false;


  • Input

从接收缓冲区返回和删除字符。COM口返回的数据从这里获取到。数据类型为byte数组类型。
例如:buf = MSComm1.Input,表示从缓冲区获取COM返回的数据。


  • Output

向传输缓冲区写数据。注意传入的类型为byte数组。
例如:MSComm1.output = hexData,表示把数据传给COM口

处理通讯的方式有两种:一种为事件驱动方式,一种是查询方式。驱动方式是回调的方式获取返回的数据,而查询方式是轮询的方法获取返回的数据。

控件的开发

我这里使用的是VB6.0来开发。整体的思路是JS调用控件提供的接口,传入字符串,然后控件把字符串处理成byte数组的形式hexData,再把数组传给MSComm.output。然后写一个响应事件,接受回调的数据,提供给JS当做回调接口,这样就把数据传到页面上了。形成一个完整的通信。

明确了思路,马上开始动手实现。

首先在VB6.0下新建工程,弹出的框中选中ActiveX控件。然后把MSCOMM32.OCX控件拖入工具箱中,会出现一个类似于电话的黄色图标,然后双击图标添加。

接下来就是编码实现了。

数据输入接口:

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值