Используйте Calimero для Java для чтения и записи значений int со знаком системы KNX - PullRequest
0 голосов
/ 02 июня 2018

Используя Calimero , я хочу читать и записывать значения int со знаком в системе KNX.

Я использую методы readUnsigned и write для ProcessCommunicatorImpl для неподписанных целых, но нет методов длячтение и запись подписанных значений.

Например, я не могу получить доступ к таким типам:
DataPoint 6.x (дополнение 8 бит 2)
DataPoint 8.x (дополнение 16 бит 2)
DataPoint 13.x (дополнение 32 бит 2)

Доступны только следующие методы:
Чтение строк (Datapoint)
Строка readString (GroupAddress)
int readControl (GroupAddress)
doublereadFloat (GroupAddress, логическое значение)
int readUnsigned (GroupAddress, String)
bool readBool (GroupAddress)

И у меня есть только GroupAddress, без Datapoint.


Кто-нибудь знает, как я могу читать и записывать эти типы точек данных?

Спасибо!

1 Ответ

0 голосов
/ 02 июня 2018

Используя комментарий zapl для вдохновения, я придумал этот код:

int getIntFrom8Bit2Complement(GroupAddress groupAddress) throws KNXException, InterruptedException {

    final Datapoint dp = new StateDP(groupAddress, "my datapoint "+groupAddress.toString());
    dp.setDPT(0, DPTXlator8BitSigned.DPT_VALUE_1_UCOUNT.getID());
    String result = processCommunicator.read(dp);
    try {
        return Integer.parseInt(result);
    } catch (NumberFormatException e) {
        throw new KNXException("Error Parsing 8 bit 2 complement result as int -- result = "+result);
    }
}

Я не уверен на 100% в разборе результата как int, но я не могу проверить, потому что я не проверяюу меня нет устройства KNX, которое отправит мне подписанное int.
Когда я получу возможность протестировать его, я подтвердлю или исправлю этот ответ.

...