2013-11-27 101 views
2

我最近有一個關於通過RS-232線與特定設備進行通信的項目。由於我的電腦沒有串口,因此我使用USB-to-RS232線作爲設備和計算機之間的中介。但我是Linux驅動程序的新手,所以我很難理解它。如何在Linux中通過USB-to-RS232線與設備進行通信?

我在Debian下使用了一個默認的工作驅動程序,我測試了硬件方面可以做的任何事情,並發現一切都很好。現在的情況就是如何向設備發送命令並在C中接收相應的數據。我已經閱讀了一些書籍,我想也許將USB端口映射爲tty設備會起作用。

我以正確的方式思考?我有點困惑。我下載了「minicom」的源代碼並閱讀了一些內容,但我仍然不太明白。 請幫我一把。

+1

正確安裝USB到RS232設備必須在Linux文件系統中創建COM端口設備,如/ dev/ttyS0。有了這個設備,你可以編寫標準的串口通信程序,無論這是真正的串口還是USB仿真都沒關係。 http://stackoverflow.com/questions/6947413/how-to-open-read-and-write-from-serial-port-in-c –

+0

@AlexFarber:實際上,USB-to-RS232設備通常被命名爲'的/ dev/ttyUSB0'。 – rodrigo

+0

@AlexFarber:非常感謝!我將參考這個問題。 – HuStmpHrrr

回答

3

您的USB-to-RS232可能使用FTDI芯片。 Linux中的想法是,任何添加到內核的驅動程序都可以通過操作/ dev文件系統中的條目來訪問。

在使用Linux(或任何UNIX變體)時,您需要知道的第一件事是每件事都是一個文件。所以,與Windows(其中一個製造商創建一個dll,告訴你要調用的函數),在Linux中使用標準的文件系統功能(注意要較真:我離開了爲簡單起見IOCTL)

所以,看在開發目錄中,並查看插入「導線」時出現的條目,以及將其取出時會出現什麼內容。正如羅德里戈所說,設備文件最有可能被稱爲ttyUSB0,但ttyS0並非不可能。

在你的程序,那麼你打開這個「文件」:fd = open("/dev/ttyUSB0", O_RDWR) 可以使用的功能writeread從COM端口發送和接收字符。當您完成關閉端口時,請使用close(fd)

要設置線路參數,請搜索miniosom源或termios結構的Linux文檔。

獲得Kurt Wall等人撰寫的「Linux編程釋放」一書。我認爲對於在Linux上運行的應用程序編寫C代碼的人是必須的。

好運。

+0

要確定將適配器分配給哪個設備名稱,您可以插入並查看最後一條消息[dmesg](http://en.wikipedia.org/wiki/Dmesg)會說。行參數也可以通過[stty](http://unixhelp.ed.ac.uk/CGI/man-cgi?stty)實用程序進行設置。 – yegorich

+1

「Posix操作系統的串行編程指南」是一個很好的參考:http://www.cmrr.umn.edu/~strupp/serial.html – Preston

相關問題