Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Работа с com-портом и не только..


Автор: alon4ik 12.9.2009, 12:37
Добрый день.
Вобщем, стоит такая задача. Необходимо разработать программку, выполняющую функцию такого себе менеджера. Суть в следующем. Программа запускается автоматически при старте ОС (ХР). Она постоянно прослушивает com-порт. Если пришел сигнал - она запускает на определенное время приложение (обычный ехе-файл). После завершает приложение и снова начинает прослушивать порт.  В порт подключено устройство, которое, собственно, и посылает сигнал. 
Также программа должна посылать сигнал на порт и то устройство должно реагировать. Как запускать ехе-программу из java-программы и как её завершать я знаю. По работе с ком-портом почитать еще надо будет, не думаю, что там не сильно сложно. Вопрос в следующем. 
1. Как считаете, насколько стабильной будет данная система? С точки зрения постоянного перезапуска программ.
2. Какие мне прийдется считывать сигналы с ком-порта, и в каком виде посылать?
3. Самый важный вопрос - вот то устройство. Должно выполнять простую функцию: на нем замкнули два проводка - постал сигнал на порт и наоборот, если пришел сигнал - замкнуть два проводка. Как его реализовать, может кто-то сталкивался? 
Спасибо.

Автор: korotin 12.9.2009, 23:39
Помогу чем смогу, если еще ищите, с помощью чего реализовать считывание тогда читайте:

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

RXTXcomm
вот поглядите тут: http://rxtx.qbang.org/wiki/index.php/Examples     http://rxtx.qbang.org

там найдете все о настройках и примеры...

вот, например, класс формирующий список портов:

Код

import gnu.io.*;
import java.util.ArrayList;



public class ListPort {

   //список портов...
    private static ArrayList<String> listPort = new ArrayList<String>();

    public ListPort() {
        ListPort.listPorts();
    }

    //метод формирует список свободных,
    //последовательных портов
    private static void listPorts() {
        java.util.Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
        while (portEnum.hasMoreElements()) {
            CommPortIdentifier portIdentifier = (CommPortIdentifier) portEnum.nextElement();
            String namePort = portIdentifier.getName();

            //только COM порты....
            if(namePort.startsWith("COM")){
                listPort.add(namePort);
            }
        }
    }

    public static ArrayList<String> getListPort(){
        return ListPort.listPort;
    }

}



А интерфейс SerialPortEventListener, есть слушатель, который реагирует на поток данных с порта...


В общем, возможно с этим вы разобрались, но на всякий случай, я привел этот пример....

Автор: alon4ik 13.9.2009, 12:26
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)