我有一個USB讀卡器,我需要從Lazarus/Delphi訪問。使用爲USB端口上的串行端口編寫的代碼
SDK編寫在VB6中,並與串行端口對話,所以在Windows中安裝驅動程序將USB端口映射到串行端口。
我想跳過這一步(例如,使相同的代碼在Linux中工作),但我不是很熟悉USB協議,所以我不知道它如何映射到串行。
VB6代碼分別發送每個字符(串口,這麼說),而USB接口允許發送數據流。
我仍然應該一個字節一個字節發送,或者只是concat命令併發送一次嗎?或者這個概念完全不同嗎?
我有一個USB讀卡器,我需要從Lazarus/Delphi訪問。使用爲USB端口上的串行端口編寫的代碼
SDK編寫在VB6中,並與串行端口對話,所以在Windows中安裝驅動程序將USB端口映射到串行端口。
我想跳過這一步(例如,使相同的代碼在Linux中工作),但我不是很熟悉USB協議,所以我不知道它如何映射到串行。
VB6代碼分別發送每個字符(串口,這麼說),而USB接口允許發送數據流。
我仍然應該一個字節一個字節發送,或者只是concat命令併發送一次嗎?或者這個概念完全不同嗎?
如果USB設備是CDC,那麼Linux會自動將其檢測爲串行通信設備。
在這種情況下,您可以打開/ dev/ttyACM0(或其他)並讀/寫它。無論哪種方式:如果USB設備被Linux檢測爲串行通信設備,只需將其打開(通過/ dev /),並像對待串口設備一樣對待它(除非您不必擔心配置波特率)。
並且沒有理由說明爲什麼你的Delphi代碼應該將數據發送到串行設備「一次一個字符」 - 你也應該可以在Delphi中編寫整個數據包。當我通過串口控制PTZ (Pan-tilt-zoom) dome cameras時,這就是我曾經做過的。如果在Linux中沒有將設備檢測爲串行端口,那麼只需打開已安裝的/ dev /設備並使用標準文件I/O(read()/ write()來訪問設備即可脫身。 )。再次,一次寫入整個命令。
USB協議與串口完全不同。聽起來最簡單的方法可能是在Linux上安裝合適的USB串行驅動程序,並使用相同的串行協議。有機會已經存在這樣一個驅動程序,與您的設備一起工作。
我猜想協議會完全不同,但由於有硬件適配器,我認爲它畢竟不能太差。 我會尋找一個Linux驅動程序,但是我仍然需要在Windows中編寫一個不同的驅動程序,所以這不是一個最佳的解決方案。 無論如何,thanx已經回覆,儘管它還不是我希望的答案。 :) – lyle 2009-07-13 04:31:03