2016-10-03 36 views
2

我有一個微軟Surface Book,我已經雙啓動了Linux Mint。我正在編寫一個程序,需要從串口讀取數據,但我的串行端口似乎沒有工作。 Mint和Windows的行爲是一致的(通過Cygwin完成測試)。它會在插入設備的前2-5秒獲取一些數據(通過屏幕查看數據,如果我只是使用pyserial打印來自串行端口的數據,則會發生同樣的事情),然後什麼都不會。串行端口不能在Surface Book上工作

會發生什麼情況?我認爲我已經將問題隔離到了串行端口 - Surface Book有2個USB端口,兩者都發生同樣的事情,我測試了我在其他兩臺計算機上插入的硬件(一臺Linux和一個Mac OS),並且它們都能正常工作。

+0

什麼是硬件適配器USB到串口?這些驅動程序很重要。我用基於FTDI的適配器運氣最好。 – Phil

+0

*「我正在編寫一個程序...」 - - 所以你認爲這是一個硬件問題,而不是懷疑你的新代碼? – sawdust

+0

@sawdust是的,因爲正如我所說我在屏幕上測試它,它的工作方式與我的代碼一樣,並且在朋友的筆記本電腦上運行同樣的測試,屏幕效果很好。此外,我的代碼在該筆記本電腦上工作正常(另有2人) – James

回答

1

我最終得到在保修期內更換了一個不相關的問題,幾個月後的計算機,你怎麼知道,在新計算機上的串行端口工作正常。這表明某種硬件問題,因爲這個問題在操作系統中持續存在。

1

您的MS Surface看起來有一個黃色三角形感嘆號圖標(通過適配器圖標),無需安裝/下載任何驅動程序。設備狀態框窗口中的屬性說This device cannot start. (Code 10)A device which does not exist was specified。對?

如果是這樣,您應該等待MS的更新。這是臭名昭着的問題。

+0

這並不回答這個問題 - 對不起,如果它不清楚,但我在Surface Book上雙啓動Windows和Linux Mint。因此,這個問題不太可能成爲Windows驅動程序問題。 – James

0

也許這將幫助:

看到串口通訊Arduino的例子 - 谷歌搜索:

  • Arduino的串行C++
  • Arduino的串行C#
  • Arduino的串行Linux編程

重點是要正確打開端口,你需要打開一個文件,而不是一個端口。而不是用通常的C - 彙編寫入端口代碼。


您使用的是無意中買了假貨USB轉串口線用假PL2303芯片 另一種選擇,那麼你需要安裝舊版本的驅動程序。 搜索在谷歌:

假PL2303 +您的操作系統名稱:

安裝驅動程序假PL2303窗口10


另一種選擇是,也許它節約能源,因爲它認爲它是未使用的關閉端口。

在windows>設備管理器>設備的屬性 - 通常是USB根集線器>電源管理 - 允許計算機關閉此設備以節省電源 - 取消選中它。

https://superuser.com/questions/408683/why-my-usb-mouse-gets-suspended-after-3-seconds-of-inactivity

https://blogs.msdn.microsoft.com/usbcoreblog/2013/11/08/help-after-installing-windows-8-1-my-usb-device-doesnt-charge-or-it-disconnects-and-reconnects-frequently/


也,你可以看看在Windows事件 - 看看會發生什麼。通常,像這樣的故障在事件日誌中被註冊。


一個不太可能的選擇是消耗太多電流,就像短路。器件保護電路關閉芯片。也可能它沒有這樣的電路。一種可能性是嘗試使用外部供電集線器。


最有可能的,這些是節電機制

+0

如上所述,我使用的設備在除我自己以外的計算機上使用相同的方法。此外,這個問題在操作系統中仍然存在 – James

0

我遇到了同樣的問題 - 在另一個網站上遇到了解決方案。 Surface Book上的USB 3端口與Com Port不兼容,但通過便宜的USB集線器運行該設備可立即解決我的問題,並立即被Arduino IDE識別