Clear pole使用chrome serial显示文本

时间:2014-04-12 17:10:26

标签: javascript serial-port google-chrome-app

我创建了一个chrome应用程序,通过串口连接到Pole Display,我已成功写入,但每次发送消息时,它都与前一个连接,我无法找到每次发送新消息时清除屏幕的方法!

这是我的代码:

var connectionId = -1;

openPort("COM3");

function openPort(port){
  var onOpen = function(connectionInfo) {
    if (!connectionInfo || connectionInfo.connectionId == -1) {
      return;
    }
    connectionId = connectionInfo.connectionId;
  }
  chrome.serial.connect(port, {bitrate: 9600}, onOpen);
}

function closePort() {
  if (connectionId == -1) {
    return;
  }

  var onDisconnect = function(connectionInfo) {
    connectionId = -1;
  }
  chrome.serial.disconnect(connectionId, onDisconnect);
}

function sendData(str){
  chrome.serial.flush(connectionId, function(){});
  chrome.serial.send(connectionId, str2ab(str), function(){});
}

function str2ab(str) {
  var buf      = new ArrayBuffer(str.length);
  var bufView  = new Uint8Array(buf);
  for (var i   = 0; i < str.length; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}

sendData("dsadsads");

1 个答案:

答案 0 :(得分:1)

您应该查看您的Pole Display手册。

根据我使用其中一个的经验,您需要发送一个特殊命令来清除显示和/或在开头重新定位插入符号。


您命名了您的显示器型号,搜索“BIRCH DSP-800手册”会给出this document的第一个链接,其中包含4.1.7节中的所有命令代码。

要覆盖字符串,您只需要发送40个字符即可“翻转”旧数据。 顺便说一句,这是一种通用的解决方案:只能以等于显示大小的块来编写文本。根据需要填充空格。

您还可以通过发送与命令对应的字符串来执行命令。让我们用“清除范围”命令的例子来做。

“清除从1位置到40位置的范围并将光标移动到1位置”

十六进制字符串为04 01 43 n m 17,请注意:m和n在[0x31; 0x58]范围内,因此位置1将是n = 0x31,位置40将是(十六进制算术!)m = 0x31 + 39 = 49 + 39 = 88 = 0x58(毫不奇怪)。因此,正确的命令(十六进制编码)为04 01 43 31 58 17

相应的字符串为String.fromCharCode(0x04, 0x01, 0x43, 0x31, 0x58, 0x17),您将其作为文本发送,然后就完成了。

您可以转换其他类似命令并完全控制杆显示。