2013-10-09 2 views
0

Java 프로그램이 하나의 직렬 포트를 통해 올바르게 통신하는 데 문제가 있습니다. 사실 컴퓨터에는 두 개의 직렬 포트가 있으며 프로그램은 두 개의 스레드를 관리합니다. 각 스레드는 하나의 다른 직렬 포트를 사용합니다. 하나의 스레드가 포트를 통해 전송하는 데 문제가 있습니다. OutputStream.write()을 사용하지만 java.io.OutputStream.flush() 메서드를 사용한 후에 바이트가 보내지지 않습니다. 그리고 스레드는 flush() 메서드에서 5 분에서 10 분까지 "고정"됩니다. 다른 스레드가 같은 방식으로 작동하지만 전혀 문제가 없습니다. outputstream 인스턴스의 인스턴스는 gnu.io.CommPort.getOutputStream()입니다.직렬 포트를 통한 바이트 전송에 5 분 이상 걸림

스레드가 바이트를 즉시 보내지 않는 이유는 누구나 알 수 있습니까? 다만 flush() 메서드에서 5 분이 지난 후에야 다르게해야합니까?

+0

동일한 위치, 즉 직렬 포트에 쓸 때 리소스를 사용 중이거나 사용할 수없는 경우 스레드를 sinchronize하여 차이점을 확인할 수있는 채널의 상태를 얻을 수 있습니다. –

+0

직렬 포트를 사용하는 스레드는 하나 뿐이며 다른 프로그램은 없습니다. 하지만 내 프로그램이 flush() 메서드에 집어 넣을 때 직렬 포트에 연결된 다른 장치가 뭔가를 보내는 경우 다른 장치에서 메시지를 수신하기 전에 메시지를 보내는 프로그램이 "멈추지"않는다는 것을 알게되었습니다. –

답변

0

나는 마침내 문제의 원인을 발견했다. 직렬 포트에 결함이 있습니다. 나는 그것을 바꿨고 지금은 잘 작동한다.

관련 문제