我创建了一个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");
答案 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)
,您将其作为文本发送,然后就完成了。
您可以转换其他类似命令并完全控制杆显示。