昨天我通过txd0和rxd0端口将mh-z19b连接到我的raspberry 4,并使用pi4j发送和读取数据
[...]
serial = SerialFactory.createInstance();
serial.addListener(new SerialDataEventListener() {
@Override
public void dataReceived(SerialDataEvent serialDataEvent) {
try {
System.out.println(serialDataEvent.getHexByteString());
byte [] response = serialDataEvent.getBytes();
[...]
serial.open(new SerialConfig()); //Serial Config:/dev/ttyAMA0 (9600,8N1) {FC:NONE}
serial.write(generateReceiveDataCommand());
[...]
private byte[] generateReceiveDataCommand(){
return new byte [] {(byte)0xFF, (byte)0x01, (byte)0x86, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x79};
}
这个代码昨天运行得非常好。我启动和停止程序好几次,并宣读了大量的数据。
然而,当我打开我的树莓并执行代码时,我没有得到任何结果。当我将线程设为哑巴时,我得到以下消息:
"main" #1 prio=5 os_prio=0 tid=0xb4f08800 nid=0x63c runnable [0xb511e000]
java.lang.Thread.State: RUNNABLE
at com.pi4j.jni.Serial.write(Native Method)
- locked <0xa32d1258> (a java.lang.Class for com.pi4j.jni.Serial)
at com.pi4j.jni.Serial.write(Serial.java:683)
- locked <0xa32d1258> (a java.lang.Class for com.pi4j.jni.Serial)
at com.pi4j.io.serial.impl.SerialImpl.write(SerialImpl.java:730)
at com.pi4j.io.serial.impl.AbstractSerialDataWriter.write(AbstractSerialDataWriter.java:68)
at de.tn8.impl.MHZ19B.getData(MHZ19B.java:78)
at de.tn8.main.UseCases.doMHZ19BUseCase(UseCases.java:29)
at de.tn8.main.App.main(App.java:29)
有时它会被锁在 serial.open(new SerialConfig());
有时如上图所示 serial.write(generateReceiveDataCommand())
这绝对是奇怪的,因为我没有改变任何代码。
我还实现了一些python代码来发送和读取数据(相同的设置:/dev/ttyama0(9600,8n1){fc:none})。这个还能用。所以它与java或pi4j有关。有人能帮忙吗?
暂无答案!
目前还没有任何答案,快来回答吧!