2015-06-29 6 views
-1

Я пытаюсь отправить данные через COM-порт через класс SerialPort и получать данные через COM-порт, но с этой проблемой ......... .................................................. ..............................................Ошибка: нестационарный метод readstring не может ссылаться на статический контекст

Спасибо.

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); 
       } 
      } 
     } 

    } 

} 
+1

Проблема здесь: 'String receivedData = SerialPort.readString (event.getEventValue());'. Вы вызываете 'readString()' в классе (а не в экземпляре). Это не допускается для нестатических методов. В 'main()' вы делаете то же самое правильно. –

ответ

0

В классе SerialPort не является статичным - (вы назвали SerialPort = новый SerialPort() правильно?) Вам нужно вызвать ReadString на этой инстанции «SerialPort» вместо класса SerialPort. Что вы можете сделать, это изменение

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. Надеюсь, что помогает

Смежные вопросы