Библиотека на Java

Платы Parcel-Core, Parcel-IN и Parcel-OUT управляются единой библиотекой, написанной на языке Java. Ее можно скачать, а также подключить при помощи Maven. При помощи этой библиотеки можно управлять выходными реле и транзисторами, а также считывать входящие цифровые и аналоговые сигналы.

Одни и те же входы платы могут быть цифровыми или аналоговыми, в зависимости от методов, через которые считывается их положение

Подключение библиотеки при помощи Maven

В pom.xml добавляем информацию о репозитории parcel


    <repositories>
        <repository>
            <id>parcel-releases</id>
            <name>Parcel Releases</name>
            <url>http://89.223.29.203:8081/nexus/content/repositories/parcel-releases/</url>
        </repository>
    </repositories>

Подключаем зависимость


    <dependency>
        <groupId>com.parcel</groupId>
        <artifactId>hard-drivers</artifactId>
        <version>1.1.11.Sensors</version>
    </dependency>

Использование библиотеки

Перед началом работы с платой требуется провести ее инициализацию. Обратите внимание: инициализация работы с входами и с выходами платы происходит по отдельности. Это позволяет использовать одни и те же методы для работы с разными платами

Работа с реле и транзисторными выходами-ключами

Инициализация управления реле


    String boardName = "boardName" //Имя платы, известно покупателю
    Commutator commutator = new Commutator(boardName);

    String connectionStatus = commutator.findPort();
    if(connectionStatus != null && !connectionStatus.equals("ERROR") {
        //Соединение с платой установлено, можно продолжать работу
    }
        

Простановка положения реле или выходного транзистора-ключа


    boolean turnedOn = true; //Положение: false - выключено, true - включено
    int codeNum = commutator.relayWrite(relayNum, turnedOn);    //codeNum возвращает код ошибки. Если он равен 0, положение проставлено успешно.
        

Работа с цифровыми и аналоговыми входами

Инициализация считывания входов


    String boardName = "boardName" //Имя платы, известно покупателю
    SensorReader sensorReader = new SensorReader(boardName);

    String connectionStatus = sensorReader.findPort();
    if(connectionStatus != null && !connectionStatus.equals("ERROR") {
        sensorReader.startRead();

        //Соединение с платой установлено, можно продолжать работу
    }
        

Считывание цифровых сигналов


    boolean[] pinStates = sensorReader.getSensorValues(); //Этот метод возвращает массив положений всех входов
        

Отслеживание входящего цифрового сигнала через событийную модель


    BoardStateChangeHandler handler = new BoardStateChangeHandler() {
        @Override
        public void onBoardStateChange(boolean[] pinStates) {
           //Этот хэндлер вызывается при любом изменении состояния пина платы
           //На вход приходит массив состояний всех пинов платы
        }
    };
    sensorReader.addBoardStateChangeHandler(handler);
        

Считывание аналоговых сигналов


    //Считывание всех входов сразу
    ArrayIntAns arrAns = sensorReader.analogRead();
    if(arrAns.getError() == 0) {
        int[] data = ans.getData();     //Возвращается массив значений от 0 до 1024. 1024 соответствует 5 вольтам
    }

    //Считывание входа по отдельности
    int pinNumber = 1; //Номер пина на плате
    IntAns ans = sensorReader.analogRead(pinNumber);
    if(ans.getError() == 0) {
        int value = ans.getData();  //Возвращается значение от 0 до 1024. 1024 соответствует 5 вольтам
    }
        

Считывание температуры


    int pinNumber = 1; //Номер пина на плате
    int r = 1000;   //Сопротивление датчика температуры в Ом
    IntAns ans = sensorReader.getTemp(pinNumber, r);
    if(ans.getError() == 0) {
        int value = ans.getData();  //На выходе - температура в градусах цельсия
    }
        

Коды ошибок при считывании входов

Метод ans.getError() или commutator.relayWrite(...) возвращает 0 при успешном завершении операции. В остальных случаях он возвращает код ошибки с платы

Код Ошибка
1 Ошибка инициализации порта
2 Ошибка проверки порта, ответ порта не соответствует протоколу
3 Ошибка передачи сообщения
4 Ошибка потока
5 Ошибка приема ответа
6 Не удалось дождаться ответа