2011-06-27 46 views
4

我已经在Python中编写了一个PRN生成器,我试图测试序列以验证它们。我有一个误码率测试器,但为了一切正常,我需要为它提供时钟数据。从USB端口获取二进制数据

是否有任何方法通过USB或串口将原始二进制数据从计算机中取出?我还没有找到任何能够做到这一点的Python模块,但是我使用的语言并不重要,所以如果这可以用不同的语言来实现,我可以使用它。

+0

您使用的是什么系统? 这里有一个相当好的主题,在这里的Linux: http://stackoverflow.com/questions/469243/how-can-i-listen-for-usb-device-inserted-events-in-linux-in-python 也许不是那么直白,你在寻找什么,但它可能会有用。 – Gandi

+0

我使用的是Windows,但我可以轻松切换到Linux,因为这只是一个测试。我的目标仅仅是避免使用微控制器向我的测试仪发送数据,因此解决方案无需针对特定平台。 – gwenger

回答

2

要从串口获取数据,请使用pyserial。要转换二进制数据,请使用struct模块。这些工具应该适用于Windows,Linux和Mac。也许,通过“原始数据”,OP意味着他想将串行端口用作无串行协议的DIO接口吗?这种类型的事情通常使用并行端口完成,并且使用pyserial中的pyParallel模块(假定其中一个具有并行端口)很容易且可行。我知道没有办法直接用串口来做这件事。

+0

对不起,我应该提到我正在使用pyserial。我知道如何从计算机的串口发送二进制数据,但是不包括会改变正在发送的数据的某种类型的数据包?我需要让串口发送完整的数据。 – gwenger

+1

seria.write可以发送一个字节,bytearray或一个str对象。通常人们将他们的二进制数据转换成一个字符串,这就是我推荐struct模块的原因。只是为了清楚,这是发送确切的,逐字节的数据,但只是将数据发送到字符串对象中的serial.write。 – tom10

+0

我一直在发送我的数据作为bytearrays,所以我知道我发送的是什么字节。问题是,RS-232标准需要启动和停止位。另外,我认为串行连接是小端的。因此,如果我将F0作为一个字节阵列发送,我会在示波器上看到5个高位,后面跟着5个低位(第一个和最后一个位分别是开始和结束,数据反转)。我需要的是找到某种方式来发送我的数据,而无需启动和停止位并更改字节序。 – gwenger