2013-01-28 2 views
0

У меня есть Java-приложение на основе SMS с использованием драйверов CommV3 для последовательной связи с модемом GSM. У меня есть два отдельных кода: один для отправки сообщений и один для приема сообщений. Каждый код работает отлично, когда выполняется индивидуально.Java Serial Communication PortInUseException

Теперь, когда я хочу интегрировать оба этих кода, я получаю PortInUseException, что может быть очевидно. Но я не уверен, с чего начать.

Могу ли я получить указатели/ссылки/учебные пособия, где я мог бы начать решать мою проблему. У меня нет подсказки, откуда я должен начать.

Заранее благодарен!

ответ

1

Убедитесь, что ваш код использует один SerialPort, а не два. Тогда нет проблем с чтением или записью на этот порт.

SerialPort serialPort; 
InputStream inStream; 
OutputStream outStream; 

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

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

PS: SMSLib отличная библиотека Java (портирована на .NET Framework, а), которая позволяет отправлять/получать SMS-сообщения через совместимый GSM модем или GSM телефон. SMSLib также поддерживает некоторые массовые SMS-операторы. Он свободен и очень стабилен.

+0

Я не понимаю параметры 'portId.open (...)'. API говорит appname и тайм-аут ... Наверное, я буду смотреть на эти строки. – GreenDroid

+0

Существует два параметра: имя приложения и таймаут в миллисекундах. Пример: 'portId.open (« MySMSApp », 5000);' –

+0

Я уже использовал библиотеку Javax Comm и поэтому не решаюсь перейти на SMSLib. Однако, если все остальное не удастся, я рассмотрю ваше предложение. Благодаря! – GreenDroid

0

Возможно, вы можете выделить код слушателя (который привязывается к порту) из 2 кодов. и посвятить соответствующий сегмент кода на основе отправки/получения.

+0

Это именно то, что я не могу понять ... Это мое первое программирование с последовательной связью ... – GreenDroid