糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > java 电子秤串口通信_js串口通信 调用MSCOMM32控件 链接电子秤(完整版实现方案)...

java 电子秤串口通信_js串口通信 调用MSCOMM32控件 链接电子秤(完整版实现方案)...

时间:2018-09-10 14:07:00

相关推荐

java 电子秤串口通信_js串口通信 调用MSCOMM32控件  链接电子秤(完整版实现方案)...

硬件环境:RS232转USB串口线*1

电子秤*1(本人采用G&G E600Y-C型号称重仪)

电子秤原装RS232数据线*1

计算机*1

软件环境:RS232转USB串口线驱动(这个可以在串口线生产厂商官网网站下载,我用的是UNITEK生产的)

windows7 (32位)

MSCOMM32控件(这个在网上可以找到)

实现步骤:1,安装MSCOMM32控件

2,安装RS232转USB串口线驱动

3,链接硬件(这里注意:需要电子秤先链接原装串口线,再用RS232转USB串口线链接原装串口线和电脑)

4,开始编码

编码细节:

1,使用js初始化MSCOMM32控件

$(function(){

initActiveX(); // 初始化控件方法

})

function initActiveX(){

try {

msComm1 = new ActiveXObject("MSCOMMLib.MSComm.1"); // 初始化MSCOMM控件

}catch (err) {

console.log(err); // 初始化失败,打印错误

}

if ((typeof (msComm1) == "undefined") || (msComm1 == null)) { // 未初始化成功

alert("msComm1 is null");

return false;

}else{ // 初始化成功

configPort(); // 配置端口信息

searchAndOpenPort(); // 自动搜索端口并打开端口

return false;

}

}

2,配置串口信息

function configPort(){ // 配置端口方法

msComm1.settings = '9600,n,8,1'; // 9600:波特率 n:奇偶位 8:数据位 1:校验位

msComm1.OutBufferCount =0; //清空发送缓冲区

msComm1.InBufferCount = 0; //滑空接收缓冲区

msComm1.RThreshold=14; //这个参数很重要,这个参数配置要符合硬件设备 该参数表示接收硬件设备多少位数据的时候触发onComm事件

}

3,自动搜索计算机串口并打开串口(如果计算机连接两个硬件,参考思路即可)

自动索搜计算机串口的思路:一般电脑最多只有16个串口,依次遍历所有串口,并向串口发送消息(我所用的设备:要求称重仪发送一次数据,

发送十进制"27112"即可),如果接收到数据,那么说明该串口是我们需要寻找的串口。

var com = 0; // 端口变量

var res = ''; // 接收硬件

function searchAndOpenPort(){

if(msComm1.PortOpen == true){

toggglePort(); // 关闭或者打开端口

}

if(com > 16){ // 一般电脑只有16个端口

com = 0;

alert("未连接称重仪!")

return;

}

if(res != ''){ // res为接收到称重仪的数据 后面会讲到如何接收

mPort = com - 1; // 设置串口为搜索到的串口

toggglePort();

return;

}

mPort = com; // 设置串口

var b = toggglePort(); // 打开串口 并返回打开结果

if(b){

send('27,112'); // 向串口发送信息

}

com += 1;

setTimeout('searchAndOpenPort()', 500); // 间隔500ms等待接收数据 并实现循环,如果不间隔时间,受代码执行顺序影响,将接受不到数据

}

4,打开/关闭串口

说明:

msComm1.PortOpen = true; 表示打开串口 如果等于false表示关闭串口

var statu = msComm1.PortOpen 表示获取串口当前开关的状态; statu == true表示当前开启; statu == false表示当前关闭

function toggglePort(){

if(msComm1.PortOpen == false){

try {

msComm1.PortOpen = true; // 开启串口

bindEvent(); //开启串口后绑定串口收发事件

return true;

}catch(ex){

console.log(ex);

return false;

}

}else{

try {

msComm1.PortOpen = false; // 关闭串口

return true;

}catch(ex){

alert(ex.message);

return false;

}

}

}

5,接收/发送串口消息事件绑定

var bindEvent = function () {

function msComm1::OnComm(){

msComm1_event(); // 触发收发事件后的处理方法

}

}

6, 串口收发事件

function msComm1_event(){

//console.log(mEvent); // 这个是在触发收发事件后返回的标志 1:表示发送;

// 2:表示接受

// 其他的标识线变等信息(线变具体信息需要参照MSCOMM的API)

if(mEvent == 1){

alert("Send OK!");

}else if(mEvent == 2){

Receive(); // 接收串口信息方法

}

}

7,接收串口信息方法

function Receive() {

var inputvalue = msComm1.Input; // 接收串口信息

// console.log("input:::" + inputvalue);

if(inputvalue.indexOf("g")>0){ // 如果返回数据包含g

res = $.trim(inputvalue.split("g")[0]); // 取得重量并赋值给res

}

}

8,向串口发送消息

说明:串口不能接受十进制数据,而js中又没有char类型的数据,这里我们用String.fromCharCode()方法将十进制数据转为char类型

function send(str){

var cmd_send = '';

try{

var results = str.split(',');

for(var i=0;i

cmd_send += String.fromCharCode(results[i]); // 十进制转char

}

msComm1.Output=cmd_send; // 向串口发送消息

}catch(ex){

console.log(ex.message);

}

}

9,点击获取称重仪数据的方法

function getWeight(){

if(com == '0'){

alert("未连接称重仪!")

}else{

send('27,112'); // 向串口发送一次请求

setTimeout("auto_weight_once()", 200); // 200ms后接收数据,这里设置200ms后再获取很有必要,这个是执行顺序问题

}

}

function auto_weight_once(){

$("#weight").val(res); // 填充获取的数据到页面

}

10,称重仪持续输出数据的方法

function auto_weight(){

// if(!continue_auto_weight){ // 这里是结束持续输出的标志,至于什么时候结束, 可根据项目而定

// return;

// }

$("#weight").val(res);

send('27,112');

setTimeout("auto_weight()", 200);

}

小结:关于goole如何连接称重仪,有时间再写帖子。

最后:如果还不能解决问题,那么就可能是ie浏览器的安全设置问题,这个网上很多参考,这里就不赘述了。

[转]js串口通信 调用MSCOMM32控件 链接电子秤

本文转自:/x-j-p/p/7819724.html 硬件环境:RS232转USB串口线*1 电子秤*1(本人采用G&G E600Y-C型号称重仪 ...

C#串口通信:MSComm控件使用详解

目 次MSComm控件两种处理通讯的方式CommPort属性RThreshold 属性CTSHolding 属性SThreshold 属性CDHolding 属性DSRHolding 属性Setti ...

vs开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数

原文:/yhhyhhyhhyhh/article/details/50802280 js调用ocx控件的接口函数,先看demo效果: 简单测试过程 ...

『Asp.Net 组件』Asp.Net 服务器组件 内嵌JS:让自己的控件动起来

代码: using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ...

Visual studio之C#跨线程调用UI控件

背景 当前串口通讯项目,多个线程需要同时利用richTextBoxMsg控件打印信息,直接调用会造成线程不安全,严重的时候会直接导致UI线程挂掉,因此本篇就跨线程调用UI控件做个记录. 正文 定义控件 ...

C#调用OCX控件的常用方法[转]

小伙伴们在使用ICP提供的各种能力进行集成开发时常常会遇到一些技术上的困扰,例如ICP中很多接口是通过OCX控件的方式提供的,如何调用这些接口,就成了一个不大不小的问题,毕竟开发指南上可没这些内容啊~ ...

WinForm用户自定义控件,在主窗体加载时出现闪烁;调用用户控件出现闪烁,需要鼠标才能够显示

转载自:.tw/rainmaker/archive//02/22/69811.aspx 解决方案: 在调用用户控件的窗体里面添加一下代码: pro ...

Delphi下使用Oracle Access控件组下TOraSession控件链接

Delphi下使用Oracle Access控件组下TOraSession控件链接数据库,使用 orsn1.Options.Direct:=true; orsn1.Server:=IP:Port: ...

在WPF中调用Winform控件

最近在项目中用到了人脸识别和指纹识别,需要调用外部设备和接口,这里就用到了在WPF中调用Winform控件. 第一步,添加程序集引用.System.Windows.Forms和WindowsForms ...

随机推荐

【完全开源】微信客户端.NET版

目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半途而废,所以最后做出了 ...

python 爬虫(二)

python 爬虫 Advanced HTML Parsing 1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能 ...

R连接Mysql时,中文显示为问号的解决方案

1.打开Mysql安装目录下的my.ini文件,将其中的default-character-set= 均设置为GBK 2.在管理工具——数据源(ODBC)中将创建好的数据源作如下设置:

Redis中Value使用hash类型的效率是普通String的两倍

什么Redis? 点击这里 最近要开发的一个项目是分布式缓存组件,解决参数缓存高效获取的问题.参数达到了500万级别,刚刚开始了解Redis.做设计的时候考虑到Value使用哪种类型的问题? 主要面临 ...

python 函数基础

定义: def intersect(seq1,seq2): res = [] for x in seq1: if x in seq2: res.append(x) yield res 运行效果 &gt ...

bzoj 2301 [HAOI]Problem b(莫比乌斯反演)

Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

vim中c/c++源码跳转

在使用vim阅读c/c++代码的时候,代码跳转很重要, 在学习redis代码的时候遇到这个问题. 网上查找之后通过实践发现cscope比较好用,可以很方便的实现跳转 1. 安装cscope sudo ...

jQuery选择器概述

1.基本选择器:1) #id : 根据给定的id匹配一个元素:2) .class: 根据给定的类名匹配元素:3)element: 根据给定的元素名匹配元素:4)* : 匹配所有元素:5)selecto ...

微服务之consul(一)

一.概述 consul是google开源的一个使用go语言开发的服务发现.配置管理中心服务.内置了服务注册与发现框 架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依 ...

jQuery实现鼠标点击div外的地方div隐藏消失的效果

css部分:

如果觉得《java 电子秤串口通信_js串口通信 调用MSCOMM32控件 链接电子秤(完整版实现方案)...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。