看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《james999 (無傷大雅)》之銘言: : 開發平台(Platform): (Ex: Win10, Linux, ...) : Windows : 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) : MinGW 32bit : 最近在使用Qt的QSerialPort, : 考量到串列傳輸可能會有一種例外狀況產生-被拔起, : 所以在邏輯上有加入isOpen()的判斷, : 不過… 似乎只要Open過的話,isOpen()傳回的都是true, : 絲毫不管此SerialPort是否還在… : 請問有什麼方法能得知呢? 謝謝。 用這個 https://www.jianshu.com/p/74a665ad0a46 一般來說在掃你的設備是在插哪個usb的時候 會使用製造商的名字去掃 所以當你有usb設備變動的時候 就重掃 看那個製造商名字是不是還在 通常這樣就可以了 如果你傳輸是用timer定期去掃的話 我通常會有usb變動的時候就先停timer 有確認東西還在才重開timer -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.84.169 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1526043969.A.52B.html
uranusjr: QSerialPort 是 RS232 那種的, 不是 USB 05/11 23:44
我們用的是插USB孔的設備 然後用QSerialPort讀取 不知道是不是跟我們的不一樣 但目前專案這樣寫是OK的
lc85301: USB比serialport複雜多了 05/12 12:01
※ 編輯: MOONY135 (1.160.83.197), 05/12/2018 20:30:10
james999: 謝謝分享! 05/14 10:09
james999: 不過其實… 我沒有特定的設備,只是插個USB轉485 dongle 05/14 10:15
james999: 如果要用這個方法,可能統一採購的dongle要同一款就是XD 05/14 10:15
uranusjr: 用 USB-RS dongle 的話還有個方法是用 Windows API 掃 05/14 14:51
uranusjr: 你的 COMXX 設備還在不在, 不在就一定是被拔了 05/14 14:51
askacis: google WM_DEVICECHANGED qt 05/16 19:39