作者pl132 (pl132)
看板Python
標題[問題]python可以作到跟終端機軟體一樣的事嗎?
時間Mon Nov 20 22:27:24 2017
各位版上的前輩好
小弟是最近開始在學習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