python 串口助手 简书_python用pyserial读取串口问题解决
object is not callable
Error:
‘bool’ object is not callable
沒有返回值
正確代碼:
ser = serial.Serial('COM7', 115200, 8, 'N', 1)
flag = ser.is_open
原因:
調(diào)用屬性is_open時(shí)將其視為函數(shù),寫成 ser.is_open()。
關(guān)于is_open的功能及用法,可參見python庫 pyserial和serial的區(qū)別_Electrical_IT的博客-CSDN博客
解決:
將 is_open() 改成 is_open
其他鏈接:
could not open port
Error:
raise SerialException(“could not open port {!r}: {!r}”.format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port ‘COM7’: PermissionError(13, ‘拒絕訪問。’, None, 5)
正確代碼:
import serial // 安裝pyserial庫,但要import serial!!!
ser = serial.Serial('COM7', 115200, 8, 'N', 1)
flag = ser. is_open
if flag:
print('success\n')
ser.close()
else:
print('Open Error\n')
ser.close()
可能的原因:
端口號不正確,或其他串口參數(shù)設(shè)置不正確
python庫安裝的不正確,調(diào)用時(shí)不正確
沒有調(diào)用close函數(shù)關(guān)閉串口
沒有關(guān)閉其他調(diào)用串口的上位機(jī)或程序等
硬件外設(shè)上(如單片機(jī)開發(fā)板)的輸出模式是否調(diào)節(jié)到合適的位置
防火墻不允許pycharm或外設(shè)訪問
在程序調(diào)試時(shí),實(shí)際運(yùn)行的程序只打開了串口,而未執(zhí)行close(),所以串口不能重復(fù)打開,可關(guān)掉pycharm(或其他python運(yùn)行環(huán)境),重新打開再運(yùn)行
解決:
在設(shè)備管理器查看端口號(注意,設(shè)備管理器查找的端口號處右鍵“屬性”->“端口設(shè)置”,此處的波特率等不是真實(shí)的波特率)
將外設(shè)模式設(shè)為debug狀態(tài)的前提下,在調(diào)試環(huán)境(如eclipse)打開debug并全速運(yùn)行
在XOM等串口調(diào)試助手上確認(rèn)串口可以打開,確認(rèn)波特率設(shè)置正確,串口傳回?cái)?shù)據(jù)正常,根據(jù)實(shí)際情況修改Serial()參數(shù)
在pycharm中安裝pyserial庫(注意,不是在Windows的cmd窗口),卸載serial庫(若有的話)
關(guān)閉其他訪問串口的上位機(jī)或調(diào)試助手
在程序結(jié)束前要記得關(guān)閉串口(調(diào)用close()函數(shù))
打開控制面板-> 系統(tǒng)和安全-> 允許應(yīng)用通過防火墻,找到外設(shè)的名字和pycharm的名字,將“專用”和“公用”的框都√打勾
重新run一下python程序
若均無果,拔掉設(shè)備,關(guān)掉pycharm(或其他python運(yùn)行環(huán)境),重新連接電腦,重新打開python環(huán)境,再運(yùn)行再試
注意:
庫要在pycharm-> File-> Settings-> Project-> Project Interpreter中點(diǎn)擊加號,搜索pyserial進(jìn)行安裝,不要安裝serial,也不要在Windows的命令串口pip install。
要先用串口調(diào)試助手把參數(shù)確認(rèn)好,不然很難排除參數(shù)問題。波特率可能不是一般的標(biāo)準(zhǔn)波特率,除了50、75、110、134、150、200、300、600、1200、1800、2400、4800、9600、19200、38400、57600、115200以外,還要嘗試230400、460800、500000、576000、921600、1000000、1152000、1500000、2000000、2500000、3000000、3500000、4000000。
程序末尾要加ser.close(),ser是自己定義的,參考上面的正確程序示范,靈活編寫程序。close()就是立即關(guān)閉串口的,沒有close()可能會引發(fā)其他訪問問題。
對于較高版本的pyserial庫,一般serial.Serial()會自動調(diào)用open()函數(shù)開啟串口。有些版本要自己調(diào)用open()來打開串口。
其他鏈接:
本文地址:https://blog.csdn.net/Electrical_IT/article/details/107221567
如您對本文有疑問或者有任何想說的,請點(diǎn)擊進(jìn)行留言回復(fù),萬千網(wǎng)友為您解惑!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python 串口助手 简书_python用pyserial读取串口问题解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言判断闰年_C语言1博客作业06 -
- 下一篇: python相对路径下的shell_sh