在Mac上使用Python进行USB驱动开发
我想用Python在Mac上写一个驱动程序,跟我的Suunto t3手表通信。我的日常工作是用C#做一些基础的网页开发,所以我对Python和在Mac上开发的了解不多。
你能给我一些建议,告诉我一般来说如何开始做驱动开发,然后再具体讲讲在Mac上该怎么做吗?比如,怎么简单地查看发送到设备的数据?我已经安装好了Python 2.5(通过MacPorts)。
2 个回答
如果手表支持像HID或串行通信这样的标准USB设备类规范,操作系统中可能已经内置了适用于它的Mac驱动程序。否则,你需要从以下三种来源获取与设备通信所需的厂商命令信息:制造商;逆向工程Windows驱动程序使用的协议;或者从已经逆向工程该协议以支持Linux或BSD设备的其他人那里获取。
USB是一种基于数据包的总线,了解各种交易类型非常重要。阅读USB规范是个不错的起点。
你可以使用USB总线分析仪查看传输到设备的数据,这对于爱好者来说可能比较贵,但对于大多数从事USB开发的公司来说是可以接受的。例如,Catalyst Conquest的价格是1199美元。另一个知名制造商是LeCroy(以前叫CATC)。还有一些软件USB分析仪可以接入操作系统的USB堆栈,但它们可能无法显示总线上的所有流量,可靠性也可能不如硬件分析仪。
我不是Mac专家,所以这一段你可以适当参考:苹果有一个叫做I/O Kit的驱动开发工具包,听说你需要用C++来编写驱动程序,除非他们还有其他用户模式的驱动框架。如果你用Python来写,可能更像是一个与其他(苹果的?)通用USB驱动程序接口的Python库。
Mac电脑本身就有支持USB的基础设施,所以你需要一个可以利用这些功能的Python库。如果你的Python项目需要串口支持,不管是USB、RS-232还是GPIB,我推荐你使用SourceForge上的PyVisa库。你可以查看这个链接:http://pyvisa.sourceforge.net/.
如果你的设备没有VISA驱动程序,那你就得直接处理USB系统。你可以在SourceForge上找到另一个库来帮你:http://pyusb.berlios.de/