
pythonrial函數_PythonSerial串?基本操作(收發數據)
1、需要模塊以及測試?具
模塊名:pyrial
使?命令下載:python -m pip install pyrial
串?調試?具:
2、導?模塊
import rial
3、打開串?
直接通過new?個Serial()的實例即可打開
返回實例
# encoding=utf-8
import rial
if __name__ == '__main__':
com = ('COM3', 115200)
print com
運?結果
Serial(port='COM3', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=Fal, rtscts=Fal,
dsrdtr=Fal)
4、發送數據
函數名write()
返回值為發送成功的字節數
# encoding=utf-8
import rial
if __name__ == '__main__':
com = ('COM3', 115200)
success_bytes = ('This is data for test')
print success_bytes
運?結果
21
串??具界?
5、接收數據(接收固定長度數據)
函數名為read(size=1)
接收size單位的字符,是阻塞的,不接收到就?直等待接收,除?設置了超時時間(未設置該?例)
# encoding=utf-8
import rial
if __name__ == '__main__':
com = ('COM3', 115200)
data = (10)
print data
運?結果
123456789a
串??具界?
6、接收數據(超時時間內?直接收)
函數名為read(size=1)
參數為接收的長度,默認為1,?般傳?inWaiting(),它表?監測接收的字符串長度
配合While可以?直接收
# encoding=utf-8
import rial
import time
if __name__ == '__main__':
com = ('COM3', 115200)
over_time = 30
start_time = ()
while True:
end_time = ()
if end_time - start_time < over_time:
data = (ing())
data = str(data)
if data != '':
print data
運?結果
111
222
aaa
bbb
1a2b3c4d
串??具界?
7、封裝為類
# -*- encoding=utf-8 -*-
import rial
import time
import WriteLog
class COM:
def __init__(lf, port, baud):
= port
= int(baud)
_com = None
= og('ITC_')
_data_flag = True
_time_data = ''
# return real time data form com
def get_real_time_data(lf):
return _time_data
def clear_real_time_data(lf):
_time_data = ''
# t flag to receive data or not
def t_get_data_flag(lf, get_data_flag):
_data_flag = get_data_flag
def open(lf):
try:
_com = (, )
except Exception as e:
('Open com fail:{}/{}'.format(, ))
('Exception:{}'.format(e))
def clo(lf):
if _com is not None and _:
_()
def nd_data(lf, data):
if _com is None:
()
success_bytes = _(('UTF-8'))
return success_bytes
def get_data(lf, over_time=30):
all_data = ''
if _com is None:
()
start_time = ()
while True:
end_time = ()
if end_time - start_time < over_time and _data_flag:
data = _(_ing())
# data = _() # read 1 size
data = str(data)
if data != '':
('Get data is:{}'.format(data))
all_data = all_data + data
print data
_time_data = all_data
el:
_get_data_flag(True)
break
return all_data
if __name__ == '__main__':
pass
com = COM('com3', 115200)
# ()
print _data('data')
_data(50)
()
8、對于?次函數說明(百度看到,并未測試)
readall():讀取全部字符,是阻塞的,除?接收的字符串以EOF結尾或者超出緩沖區,否則函數不會返回。?般要結合超時設置,設置串?
的timeout參數
Readline():讀取??,以/n結束,要是沒有/n就?直讀,阻塞。
以上就是本?的全部內容,希望對?家的學習有所幫助,也希望?家多多?持龍??絡。

本文發布于:2023-05-24 13:25:34,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/168490593452671.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:pythonrial函數_PythonSerial串口基本操作(收發數據).doc
本文 PDF 下載地址:pythonrial函數_PythonSerial串口基本操作(收發數據).pdf
| 留言與評論(共有 0 條評論) |