2010-10-10 81 views
3

我有一個Panatone Huey,一個顯示器校準探針(您連接到顯示器的設備,它給了你彩色讀數) - 我想從Python獲取設備讀數。通過Python訪問Panatone Huey

從來沒有寫過這樣的設備驅動程序,我不知道從哪裏開始。

我發現有兩個開源的C/C++項目,它們與Heuy-ArgyllCMSmcalib接口。

ArgyllCMS自帶spotread命令,該命令從設備返回讀數,雖然它只能用作交互式命令行工具,所以通過subprocess運行它不會(輕鬆)工作。

代碼ArgyllCMS使用與設備在spectro/huey.c

沒有嘗試過(只是剛剛發現它在寫這個問題)進行通信,但mcalib包含更少的代碼,主要是公正heuy.cpp - 但是它有一個令人擔憂的FIXME意見和不完整的方法,且該密碼號似乎被自動生成(無益的變量名)

似乎有三種選擇:

  • 修改spotread沒有任何交互式提示工作,通過subprocess
  • 把它創建一個基於C的Python模塊周圍huey.chuey.cpp
  • 重新實現使用的東西的界面類似PyUSB

作爲更熟悉Python ,我很想使用PyUSB,但是這將比使用Python C API包裝現有代碼更有效嗎?在任何一種C實現中,哪一個在PyUSB中不容易實現?

回答

2

鑑於spotread的存在,最簡單的(但可能不是最好的)方法是使用pexpect。它允許您與其他命令行程序進行交互。

+0

使用pexpect結束,完美地爲我所需要的。 [代碼在Github上](https://github.com/dbr/colourstuff/blob/79a477a610121039ebd814ef8944241c6179133b/lib/python/colourstuff/pyspotread.py#L161) – dbr 2011-08-21 10:02:46