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