看板 Python 關於我們 聯絡資訊
各位版上的前輩好 小弟是最近開始在學習python的新手 由於工作上的需要想要試著用python去對RS232介面的終端機裝置輸出入資料 但是不管我使用pyserial也好或是pyvisa在讀出資料 都不會跟我在teraterm之類終端機回傳的訊息一樣 以下是我用終端機軟體所下command所讀到的訊息 https://imgur.com/w3R2nsg 可以看出我打一個sd會報錯 但是我用pyserial去打同樣的字卻會報出以下訊息 >>> ser = serial.Serial('COM5', 115200, timeout=1) >>> ser.write(str.encode("sd")) 2 >>> data = ser.readline() >>> print(data) b'sd' ================================= 如果我用pyvisa的話則是跳錯 import visa rm = visa.ResourceManager() dwa100=rm.open_resource('com5') print(dwa100.query("sd")) pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed. =================================== 想請教一下各位大大?我是不是哪邊搞錯了?還是python不適合用在這種開發環境? 是不是還是要用teraterm或是putty之類的軟體比較方便? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.3.48 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1511188047.A.AD5.html
kenduest: 你的 CR 與 LF 字元沒送, 沒 enter 的話命令沒執行 11/20 23:35
pl132: 想問一下有人用python去作跟終端機軟體一樣的事嗎? 11/20 23:41
pl132: 請問是後面要加\r\n嗎? 11/20 23:44
pl132: print(dwa100.query("sd\r\n")) 11/20 23:45
pl132: 是這樣子嗎? 11/20 23:45
kenduest: 上面回文是說 pyserial 內 write() 呼叫使用部分 11/20 23:52
pl132: 那如果是用pyvisa呢?請問一樣要加嗎? 11/21 08:00
pl132: 請問CR與LR字元是指/r和/n嗎?還是^M? 11/21 11:31
kenduest: CR ==> \r , LF ==> \n 11/21 14:40
kenduest: 剩餘就先自己測試一下就可以知道情況 11/21 14:40
asglay: pyvisa可以啊 先前才用來跟示波器溝通還有截圖 11/25 10:24
asglay: 你要先確認你有成功開啟resource 而且你是com5的話 reso 11/25 10:28
asglay: urce name應該會是ASRL5 建議先看一下pyvisa的document 11/25 10:28