我正在构建一个带有自己的CPU(AVR Mega8)的小型设备,它应该连接到PC.假设已完成物理连接和字节传递,那么在这些字节之上使用的最佳协议是什么?计算机需要能够在设备上设置某些电压,并回读某些其他电压.
目前,我正在考虑一个完全由主机驱动的同步协议:计算机发送请求,嵌入式CPU应答.还有其他想法吗?
对于客户端 - 服务器架构和同步协议,有很多要说的.简单和强大,开始.如果速度不是问题,您可以考虑使用紧凑的,人类可读的协议来帮助调试.我正在思考调制解调器AT命令:"唤醒"序列后跟set/get命令,后跟一个终结符.
Host --> [V02?] // Request voltage #2 AVR --> [V02=2.34] // Reply with voltage #2 Host --> [V06=3.12] // Set voltage #6 AVR --> [V06=3.15] // Reply with voltage #6
如果它没有看到结束括号,则每一方都可能超时,并且它们会在下一个打开的括号上重新同步,这不会出现在消息本身中.
根据速度和可靠性要求,您可以将命令编码为一个或两个字节并添加校验和.
用实际电压回复总是一个好主意,而不是简单地回显命令,因为它节省了后续的读操作.
如果需要调试,还可以帮助定义错误消息.
Modbus可能就是你想要的.它专为您所遇到的问题而设计.有很多代码/工具,遵守标准可能意味着以后可以轻松重用.它还支持人类可读的ASCII,因此它仍然易于理解/测试.
有关Windows和嵌入式源,请参阅FreeModBus.
我的投票是为了人类可读.
但是如果你使用二进制文件,请尝试在开头添加一个标头字节来标记数据包的开头.串口协议不同步,我总是运气不好.标题字节允许嵌入式系统与PC重新同步.另外,最后添加校验和.