我用静电除尘器-以色列国防军为ESP32编写了一个CAN总线记录器.
目前,这只是一个主程序与一个循环。在该循环中,数据从CAN总线接收器读取并写入SD卡上的一个日志文件。
现在,我还想从UART串口接收数据。这些数据也应该写到同一个SD卡上的同一个日志文件中。
。
到目前为止,我还不确定波特率。但是UART的数据将比CAN总线的数据少得多。因此,可能有10或100条来自CAN总线的日志文件行,然后是UART的1行日志文件行。
这个问题是关于我是否应该使用带有多个任务的FreeRTOS来实现这个或仅仅一个循环的原则。直到现在,我认为一个循环更容易,更好,因为然后,我准确地控制发生了什么,以哪个顺序。这并不复杂,只有几行。但很明显,如果我的想法有意义的话,我会在这里征求专家的意见。
发布于 2019-12-09 11:35:13
您可以通过一个主循环完成所有的日志记录,但是添加UART的日志记录肯定会超过几行简单的代码。当所有东西都在一个主循环中时,您必须手动处理
所有这些都不是不可能的,但它不仅仅是“现有循环中的几行”。
另一方面,如果使用多线程操作系统(如FreeRTOS ),则可以为每个协议和SD卡的写入创建一个单独的任务。如果您使到写入任务的通信是原子化的(日志行的所有信息都是一次传递的),那么其他任务可以只关注记录该特定协议的技巧。虽然现在还需要做更多的工作,但是添加第三个协议将再次是“几行”。
https://softwareengineering.stackexchange.com/questions/402246
复制相似问题