2013-01-28 3 views
0

GSM 모뎀에 직렬 통신을위한 CommV3 드라이버를 사용하는 SMS 기반 Java 응용 프로그램이 있습니다. 두 가지 코드가 있는데 하나는 메시지 전송 용이고 다른 하나는 메시지 수신 용입니다. 각 코드는 개별적으로 실행될 때 완벽하게 작동합니다.Java 직렬 통신 PortInUseException

이제 두 코드를 통합하고자 할 때 PortInUseException이 될 수 있습니다. 그러나 나는 어디에서 시작해야할지 모르겠습니다.

포인터/링크/자습서를 통해 문제를 해결할 수 있습니까? 나는 어디서부터 시작해야하는지 모른다.

미리 감사드립니다.

답변

1

SerialPort와 2가 아닌 코드를 사용하는지 확인하십시오. 그러면이 포트를 읽거나 쓰는 데 문제가 없습니다.

SerialPort serialPort; 
InputStream inStream; 
OutputStream outStream; 

serialPort = (SerialPort) portId.open(...); 
serialPort.setFlowControlMode(...); 
serialPort.setSerialPortParams(...); 

inStream = serialPort.getInputStream(); 
outStream = serialPort.getOutputStream(); 

PS : SMSLib가 호환되는 GSM 모뎀 또는 GSM 전화를 통해 SMS 메시지를 송/수신 할 수 있습니다 (물론 .NET 프레임 워크로 포팅) 훌륭한 자바 라이브러리입니다. SMSLib는 또한 일괄 SMS 연산자를 지원합니다. 그것은 자유롭고 매우 안정적입니다.

+0

'portId.open (...) '매개 변수를 이해하지 못합니다. API는 appname과 timeout을 말합니다 ... 나는이 줄을 살펴볼 것입니다. – GreenDroid

+0

두 가지 매개 변수가 있습니다. 응용 프로그램의 이름과 밀리 초 단위의 시간 제한입니다. 예 :'portId.open ("MySMSApp", 5000);' –

+0

나는 이미 Javax Comm 라이브러리를 사용했기 때문에 SMSLib로 옮기는 것을 주저한다. 그러나 다른 모든 것이 실패하면, 나는 당신의 제안을 취할 것입니다. 감사! – GreenDroid

0

아마도 2 코드에서 리스너 코드 (포트에 바인딩 됨)를 분리 할 수 ​​있습니다. 및 보내기/받기를 기반으로 적절한 코드 세그먼트를 사용하십시오.

+0

그건 정확히 알아낼 수없는 것입니다 ... 이것은 직렬 통신으로 프로그래밍 된 나의 처음입니다 ... – GreenDroid