完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 lee_st 于 2018-1-23 15:12 编辑
在研究别人的代码和资料后,进行了深入的学习后,整理了一版串口的操作代码, 功能包括启动,停止,读,和写,目前还没有加到界面上,下一步,大家不要着急,也不要催我,我会慢慢搞定的哦。 废话不说了,先给大家代码,欢迎大家的批评和指正,当然是参考了前人的作品改动的,请高手见谅啊,我的目的也是学习和带动大家学习,不是想要什么回报的。 import sys import threading import time import serial import binascii import logging class serDeal(object): def __init__(self, Port="COM4", BaudRate="9600", ByteSize="8", Parity="N", Stopbits="1", timeout=None, xonxoff=0, rtscts=0): self.serSer = None self.alive = False self.port = Port self.baudrate = BaudRate self.bytesize = ByteSize self.parity = Parity self.stopbits = Stopbits self.thresholdValue = 64 self.receive_data = "" def start(self): self.serSer = serial.Serial() self.serSer.port = self.port self.serSer.baudrate = self.baudrate self.serSer.bytesize = int(self.bytesize) self.serSer.parity = self.parity self.serSer.stopbits = int(self.stopbits) self.serSer.timeout = 2 try: self.serSer.open() if self.serSer.isOpen(): self.alive = True except Exception as e: self.alive = False logging.error(e) def stop(self): self.alive = False if self.serSer.isOpen(): self.serSer.close() def read(self): while self.alive: try: number = self.serSer.inWaiting() if number: self.receive_data += self.serSer.read(number).replace(binascii.unhexlify("00"), "") if self.thresholdValue <= len(self.receive_data): self.receive_data = "" except Exception as e: logging.error(e) def write(self, data, isHex=False): if self.alive: if self.serSer.isOpen(): if isHex: # data = data.replace(" ", "").replace("n", "") data = binascii.unhexlify(data) self.serSer.write(data) 水平有限,也是刚学习python不久,大家多指点,谢谢! 发稿与2018年1月19日 评分 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
39个成员聚集在这个小组
加入小组3381 浏览 0 评论
5997 浏览 0 评论
2301 浏览 0 评论
5299 浏览 0 评论
1939 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 17:04 , Processed in 0.649846 second(s), Total 66, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号