我正在研究使用rs232(通过USB连接的rs232)连接到PC的嵌入式设备。
我正在考虑开发自己的协议:
<MAGIC><LENGTH><BINARY DATA><CRC>
但我不想重新发明轮子。
请注意:我正在考虑相当受限的设备:4kb的RAM,没有内核,也没有标准的C lib。
你能想到一个标准的方法吗(也许是开源库)?
如果您编写自己的解决方案,您是否有最佳实践?
更新 请重新阅读问题。我不应该要求图书馆,而是要求良好做法。
答案 0 :(得分:3)
对于类似这样的东西,当你有一个现有的解决方案在你的设备上工作时,重新发明轮子会更容易。
void buffer_packet(unsigned char rx_byte)
{
static unsigned char byte_count = 0;
static unsigned char packet[8];
packet[byte_count++] = rx_byte;
if (byte_count == 8)
{
unsigned char crc = calculate_crc(packet, 8);
write_uart(0x55);
write_uart(8);
while (byte_count--)
{
write_uart(packet[7 - byte_count]);
}
write_uart(crc);
}
}
或许我低估了你的问题。如果您正在寻找如何在微控制器数据表中生成RS232位。
答案 1 :(得分:3)
有关简单协议的详细信息,请参阅this answer I gave to a very similar question。
回应您的具体要点:
答案 2 :(得分:0)
关于I / O原语之外的唯一事情是CRC计算。有一篇精彩的文章,代码为here。