51 lines
1.5 KiB
Java
51 lines
1.5 KiB
Java
package com.cbsd.client.parse;
|
||
|
||
import com.cbsd.client.parse.IParseDataInterface;
|
||
|
||
public class DigitalParser implements IParseDataInterface {
|
||
@Override
|
||
public String parsePhysicalFromData(int sn, byte[] sourceData, byte[] fieldData, String endian, String binStr) {
|
||
|
||
StringBuilder result = new StringBuilder();
|
||
if (fieldData.length == 1) {
|
||
byte b = fieldData[0];
|
||
String binary = byteToBinary(b);
|
||
for (int i = 0; i < binary.length(); i++) {
|
||
result.append("通道-");
|
||
result.append(i);
|
||
if (binary.charAt(i) == '1') {
|
||
result.append(" 高电平");
|
||
} else {
|
||
result.append(" 低电平");
|
||
}
|
||
result.append(",");
|
||
}
|
||
result.deleteCharAt(result.lastIndexOf(","));
|
||
}
|
||
return result.toString();
|
||
}
|
||
|
||
@Override
|
||
public String comment() {
|
||
return "数字信号解析";
|
||
}
|
||
|
||
/**
|
||
* 将byte转换为8位二进制字符串
|
||
*
|
||
* @param b 要转换的byte值
|
||
* @return 8位二进制字符串
|
||
*/
|
||
public static String byteToBinary(byte b) {
|
||
// 将byte转换为无符号整数,避免符号位扩展
|
||
int unsignedByte = b & 0xFF;
|
||
// 转换为二进制字符串
|
||
String binary = Integer.toBinaryString(unsignedByte);
|
||
// 确保结果是8位,不足的在前面补0
|
||
while (binary.length() < 8) {
|
||
binary = "0" + binary;
|
||
}
|
||
return binary;
|
||
}
|
||
}
|