仅接收串行端口中的一个字节 - Chrome应用程序

时间:2014-10-01 19:02:43

标签: google-chrome google-chrome-extension

情况

我有一个扫描仪,它一直在使用我没有源代码的已编译应用程序。它仍然有效,可以进行测试以确保扫描仪正常工作。我需要将数据输入过程转换为基于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);
};

0 个答案:

没有答案