电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 串口通信的實現

瀏覽:44日期:2022-07-09 14:01:45

串口通信是指外設和計算機間,通過數據信號線 、地線、控制線等,按位進行傳輸數據的一種通訊方式。這種通信方式使用的數據線少,在遠距離通信中可以節約通信成本,但其傳輸速度比并行傳輸低。串口是計算機上一種非常通用的設備通信協議。pyserial模塊封裝了python對串口的訪問,為多平臺的使用提供了統一的接口。

安裝:

pip3 install pyserial

測試:

兩個CH340 (TTL轉串口模塊)接入到PC串口上,通過Python進行數據交互:

Python 串口通信的實現

簡單串口程序實現:

import serial #導入模塊try: #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等 portx='COM3' #波特率,標準值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200 bps=115200 #超時設置,None:永遠等待操作,0為立即返回請求結果,其他值為等待超時時間(單位為秒) timex=5 # 打開串口,并得到串口對象 ser=serial.Serial(portx,bps,timeout=timex) # 寫數據 result=ser.write('我是東小東'.encode('gbk')) print('寫總字節數:',result) ser.close()#關閉串口except Exception as e: print('---異常---:',e)

獲取可用串口列表:

import serial #導入模塊import serial.tools.list_portsport_list = list(serial.tools.list_ports.comports())print(port_list)if len(port_list) == 0: print(’無可用串口’)else: for i in range(0,len(port_list)): print(port_list[i])

十六進制處理:

import serial #導入模塊try: portx='COM3' bps=115200 #超時設置,None:永遠等待操作,0為立即返回請求結果,其他值為等待超時時間(單位為秒) timex=None ser=serial.Serial(portx,bps,timeout=timex) print('串口詳情參數:', ser) #十六進制的發送 result=ser.write(chr(0x06).encode('utf-8'))#寫數據 print('寫總字節數:',result) #十六進制的讀取 print(ser.read().hex())#讀一個字節 print('---------------') ser.close()#關閉串口except Exception as e: print('---異常---:',e)

其他細節補充:

import serial #導入模塊try: #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等 portx='COM3' #波特率,標準值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200 bps=115200 #超時設置,None:永遠等待操作,0為立即返回請求結果,其他值為等待超時時間(單位為秒) timex=5 # 打開串口,并得到串口對象 ser=serial.Serial(portx,bps,timeout=timex) print('串口詳情參數:', ser) print(ser.port)#獲取到當前打開的串口名 print(ser.baudrate)#獲取波特率 result=ser.write('我是東小東'.encode('gbk'))#寫數據 print('寫總字節數:',result) #print(ser.read())#讀一個字節 # print(ser.read(10).decode('gbk'))#讀十個字節 #print(ser.readline().decode('gbk'))#讀一行 #print(ser.readlines())#讀取多行,返回列表,必須匹配超時(timeout)使用 #print(ser.in_waiting)#獲取輸入緩沖區的剩余字節數 #print(ser.out_waiting)#獲取輸出緩沖區的字節數 #循環接收數據,此為死循環,可用線程實現 while True: if ser.in_waiting: str=ser.read(ser.in_waiting ).decode('gbk') if(str=='exit'):#退出標志 break else:print('收到數據:',str) print('---------------') ser.close()#關閉串口except Exception as e: print('---異常---:',e)

部分封裝:

其中讀數據的封裝方法并不是很好用,使用的話又得循環接收,這樣反而更加復雜了

import serial #導入模塊import threadingSTRGLO='' #讀取的數據BOOL=True #讀取標志位#讀數代碼本體實現def ReadData(ser): global STRGLO,BOOL # 循環接收數據,此為死循環,可用線程實現 while BOOL: if ser.in_waiting: STRGLO = ser.read(ser.in_waiting).decode('gbk') print(STRGLO)#打開串口# 端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等# 波特率,標準值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200# 超時設置,None:永遠等待操作,0為立即返回請求結果,其他值為等待超時時間(單位為秒)def DOpenPort(portx,bps,timeout): ret=False try: # 打開串口,并得到串口對象 ser = serial.Serial(portx, bps, timeout=timeout) #判斷是否打開成功 if(ser.is_open): ret=True threading.Thread(target=ReadData, args=(ser,)).start() except Exception as e: print('---異常---:', e) return ser,ret#關閉串口def DColsePort(ser): global BOOL BOOL=False ser.close()#寫數據def DWritePort(ser,text): result = ser.write(text.encode('gbk')) # 寫數據 return result#讀數據def DReadPort(): global STRGLO str=STRGLO STRGLO=''#清空當次讀取 return strif __name__=='__main__': ser,ret=DOpenPort('COM6',115200,None) if(ret==True):#判斷串口是否成功打開 count=DWritePort(ser,'我是東小東,哈哈') print('寫入字節數:',count) #DReadPort() #讀串口數據 #DColsePort(ser) #關閉串口

查看所有串口

import serial.tools.list_portsport_list = list(serial.tools.list_ports.comports())if len(port_list) == 0: print(’找不到串口’)else: for i in range(0,len(port_list)): print(port_list[i])

參考:

https://pythonhosted.org/pyserial/pyserial_api.html#serial.Serial.open

以上就是Python 串口通信的實現的詳細內容,更多關于python 串口通信的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 欧必特空气能-商用空气能热水工程,空气能热水器,超低温空气源热泵生产厂家-湖南欧必特空气能公司 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | 光环国际-新三板公司_股票代码:838504| 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 撕碎机,撕破机,双轴破碎机-大件垃圾破碎机厂家 | 粘度计,数显粘度计,指针旋转粘度计| 模具ERP_模具管理系统_模具mes_模具进度管理_东莞市精纬软件有限公司 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 收录网| 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 挤塑板-XPS挤塑板-挤塑板设备厂家[襄阳欧格] | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 上海风淋室_上海风淋室厂家_上海风淋室价格_上海伯淋 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 安规_综合测试仪,电器安全性能综合测试仪,低压母线槽安规综合测试仪-青岛合众电子有限公司 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 空气弹簧|橡胶气囊|橡胶空气弹簧-上海松夏减震器有限公司 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 电动车头盔厂家_赠品头盔_安全帽批发_山东摩托车头盔—临沂承福头盔 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 |