使用Calimero for Java读写KNX系统的signed int值
Use Calimero for Java to read and write signed int values of KNX system
使用Calimero,我想在 KNX 系统中读取和写入带符号的 int 值。
我将 ProcessCommunicatorImpl 的 readUnsigned 和 write 方法用于无符号整数,但没有用于读取和写入有符号整数的方法。
例如这些类型我无法访问:
DataPoint 6.x(8 位 2 的补码)
DataPoint 8.x(16 位 2 的补码)
DataPoint 13.x(32 位 2 的补码)
唯一可用的方法是:
字符串读取(数据点)
字符串 readString(GroupAddress)
int readControl(组地址)
double readFloat(GroupAddress, boolean)
int readUnsigned(组地址,字符串)
bool readBool(GroupAddress)
而且我只有一个GroupAddress,没有Datapoint。
有谁知道我如何读写这些类型的数据点?
谢谢!
以 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。
当我有机会测试一个时,我会确认或调整这个答案。
使用Calimero,我想在 KNX 系统中读取和写入带符号的 int 值。
我将 ProcessCommunicatorImpl 的 readUnsigned 和 write 方法用于无符号整数,但没有用于读取和写入有符号整数的方法。
例如这些类型我无法访问:
DataPoint 6.x(8 位 2 的补码)
DataPoint 8.x(16 位 2 的补码)
DataPoint 13.x(32 位 2 的补码)
唯一可用的方法是:
字符串读取(数据点)
字符串 readString(GroupAddress)
int readControl(组地址)
double readFloat(GroupAddress, boolean)
int readUnsigned(组地址,字符串)
bool readBool(GroupAddress)
而且我只有一个GroupAddress,没有Datapoint。
有谁知道我如何读写这些类型的数据点?
谢谢!
以 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。
当我有机会测试一个时,我会确认或调整这个答案。