我的一端有 android 平台,另一端有 arduino ,通过串行连接。一切正常,但在某些情况下,arduino会重新启动并在重新启动到串行时导致未知字符流。
这是一个串行日志,而 arduino 正在重启:
Z“&安培; OZ和B F cd :{ t > + 2 ~ 。 RDD ^ ..乙ڮ2 TZ:,RAڢRCK ˡ 。-N ^ b ^
问题是,如果回复格式错误,如何查看 android 结尾?
答案 0 :(得分:1)
你应该添加一些"框架"到你的消息。 CR / LF还不够。
例如,提出一个特殊的"序言"在前面,并在Android端观看它。选择消息中不会出现的内容("有效负载")。并选择在重启时显示的随机字符中不太可能出现的内容,这些内容很长。
您也可以在最后放置CRC。 "弗莱彻"很容易。
答案 1 :(得分:0)
我最终使用这样的简单解决方案:
private String filterData(String receivedStr) {
if (receivedStr.contains(RECV_HEADER) && receivedStr.contains(mReadRules.RECV_END)) {
int header_pos = receivedStr.indexOf(RECV_HEADER);
int crc_pos = receivedStr.indexOf(RECV_END);
return receivedStr.substring(header_pos, crc_pos);
} else {
return null;
}
}
如果消息包含格式错误的数据,它也会提取消息。