我正在尝试从套接字连接中读取数据,并试图弄清楚如何在STX和ETX字符/整数之间获取数据。
响应的结构为STX SEQ DATA ETX LRC。我需要阅读STX和ETX之间的所有内容,而忽略校验和(LRC)。
到目前为止,我已经知道了:
StringBuilder sb = new StringBuilder();
try {
int c;
int prevC = 0;
while ((c = in.read()) != -1) {
if(c == 3){
break;
}else if(c == 6){
sb.append(MathOperations.convertIntToHex(c));
break;
}
else{
sb.append(MathOperations.convertIntToHex(c));
}
}
} catch (Exception e) {
LOGGER.error("Error reading loop socket ({})", e.getMessage(), e);
}
String response = sb.toString();
LOGGER.info("Received response from remote server - data ({})",response);
return response;
我目前遇到的问题是LRC数据也附加到字符串。我如何摆脱它?有没有更优雅的方式来读取两者之间的数据?
c == 6用于检查从服务器接收到的请求的确认。
答案 0 :(得分:1)
我目前遇到的问题是LRC数据也附加到字符串。我如何摆脱它?
简单的答案是读取LRC的字节并将其丢弃。
是否有一种更优雅的方式仅读取两者之间的数据?
skipBytes(n)
方法将执行相同的操作。稍微更优雅...