2013-09-07 3 views
0

Я пытаюсь подключить последовательное приложение на ubuntu с помощью Java
После поиска и чтения ресурсов я добавляю в библиотеку comm.jar и RXTXcomm.jar.
Я использую следующий код для определения компонов. В моей системе есть три порта, но он показывает false в методе ports.hasMoreElements().
Просьба изучить код и помочь мне.идентификация последовательного порта с java на ubuntu

String wantedPortName = "/dev/ttya"; 
///dev/ttyS0 و /dev/ttyS1 نیز تست شد 
Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers(); 
CommPortIdentifier portId = null; // will be set if port found 
while (portIdentifiers.hasMoreElements()) 
{ 
    CommPortIdentifier pid = (CommPortIdentifier) portIdentifiers.nextElement(); 
    if(pid.getPortType() == CommPortIdentifier.PORT_SERIAL && 
     pid.getName().equals(wantedPortName)) 
    { 
    portId = pid; 
    break; 
    } 
} 
if(portId == null) 
{ 
    System.err.println("Could not find serial port " + wantedPortName); 
    System.exit(1); 
}  

ответ

0

Похоже, что вы отфильтровываете порт, который хотите. A/DEV/терминал специальный символ устройство ... не последовательный порт так

if(pid.getPortType() == CommPortIdentifier.PORT_SERIAL && 
    pid.getName().equals(wantedPortName)) 

должен никогда соответствовать вашей строке.

Чтобы это доказать, попробуйте выполнить итерацию по доступным портам. Я не знаю, может ли tty быть обнаружен RXTX, но играть с ним и сообщить нам.

Ref: http://rxtx.qbang.org/wiki/index.php/Discovering_available_comm_ports

EDIT: Так у вас нет каких-либо последовательных устройств для тестирования с? Все, что я сидел, это убедиться, что все правильно установлено, включая файл свойств, как описано в этом файле.

http://rxtx.qbang.org/pub/rxtx/rxtx-2.0-7pre2/INSTALL

После этого, установить нуль-модемного эмулятор или найти серийный прибор для тестирования с.

+0

спасибо 4 ваш ответ –

+0

это, если статут находится на статусе и w hile statment возвращает false. Так что программа не выполняет это, если !!! –

+0

Похоже, это не нравится tty! У вас есть устройство RS-232 или похожее на тест, если rxtx видит его? RXTX может быть придирчивой настройкой и конфигурацией. –

1

В моем случае я использую Ubuntu, а у моего ноутбука нет последовательных или параллельных портов.

Таким образом, вы должны имитировать этот вид порта:

apt-get install socat 

Выполнить это:

socat -d -d pty,raw,echo=0, pty,raw,echo=0 

По выходу, обратите внимание на "устройств", созданных:

2014/02/05 01:04:32 socat[7411] N PTY is /dev/pts/2 
2014/02/05 01:04:32 socat[7411] N PTY is /dev/pts/3 
2014/02/05 01:04:32 socat[7411] N starting data transfer loop with FDs [3,3] and [5,5] 

Stop socat [CTRL] + [C] и символически привязать его к местоположению, которое RXTX будет распознавать как устройство, из-за префикса «tty»:

sudo ln -s /dev/pts/2 /dev/ttyUSB02 
sudo ln -s /dev/pts/3 /dev/ttyUSB03 

Теперь запустите Сокат снова

socat -d -d pty,raw,echo=0 pty,raw,echo=0 

Теперь, используя следующий код, вы увидите 2 виртуальные порты:

 Enumeration portList = CommPortIdentifier.getPortIdentifiers();//this line was false 
     System.out.println(portList.hasMoreElements()); 

     while(portList.hasMoreElements()){ 
      System.out.println("Has more elements"); 
      CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement(); 
       if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { 
        System.out.println(portId.getName()); 
       } 
       else{ 
        System.out.println(portId.getName()); 
       } 
     } 

System.out:

true 
Has more elements 
/dev/ttyUSB03 
Has more elements 
/dev/ttyUSB02 
+0

Я выполнил вашу инструкцию, но все равно получаю 'false' в стартовой строке. неспособный к вводу. Удерживает больше элементов. –

+0

Вы используете ubuntu? Это виртуальная машина? –

+0

да ubuntu .. да я знаю выше команды, которые я запускал с терминала, но когда я использовал ваш следующий код, он возвращает 'false'. –

Смежные вопросы