Chrome应用,如何将命令发送到Datecs DP05BT财务打印机?

时间:2017-05-09 11:52:31

标签: javascript google-chrome-app fiscal

我正在尝试制作一个可以向Datecs DP05BT财务打印机发送命令的Chrome应用程序。

我设法建立了与财务打印机的连接,但我不知道如何使用chrome.bluetooth.send向设备发送命令(例如<44>)。

编辑1:我设法用chrome.bluetooth.send发送一个字符串,使用字符串到chrome开发人员提供的数据缓冲区转换器,但财务打印机没有做任何事情。我设法找到一个可以向财务打印机发送命令的Android应用程序。

我的问题如何在我的应用中实施JavaScript?或者可以管理字符串到data.readeable.by.fiscal.printer连接的SDK?

编辑2:我设法找到了一个与财务打印机进行通信的SDK,问题是,它适用于android。我可以将它包含在我的应用程序中吗?

编辑3:财务打印机为Datecs DP05BT

    function ConnectToService(device, uuid, container) {
    chrome.bluetoothSocket.create({}, function (info) {
        if (chrome.runtime.lastError) {
            log("Error creating socket: " + chrome.runtime.lastError.message);
            return;
        }
        log("Socket OK!");
        container.socketId = info.socketId;
        chrome.bluetoothSocket.onReceive.addListener(function (info) {
            log("Data received on socket " + info.socketId + ", length=" + info.data.byteLength);
        });
        chrome.bluetoothSocket.onReceiveError.addListener(function (info) {
            log("Error receiving data on socket " + info.socketId + ", error code=" + info.error + ", message=" + info.errorMessage);
            chrome.bluetoothSocket.close(info.socketId, function () {
                log("socket closed");
                container.socketId = -1;
            });
        });
        chrome.bluetoothSocket.connect(info.socketId, device.address, uuid, function () {
            if (chrome.runtime.lastError) {
                log("Error connecting to socket: " + chrome.runtime.lastError.message);
                return;
            }
            log("Connect OK!");

        chrome.bluetoothSocket.send(info.socketId, str2ab('<44>'), function(bytes_sent){

            if (chrome.runtime.lastError) {
            console.log("Send failed: " + chrome.runtime.lastError.message);
         } else {
            console.log("Sent " + bytes_sent + " bytes")
         }
        });
    });
    });
};

function str2ab(str)
{
     var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
     var bufView = new Uint16Array(buf);
     for (var i=0, strLen=str.length; i < strLen; i++) {
       bufView[i] = str.charCodeAt(i);
     }
     return buf;
}

0 个答案:

没有答案