2011-06-27 85 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