[問題]python可以作到跟終端機軟體一樣的事嗎?

作者: pl132 (pl132)   2017-11-20 22:27:24
各位版上的前輩好
小弟是最近開始在學習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之類的軟體比較方便?
作者: kenduest (小州)   2017-11-20 23:52:00
上面回文是說 pyserial 內 write() 呼叫使用部分
作者: pl132 (pl132)   2017-11-20 23:41:00
想問一下有人用python去作跟終端機軟體一樣的事嗎?請問是後面要加\r\n嗎?print(dwa100.query("sd\r\n"))是這樣子嗎?
作者: kenduest (小州)   2017-11-20 23:35:00
你的 CR 與 LF 字元沒送, 沒 enter 的話命令沒執行
作者: pl132 (pl132)   2017-11-21 08:00:00
那如果是用pyvisa呢?請問一樣要加嗎?請問CR與LR字元是指/r和/n嗎?還是^M?
作者: kenduest (小州)   2017-11-21 14:40:00
CR ==> \r , LF ==> \n剩餘就先自己測試一下就可以知道情況
作者: asglay (收收收尾)   2017-11-25 10:24:00
pyvisa可以啊 先前才用來跟示波器溝通還有截圖你要先確認你有成功開啟resource 而且你是com5的話 resource name應該會是ASRL5 建議先看一下pyvisa的document

Links booklink

Contact Us: admin [ a t ] ucptt.com