使用铬序列清除极显示文本

Clear Pole Display text using chrome serial

本文关键字:显示 文本 清除      更新时间:2023-09-26

我创建了一个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");

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

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


您命名了您的显示器型号,搜索"BIRCH DSP-800手册"会得到该文档的第一个链接,该文档包含第4.1.7节中的所有命令代码。

要覆盖一个字符串,只需要发送40个字符就可以"覆盖"旧数据顺便说一句,这是一个通用的解决方案:只将文本写入与显示大小相等的块中根据需要填充空间。

您还可以通过发送与命令相对应的字符串来执行命令。让我们以"clear range"命令为例进行说明。

"清除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),您将其作为文本发送,就完成了。

您可以转换其他类似的命令,并完全控制极点显示。