情况
我有一个扫描仪,它一直在使用我没有源代码的已编译应用程序。它仍然有效,可以进行测试以确保扫描仪正常工作。我需要将数据输入过程转换为基于Web的系统。
所以我正在构建一个chrome应用程序,用于读取从com端口传入的串行端口信息。我首先尝试使用com端口仿真器和虚拟零调制解调器进行设置。这允许我测试连接和接收数据。我找不到为什么我只收到1个字节。
问题
当我连接到实际扫描仪时,我能够毫无问题地连接,但是当我收到dataArray时,它只有一个字节长。在获得第一个数据后,在重新启动连接之前,我无法接收任何其他数据。
守则
var connectionId = -1;
var e_dtr, e_rts, e_dcd, e_cts, e_ri, e_dsr;
var dtr, rts;
chrome.app.runtime.onLaunched.addListener(function(launchData) {
chrome.serial.getDevices(function(objs,arg2){
chrome.serial.connect(objs[0].path, {ctsFlowControl:true}, onConnect)
});
});
chrome.serial.onReceive.addListener(function(info){
chrome.serial.getInfo(info.connectionId, output);
var uint8View = new Uint8Array(info.data);
var value = String.fromCharCode.apply(null, uint8View);
console.log(value);
});
chrome.serial.onReceiveError.addListener(function(info){
var uint8View = new Uint8Array(info.data);
var value = String.fromCharCode.apply(null, uint8View);
console.log(value);
});
function readSignals() {
chrome.serial.getControlSignals(connectionId,onGetControlSignals);
}
function onSetControlSignals(result) {
console.log("onSetControlSignals: " + result);
};
function changeSignals() {
chrome.serial.setControlSignals(connectionId, { dtr: dtr, rts: rts }, onSetControlSignals);
}
function onGetControlSignals(signals) {
console.log(signals);
}
function onConnect(connectionInfo) {
console.log(connectionInfo);
if (!connectionInfo) {
console.log('Could not open');
return;
}
connectionId = connectionInfo.connectionId;
console.log('Connected');
dtr = false;
rts = false;
changeSignals();
setInterval(readSignals, 1000);
};