2016-08-30 219 views
2

我不希望在這裏有代碼,而是要了解那裏的人的知識。Pyserial - 嵌入式系統

我有一個python代碼 - 它使用pyserial與微控制器單元(MCU)進行串行通信。我的MCU是128byte RAM,並有內部存儲器。我使用ser.write命令寫入MCU和MCU,並用數據進行響應 - 我使用ser.read命令讀取它。

這裏的問題是 - 它工作出色,直到上週。從昨天開始 - 我只能在當天早上進行串行通信。一段時間後,當我讀取數據時,MCU用「無」消息進行響應。我第二天看到數據,它工作正常。奇怪的是 - 我安裝了超級終端,它正確地與MCU通信並讀取數據。所以我希望以前有人遇到過這個問題。

我在我的python程序中使用線程 - 只是爲了檢查是否與線程運行程序多次引起的問題。據我所知,線程只應該影響我的PC的內存,而不是MCU。

我重新啓動了我的電腦和MCU,我仍然有這個問題。

注意:Pycharm給了我在問題中提到的答案。如果我在IDLE中做同樣的事情 - 它給了我完全不同的答案

+0

'緩衝區溢出(pc)','沒有握手(pc)','沒有設備復位(pc + mcu(出錯))'這是你的問題?在MCU中寫一些代碼'檢查計算機是否活着(什麼是ACK)',如果不能讀取任何東西,則serial_write不是健康檢查。 – dsgdfg

回答

3

因此,最終你正在尋找如何調試這種時間依賴問題的建議。 不知何故,狀態會在計算機,Python進程或影響事物的微控制器的某處被創建。 (從理論上講,外部環境因素可能會影響事物,例如,如果你的微控制器有實時時鐘,那麼實際上可能會有一個時間依賴的錯誤,這比其他可能性要小)。

首先,請嘗試重新啓動您的python程序。如果解決了這些問題,那麼您知道在python或您的程序中創建了一些狀態,導致問題出現。 使用此信息更新您的問題。

如果這樣不能解決問題,請嘗試重新啓動計算機。如果這樣能解決問題,那麼你強烈懷疑計算機中的某些狀態正在影響事物。

如果這些都不起作用,請嘗試重新啓動微控制器。如果重新啓動PC和微控制器不能解決問題,請將其包含在您的問題中,因爲這是非常有趣的數據。能夠獲得創建國家

例子:

  • 流量控制。微控制器可以發送xoff,清除發送或清除發送或以其他方式表明它不需要數據

  • 在另一方向的流量控制:您的PC可以發送xoff,清除請求發送或以其他方式指示它不想要數據

  • 您的程序將pyserial置於混亂狀態 - 無論是因爲您的代碼或pyserial中的錯誤。

  • 串口配置 - 串口設置可能會變得混亂。

超級終端可以做各種事情來清除流量控制狀態或重新配置串口。

如果重新啓動python不能解決問題,線程是不太可能成爲你的問題。如果重新啓動python修復了線程問題可能是一個問題。

+0

我編輯了這個問題。你認爲在不使用串行通信一段時間後,狀態會被清除掉嗎?這可以是計算機特定的嗎?因爲微控制器運行良好 - 在我的同事使用他編寫的GUI的計算機上工作 –