接着上面的代码继续就是在实例变量里面的系统状态中还有几个不同的状态如何显示到代码中,状态如下序号 字段 意义 1 0x01 位置1 2 0x02 位置2 3 0x03 位置3 4 0x04 位置4 5 0x05 中间过程 6 0x0A 导航开始
时间: 2024-03-17 16:40:42 浏览: 66
要在代码中显示这些状态,可以使用一个枚举类型。可以在 ProtocolData 类中定义一个名为 SystemState 的枚举类型,包括这些状态,并将实例变量 systemState 的类型改为 SystemState。例如:
```
public enum SystemState {
POSITION_1((byte) 0x01),
POSITION_2((byte) 0x02),
POSITION_3((byte) 0x03),
POSITION_4((byte) 0x04),
MIDDLE_PROCESS((byte) 0x05),
NAVIGATION_START((byte) 0x0A);
private byte value;
SystemState(byte value) {
this.value = value;
}
public byte getValue() {
return value;
}
}
public class ProtocolData {
// ...
private SystemState systemState;
// ...
public ProtocolData(int frameNumber, SystemState systemState, byte northProgress, float headingAngle, float pitchAngle, float rollAngle, float realTimeData) {
this.frameNumber = frameNumber;
this.systemState = systemState;
this.northProgress = northProgress;
this.headingAngle = headingAngle;
this.pitchAngle = pitchAngle;
this.rollAngle = rollAngle;
this.realTimeData = realTimeData;
}
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append(PROTOCOL_HEADER);
builder.append(frameNumber).append(PROTOCOL_SEPARATOR);
builder.append(systemState.getValue()).append(PROTOCOL_SEPARATOR);
builder.append(northProgress).append(PROTOCOL_SEPARATOR);
builder.append(headingAngle).append(PROTOCOL_SEPARATOR);
builder.append(pitchAngle).append(PROTOCOL_SEPARATOR);
builder.append(rollAngle).append(PROTOCOL_SEPARATOR);
builder.append(realTimeData).append(PROTOCOL_NEWLINE);
return builder.toString();
}
}
```
这样,当创建 ProtocolData 对象时,可以指定 SystemState 类型的系统状态值,而不是使用字节类型的值。在 toString 方法中,可以使用 systemState.getValue() 方法获取字节值并添加到字符串中。
阅读全文