Java 错误:无法从静态上下文引用非静态方法readstring
我试图通过串行端口类通过COM端口发送数据,并通过COM端口接收数据,但出现此问题 多谢各位Java 错误:无法从静态上下文引用非静态方法readstring,java,oracle,serial-port,Java,Oracle,Serial Port,我试图通过串行端口类通过COM端口发送数据,并通过COM端口接收数据,但出现此问题 多谢各位 import jssc.SerialPort; import jssc.SerialPortException; import jssc.*; public class writeValues { public static void main(String[] args) { SerialPort serialPort = new SerialPort("COM1");
import jssc.SerialPort;
import jssc.SerialPortException;
import jssc.*;
public class writeValues {
public static void main(String[] args) {
SerialPort serialPort = new SerialPort("COM1");
try {
//Open port
String T;
serialPort.openPort();
serialPort.setParams(2400,7,2,1, false, true);
String bytes = serialPort.readString(); //Reads 10 bytes from serial port
serialPort.addEventListener(new PortReader(), SerialPort.MASK_RXCHAR);
serialPort.writeString("connected.");
//serialPort.closePort();
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
public static class PortReader implements SerialPortEventListener {
@Override
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR() && event.getEventValue() > 0) {
try {
String receivedData = SerialPort.readString(event.getEventValue());
System.out.println("Received response: " + receivedData);
}
catch (SerialPortException ex) {
System.out.println("Error in receiving string from COM-port: " + ex);
}
}
}
}
}
由于SerialPort类不是静态的-(您调用了SerialPort=new SerialPort()对吗?)您需要在该实例“SerialPort”上调用readstring,而不是在SerialPort类上调用readstring。你所能做的就是改变
public class writeValues {
public static SerialPort serialPort;
public static void main(String[] args) {
serialPort = new SerialPort("COM1");
try {
//Open port
String T;
serialPort.openPort();
serialPort.setParams(2400,7,2,1, false, true);
String bytes = serialPort.readString(); //Reads 10 bytes from serial port
serialPort.addEventListener(new PortReader(), SerialPort.MASK_RXCHAR);
serialPort.writeString("connected.");
//serialPort.closePort();
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
public static class PortReader implements SerialPortEventListener {
@Override
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR() && event.getEventValue() > 0) {
try {
String receivedData = serialPort.readString(event.getEventValue());
System.out.println("Received response: " + receivedData);
}
catch (SerialPortException ex) {
System.out.println("Error in receiving string from COM-port: " + ex);
}
}
}
}
因此,现在我们引用的是serialPort实例,而不是静态类serialPort。希望对您有所帮助:
String receivedData=SerialPort.readString(event.getEventValue())代码>。您正在类(不是实例)上调用readString()
。这对于非静态方法是不允许的。在main()。