我想在将arduino硬件连接到笔记本电脑时自动启动一个程序。
我知道这是有可能的,因为当我连接ipod时,Itunes就是这样工作的。
对不起,如果我的问题太广泛,但这是因为我缺乏对USB技术和驱动程序开发的认识。我将根据答案澄清我的问题。
我已经找到了dmesg (http://www.freebsd.org/doc/handbook/usb-disks.html)的主题,但在我的Mac OSX上,响应与示例不一样(我有很多代码签名错误,并且有很多输出信息)。我假设这取决于操作系统。
我的问题是是否有一种标准化的方法来检测USB端口,或者它是否依赖于操作系统(我的问题仅适用于unix家族)。
目前,我找到的解决方案是使用cron扫描tty。文件并检查它是否可以响应我的信号,如果可以,我启动我的程序。但这确实是一个肮脏的侵略性的解决方案。
我没有关于它的任何明确的文件。但那只是因为我不知道去哪里找文档。我知道usbconfig可以提供有关设备的信息,但它没有预先安装到mac机中。
那么,当硬件连接时,内核可以提供信号吗?我应该在哪里向电脑提供我的硬件资料?是特定于操作系统的吗?我在哪里可以找到我想要的文档(我还没有找到一个明确的研究方法)?
非常感谢你的帮助。感谢您的回复!
不幸的是,USB设备通知是特定于操作系统的。没有关于这个问题的官方标准,因此每个实现都是不同的,即使在各种类unix系统之间也是如此。
在Linux上,内核通过(IIRC)一个打开的netlink套接字通知udev
守护进程,然后udev
可以使用各种方法通知其余的用户空间。我相信FreeBSD使用devd
也是出于同样的目的——我希望OS X也会有自己的方法来做到这一点。
您可以使用libusb中的设备枚举工具构建一个跨平台的解决方案。它是跨平台的,并且绑定了多种编程语言,因此您应该能够创建一个小守护进程来完成此工作…