检查RS232响应是否包含格式错误的字符

时间:2015-12-05 17:11:42

标签: android arduino serial-port

我的一端有 android 平台,另一端有 arduino ,通过串行连接。一切正常,但在某些情况下,arduino会重新启动并在重新启动到串行时导致未知字符流。

这是一个串行日志,而 arduino 正在重启:

  

Z“&安培; OZ和B    F cd :{ t > + 2 ~ 。 RDD ^ ..乙ڮ2 TZ:,RAڢRCK ˡ 。-N ^ b ^

问题是,如果回复格式错误,如何查看 android 结尾?

2 个答案:

答案 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;
    }
}

如果消息包含格式错误的数据,它也会提取消息。