2012-06-29 2 views
1

У меня есть требование, когда я должен читать потоки данных, поступающие на последовательный порт. Я использую API javax.comm для этого.Чтение данных из последовательного порта

Когда я пытаюсь перечислить порты, используя нижеприведенный код, я никогда не получаю список портов.

portList = CommPortIdentifier.getPortIdentifiers(); 
System.out.println("start: "+portList.hasMoreElements()); 

Он возвращает false.

Может ли кто-нибудь помочь мне, если мне что-то не хватает?


Мой порт PS2 не пришел в список. Есть ли другой способ перечислить порт PS2?

Мой полный код, как показано ниже,

while (portList.hasMoreElements()) { 
     portId = (CommPortIdentifier) portList.nextElement(); 
     System.out.println("portid: "+portId.getName()); 
    } 

выход

portid: COM1 
portid: COM3 
portid: LPT1 

Мой фактическое требование для чтения данных на USB-порту. Я столкнулся с проблемами с использованием JUSB, и это не сработало. Поэтому я решил подключиться к конвертеру USb и прочитать последовательный порт. Но на рынке нет такого конвертируемого.

Теперь, подумав о другой работе, я смог получить конвертер PS2 в usb. Было бы здорово, если бы вы могли помочь мне перечислять порт PS2 с использованием Java и читать/писать на него или предлагать некоторые API для них на платформе Windows.

Любая помощь в этом отношении высоко ценится.

+0

который javax.comm библиотека вы используете, и что ваша система? Я использую rxtx, и он работает хорошо. – Salil

+0

Я также использую rxtx, и это сработало и для меня. Недостатком была конфигурация в eclipse, связанная с файлом .dll, как описано в ссылке ниже, http://www.intellog.com/blog/?p=255 – Mayank

ответ

0

Пожалуйста, см: http://www.intellog.com/blog/?p=255 и http://www.coderanch.com/t/535173/Streams/java/CommPortIdentifier-getPortIdentifiers-empty (последний указывает на первый)

Oracle не предлагает двоичные файлы для окон (при условии, что вы на окнах): http://www.oracle.com/technetwork/java/index-jsp-141752.html

+0

Спасибо за полезную ссылку, это сработало. Я могу перечислить порты, подключенные к моей Системе. – Mayank

2

Взгляните RXTX. Затем вы можете использовать что-то вроде этого:

CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("/dev/tty1"); 
CommPort commPort = portIdentifier.open("owner-name", 2000); 
SerialPort serialport; 
if (commPort instanceof SerialPort) { 
    serialPort = (SerialPort)commPort; 
    serialPort.setSerialPortParams(rate, databits, stopbits, parity); 
} 
InputStream in = serialPort.getInputStream(); 
OutputStream out = serialPort.getOutputStream(); 
+0

Спасибо Ortang. Теперь я могу перечислить свой серийный порт. – Mayank

0

Я использую Ubuntu и мой компьютер не имеет последовательный/pararel порт, но мне нужно развивать на нем.

Вам необходимо имитировать эти порты в этом случае.

Мой ответ:

serial port identification with java on ubuntu

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