gpt4 book ai didi

java - 需要有关客户杆显示的帮助,我无法通过串行端口 COM1 向其发送命令

转载 作者:行者123 更新时间:2023-12-01 15:08:29 25 4
gpt4 key购买 nike

我被分配了一个任务,与行显示器或客户显示器进行通信,其型号为VFD220E,波特率9600 N 8 1,以及20个字符2行显示器。我有手册,但当我尝试发送命令时。它没有拿起它,只是像字符串一样打印。任何帮助将非常感谢。下面是我的代码。

  CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM1");
if (portIdentifier.isCurrentlyOwned())
{
System.out.println("Port in use!");
}
else {
System.out.println(portIdentifier.getName());

SerialPort serialPort = (SerialPort) portIdentifier.open("ListPortClass", 300);
int b = serialPort.getBaudRate();
System.out.println(Integer.toString(b));
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);


OutputStream mOutputToPort = serialPort.getOutputStream();
InputStream mInputFromPort = serialPort.getInputStream();
String ESC=" 1B 51 41 ";//hex codes
String CR="0D";//hex codes
String mValue = ESC+" Testing Phase"+CR;//to display on top line.
String clear ="0C";
System.out.println("beginning to Write . \r\n");
mOutputToPort.write(clear.getBytes());
mOutputToPort.write( mValue.getBytes());
mOutputToPort.flush();
System.out.println("Command Written to Port. \r\n");
mOutputToPort.flush();
System.out.println("Waiting for Reply \r\n");
//Thread.sleep(500);
byte mBytesIn [] = new byte[20];
mInputFromPort.read(mBytesIn);
mInputFromPort.read(mBytesIn);
String value = new String(mBytesIn);
System.out.println("Response from Serial Device: "+value);
mOutputToPort.close();
mInputFromPort.close();
serialPort.close();

最佳答案

您似乎以文本形式发送控制命令。您不能只将"1B 51 41 " 作为字符串写入并将它们发送到显示器。 String 的 getBytes() 方法为您提供 UTF-8 字符串的字节表示形式,而不是字节 0x1B、0x51 和 0x41。

您必须将实际字节值 0x1B、0x51 和 0x41 发送到显示器。通过发送字节或在字符串中使用转义序列,即采用十进制表示法 \027\081\065

查看此link一些常用的十六进制和十进制命令。

关于java - 需要有关客户杆显示的帮助,我无法通过串行端口 COM1 向其发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com