2010-06-25 138 views
0

我試圖通過串口與自制的卡交談,並因此使用pySerial。在超級終端中,一切正常。我可以這樣寫:通過pySerial發送命令的問題

$ audio on 

和音頻已啓用,但如果我用

ser = serial.Serial("COM1", 38400) 
ser.write("audio on\r\n") 

沒有任何反應。但是,我可以讀取傳入的數據,所以通信沒有問題。如果我將\ r \ n更改爲\ n或\ r,我也無濟於事。

編輯:有時我實際上得到的反饋:當發送完全相同的命令作爲超級終端的作品時沒有這樣的命令。該設置也與超級終端中的完全相同。

解決: 爲了使它工作,我必須發送一個和一個字符,並以\ r結束傳輸。

回答

2

獲取示波器(你有一個,對吧?)並觀察串行線路,每秒發送一個字符並查看示波器上的內容(將其設置爲在起始位上觸發)串行端口位的順序爲:開始,LSB,MSB,奇偶校驗,停止。

查看是否有不打通字符,或者如果有一個模式,另一種可能是,一切都做了真正出來的端口,您的板下降字符。

0

嘗試指定連接的其他參數(波特率除外),如位奇偶校驗(我記得還有其他的參數)。

我有pyserial同樣的問題,但那是兩年前(即我不記得我是如何解決它:()。

+0

在我的代碼中,我指定了端口,波特率,奇偶校驗和超時。我只寫了一個簡短的例子。不過,我確實看到我有時會得到一些迴應,但並非總是如此。這很奇怪。在發送消息之前,我也嘗試刷新輸出,但即使如此,我也得到完全不同的輸出。事實上,即使我發送的命令來自超級終端,我實際上也會從設備中收到'沒有這樣的命令'的消息。 – martiert 2010-06-25 12:07:09

0
  1. 三重檢查設備的波特率的確38400
  2. 三重檢查奇偶校驗,停止位等
  3. 要注意長距離串行傳輸信號衰減(可能不是你的問題)

如果以上所有結帳嘗試將字符串放入字節數組並通過寫入命令發送。只是一個猜測。

0

通過超級終端發送字符以您輸入的速度發送字符。通過pyserial發送字符,它們作爲連續流傳送。接收器(特別是在高波特率下)可能會降低它們,這取決於接收器的性質。另外,當你向解釋器發送命令時,你只需要\ r結束符(不包括\ n),(這是通常由hyperterm發送的全部內容)。但是,如果您只是顯示這些值,則可能需要\ n來生成新行。