2012-04-30 3 views
1

LCD 디스플레이에 직렬 입력을 표시하는 Seeeduino Mega 1.22에 대한 간단한 스케치가 있습니다. lynx 용어 및 arduino 직렬 모니터를 사용하여 잘 작동합니다. 보낸 된 입력이 표시되고 있습니다. Win7 x64 시스템에서 이클립스에서 실행되는 자바 프로그래밍과 Seeeduino 사이에서 직렬 통신을 시작하려고 할 때 문제가 발생합니다. RXTX x64 빌드를 사용하고 있습니다. 이 프로그램은 열려있는 포트를 통해 일부 string.getBytes()를 보내고 받도록되어 있습니다. Java 측에서 수신은 작동하지만 Arduino 측에서 수신하는 것은 실패합니다.흐름 제어 Java RXTX와 Arduino 간의 직렬 통신 설정

문제는 적절한 흐름 제어 설정 인 것으로 보입니다. 어떤 사람들은 여기 같은 문제가 있다는 것을 알았습니다 Issues receving in RXTX

그러나이 해결책은 저에게 효과적이지 않습니다. FlowControl을 None으로 설정하면 디스플레이에 블록 아이콘 만 표시됩니다. 이는 직렬 연결이 설정되었음을 나타냅니다. FlowControl을 RCTS_IN으로 설정하면 | RCTS_OUT, 그럼 내가 설정 한 연결을 닫을 때 디스플레이에만 문자열 바이트를 얻는다.

연결을 닫을 때 데이터가 전송되는 이유는 무엇입니까 (스트림 플러시는 도움이되지 않았습니까?). Flow Controll 설정에서 내가 뭘 잘못하고 있니?

이것은 내가 사용중인 수정 된 connect() 메소드입니다. 시간에 미리

void connect(String portName) throws Exception { 
     CommPortIdentifier portIdentifier = CommPortIdentifier 
       .getPortIdentifier(portName); 
     if (portIdentifier.isCurrentlyOwned()) { 
      System.out.println("Error: Port is currently in use"); 
     } else { 
      CommPort commPort = portIdentifier.open(this.getClass().getName(), 
        2000); 

      if (commPort instanceof SerialPort) { 
       SerialPort serialPort = (SerialPort) commPort; 
       serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8, 
         SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); 

       try { 
        serialPort.setFlowControlMode(
        //  SerialPort.FLOWCONTROL_NONE); 
        // OR 
        // If CTS/RTS is needed 
        //serialPort.setFlowControlMode(
         SerialPort.FLOWCONTROL_RTSCTS_IN | 
         SerialPort.FLOWCONTROL_RTSCTS_OUT); 
       } catch (UnsupportedCommOperationException ex) { 
        System.err.println(ex.getMessage()); 
       } 

       serialPort.setRTS(true); 

       in = serialPort.getInputStream(); 
       out = serialPort.getOutputStream(); 

       (new Thread(new SerialWriter(out))).start(); 

       serialPort.addEventListener(new SerialReader(in, this)); 
       serialPort.notifyOnDataAvailable(true); 

      } else { 
       System.out.println("Error: Only serial ports are to use!"); 
      } 
     } 
    } 

덕분에

답변

0

를 해결. 많은 사람들이 제안했듯이 그것은 완충 장치가 아니 었습니다. 문제는 보드의 Seeeduinos RST 스위치가 자동으로 설정되었다는 것입니다. 수동으로 설정하여 문제를 해결했습니다. 흐름 제어가 필요하지 않습니다.