我有一個通過USB連接的基於Arduino的設備。列表機器的串行端口
我想從我的Qt應用4檢測到它,使用QExtSerialPort
(或任何必要的),當已經插上。
如果這是不可能的,我想我能在某種程度上得到列表系統的端口名稱,並嘗試所有的搜索我的Arduino(我會實施某種形式的握手過程,以正確檢測它)。我在這種方法中擔心的是,如果我以不同的波特率發送某種握手信號,我不確定某個設備(例如打印機)是否會受到損壞。
所以,我真的不知道從哪裏開始。這將是最好的方法?我將如何實現它?
我有一個通過USB連接的基於Arduino的設備。列表機器的串行端口
我想從我的Qt應用4檢測到它,使用QExtSerialPort
(或任何必要的),當已經插上。
如果這是不可能的,我想我能在某種程度上得到列表系統的端口名稱,並嘗試所有的搜索我的Arduino(我會實施某種形式的握手過程,以正確檢測它)。我在這種方法中擔心的是,如果我以不同的波特率發送某種握手信號,我不確定某個設備(例如打印機)是否會受到損壞。
所以,我真的不知道從哪裏開始。這將是最好的方法?我將如何實現它?
我相信你可以在的Windows找到串行端口的列表中尋找到
HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM上
註冊表項
每個串口UNIX系統具有一個或多個與其關聯的設備文件(位於/ dev目錄中的文件):
串行編程System Port 1 Port 2
IRIX® /dev/ttyf1 /dev/ttyf2
HP-UX /dev/tty1p0 /dev/tty2p0
Solaris®/SunOS® /dev/ttya /dev/ttyb
Linux® /dev/ttyS0 /dev/ttyS1
Digital UNIX® /dev/tty01 /dev/tty02
更多細節POSIX系統here
由於您的設備是USB,UART的端口將在他的硬件某種conversor的仿效。所以首先你必須瞭解你的系統上使用了什麼驅動程序。
最常見的SERIAL-> USB轉換器使用PL2303/PL2301芯片,所以它會在/ dev上創建路徑,如果它是第一個設備,它將顯示爲「/ dev/ttyUSB0」,但您也可能會看到讀取proc路徑的列表(如「cat/proc/bus/usb/devices」)。 在Windows下,它通常會創建一個虛擬的「COM」,只需進入設備管理器並檢查端口。
當您確定硬件如何與您的系統對話時,您可以使用QExtSerialPort封裝系統API並與設備通話。
太硬和平臺特定,使用奇怪的Windows註冊表項或依賴Linux上的硬連線設備節點。
你是對的。獲取QextSerialPort或QSerialDevice(我在我的項目中聲明,因爲它已集成到Qt5中),請查看示例並簡單使用它。在這兩個庫中,你會得到一些端口枚舉類,它返回所有配置串口的列表。只有平臺/設備特定的設置需要手動完成(例如,在我當前的嵌入式項目中以半雙工模式獲取RS485),但「標準」問題完美地封裝在QIODevice實現中。
您可以像使用文件一樣使用QextSerialPort和QSerialDevice。打開它(而不是指定設備名稱的文件名,例如Windows上的「COM1」或Linux上的「/ dev/tty0」,具體取決於您的配置),然後像使用普通QFile,QBuffer ,從QIODevice繼承Qwhatever。
如果您在打開端口和溝通時遇到任何問題,請不要猶豫,問問! :)