如何从字符设备读取 USB 数据

如何从字符设备读取 USB 数据

我需要编写一个“字符设备”,从 arduino 读取数据并将该数据写入日志文件。我已经搜索这个主题几个小时了,我已经看到了几种实现此目的的方法,但它们不使用字符设备。

我知道这可以简单地使用 USB 设备中的 cat 来完成,但我正在为系统编程课程执行此操作,并且我需要使用字符设备。我发现的最接近的事情是去年的学生完成的类似作业,但他们打开和关闭/dev/ttyACM0文件,如下所示这个答案。

除此之外,还有其他正确的方法可以从字符设备文件中执行此操作吗?或者这是正确的方法吗?

答案1

如果您的任务是“编写字符设备”,那么这可能意味着您应该编写一个与设备通信的设备驱动程序(以您认为合适的任何方式)并将其自身呈现为与设备大致相似的东西/dev/ttyACM0

我相信你的老师可能已经想到了去年学生的解决方案,/dev/ttyACM0作为一种作弊。

在系统编程课程中,预期的解决方案可能是编写一个设备驱动程序,将 Arduino 定位在 USB 总线上,并创建一个字符设备。当设备在用户空间中打开时,驱动程序应将适当类型的 USB URB(阅读 Arduino 文档!)发送到 Arduino 并收集响应,然后以有用的形式(即使用 USB 协议)呈现响应中的数据框架剥离)供用户空间读取字符设备。

然后需要一个小的用户空间组件来打开设备并将输出写入文件(可能只是一个像设备出现时udev运行的规则)。cat /dev/YOURDEVICE > /var/log/YOURLOGFILE

但这是你应该问你的老师的事情。

相关内容