Я должен получить ID из сокета, но этот код не дает правильный. Может кто-нибудь сказать мне, что не так в моем коде? (см. ниже для получения дополнительной информации)
for (int i = 0; i < numberOfSRecords; i++) {
socketReader.read(cbuf, 0, 4);
String Param_Codes_In_HEX =
Integer.toHexString(0x000000ff & cbuf[2]) +
Integer.toHexString(0x000000ff & cbuf[1]) +
Integer.toHexString(0x000000ff & cbuf[0]);
System.out.println("Param_Codes_In_HEX: "+Param_Codes_In_HEX);
int paramCode = Integer.parseInt(Param_Codes_In_HEX, 16);
if ((0x000000ff & cbuf[3]) ==0) {
EnumParamCodes enumParamCode =
EnumConverterUtil.getEnumFor(EnumParamCodes.class, paramCode);
System.out.println("Param_code " + paramCode + ": " + enumParamCode);
}
else if((0x000000ff & cbuf[3]) ==64)
{
paramCode = 0x0000ffff & paramCode ;
EnumParamCodes enumParamCode = EnumConverterUtil.getEnumFor(EnumParamCodes.class, paramCode);
System.out.println("Param_code " + paramCode + ": " + enumParamCode);
}
else if ((0x000000ff & cbuf[3]) ==128) {
paramCode = 0x00ffffff & paramCode ;
EnumAlarm enumParamCodeAlarm = EnumConverterUtil.getEnumFor(EnumAlarm.class, paramCode);
System.out.println("Param_code " + paramCode + ": " + enumParamCodeAlarm);
}
else{
System.out.println("Error in the body of message");
}
}
Примечание:
• Для числовых и перечислительных параметров (ActualValue)
Param_code соответствует идентификатору в разделе Parameters
• Для числовых и перечислительных параметров (SetValue)
Param_code соответствует 0x40000000 + идентификатор в параметрах
раздел
• Для параметров тревоги, Param_code соответствует 0x80000000
+ идентификатор в разделе параметров