2013-05-28 4 views
0

rs232 장치 이벤트를 처리하는 리스너가 하나 있는데 임시적으로 다른 두 리스너에 String 인수를 전달하려고합니다. 어떻게해야합니까?Java 리스너와 인수 전달

RS232 수신기 코드 :

static class SerialPortReader implements SerialPortEventListener { 

    public void serialEvent(SerialPortEvent event) { 

     if(event.isRXCHAR()){ 
      if(event.getEventValue() > 0){ 
       try { 
        String asd= serialPort.readHexString(18); 
       //asd is argument to pass to other listener 
        System.out.println(asd); 
       } 
       catch (SerialPortException ex) { 
        System.out.println(ex); 
       } 
      } 
     } 
    } 

그리고 내가 예를 들어

String new = waitForPassedStringArgument(); 

을 할 것 또는 내가 String를 얻을 때 리스너가 ArrayList의 값을 변경됩니다 임시 리스너가 필요합니다.

답변

0

청취자가 발신자와 별도의 스레드로 실행되고 있습니까? 그렇다면 BlockingQueue (각 수신기마다 하나씩)을 설정 한 다음 보낸 사람 offer 개를 각 대기열에 추가하십시오. 그런 다음 각 수신기는 해당 대기열에서 항목을 검색합니다.

+0

이들은 같은 스레드에 있습니다. 그것은 스윙 응용 프로그램이므로 EDT에 모두 포함됩니다. – Gravian

+0

이 문자열을 두 번 분리해야합니다. - 사용자가 버튼을 사용하여 getString을 호출하면 rs232 수신기 출력을 기다리고 Jtextfield에 씁니다. - 사용자가 단추 호출을 사용하여 청취자가 Arraylist와 모든 문자열을 가져 와서 비교할 때까지 사용자가 중지 단추를 누를 때까지 모든 문자열을 가져옵니다. – Gravian