我正在为嵌入式ARM平台开发服务器应用程序。 ARM板连接到各种数字IO,ADC等,系统将一直轮询它们。它目前运行的是Linux内核,硬件接口开发为驱动程序。想法是有一个客户端应用程序可以连接到嵌入式设备并在更新时接收传感器数据,并向设备发出命令(关闭传感器1,重新启动传感器2等)。假设对传感器设备的访问是通过典型的ioctl完成的。
现在我的问题涉及运行在嵌入式设备上的此服务器应用程序的设计/架构。起初,我考虑使用类似libevent或libev的轻量级C事件处理库。应用程序将优先处理传感器轮询事件(然后在轮询完成后将信息发送给客户端),并在接收到客户端命令时进行处理(通过典型的TCP套接字)。服务器通常只有一个连接,但可能最多有十几个连接,而不是像成千上万的连接那样。这是设计这样东西的最佳方法吗?在我列出的两个事件处理库中,哪一个更适合嵌入式应用程序,还是有其他替代方案?
另一个考虑中的方法是多线程应用程序,其中传感器轮询在具有优先级/阻塞线程的情况下完成,该线程读取感官数据,每个客户端连接在单独的线程中处理。感官数据被更新到某种缓冲区/数据结构中,连接线程处理将数据发送到客户端并处理客户端命令(我想您仍然需要这些线程中的某种事件循环来监视传入的命令)。是否有任何库或典型软件包可用于简化设计此类应用程序,还是必须从头开始?
你会如何设计我所要实现的内容?
现在我的问题涉及运行在嵌入式设备上的此服务器应用程序的设计/架构。起初,我考虑使用类似libevent或libev的轻量级C事件处理库。应用程序将优先处理传感器轮询事件(然后在轮询完成后将信息发送给客户端),并在接收到客户端命令时进行处理(通过典型的TCP套接字)。服务器通常只有一个连接,但可能最多有十几个连接,而不是像成千上万的连接那样。这是设计这样东西的最佳方法吗?在我列出的两个事件处理库中,哪一个更适合嵌入式应用程序,还是有其他替代方案?
另一个考虑中的方法是多线程应用程序,其中传感器轮询在具有优先级/阻塞线程的情况下完成,该线程读取感官数据,每个客户端连接在单独的线程中处理。感官数据被更新到某种缓冲区/数据结构中,连接线程处理将数据发送到客户端并处理客户端命令(我想您仍然需要这些线程中的某种事件循环来监视传入的命令)。是否有任何库或典型软件包可用于简化设计此类应用程序,还是必须从头开始?
你会如何设计我所要实现的内容?