我需要(设计?)一种协议,用于微处理器驱动的数据记录仪和PC(或类似设备)之间通过串行连接进行通信。没有控制线,设备/PC唯一知道它们是否连接的方式是通过接收到的数据。连接可能随时中断和重新建立。串行连接是全双工的。(8n1)
问题在于使用什么样的数据包、握手代码或类似内容。由于微处理器的能力极其有限,因此协议需要尽可能简单。但数据记录仪将具有许多功能,例如日志调度、日志下载、设置采样率等,这些功能可能同时处于活动状态。
我的臃肿版本如下:对于数据记录仪和PC,使用固定的16字节数据包大小,带有简单的1字节校验和,可能在数据包开头/结尾加入0x00字节以简化数据包识别,并使用一个字节表示数据包中的数据类型(命令/设置/日志数据/实时数据等)。为了同步,PC可以发送一个唯一的“hello/reset”数据包(例如全部为零),当设备检测到后,将返回以确认同步。
我欢迎任何关于这种方法的评论和其他建议以及一般性观察。
问题在于使用什么样的数据包、握手代码或类似内容。由于微处理器的能力极其有限,因此协议需要尽可能简单。但数据记录仪将具有许多功能,例如日志调度、日志下载、设置采样率等,这些功能可能同时处于活动状态。
我的臃肿版本如下:对于数据记录仪和PC,使用固定的16字节数据包大小,带有简单的1字节校验和,可能在数据包开头/结尾加入0x00字节以简化数据包识别,并使用一个字节表示数据包中的数据类型(命令/设置/日志数据/实时数据等)。为了同步,PC可以发送一个唯一的“hello/reset”数据包(例如全部为零),当设备检测到后,将返回以确认同步。
我欢迎任何关于这种方法的评论和其他建议以及一般性观察。
观察:我认为我需要自己制作,因为我需要它尽可能轻量级。我将从答案中建议的协议中取出一些部分,以及我发现的其他一些部分... Slip, PPP 和 HLDC。