1853|4

1990

帖子

0

资源

版主

python实战串口助手---4实现串口功能 [复制链接]

在研究别人的代码和资料后,进行了深入的学习后,整理了一版串口的操作代码,
功能包括启动,停止,读,和写,目前还没有加到界面上,下一步,大家不要着急,也不要催我,我会慢慢搞定的哦。
废话不说了,先给大家代码,欢迎大家的批评和指正,当然是参考了前人的作品改动的,请高手见谅啊,我的目的也是学习和带动大家学习,不是想要什么回报的。
  1. import sys
  2. import threading
  3. import time
  4. import serial
  5. import binascii
  6. import logging

  7. class serDeal(object):
  8.     def __init__(self, Port="COM4", BaudRate="9600", ByteSize="8", Parity="N", Stopbits="1", timeout=None, xonxoff=0, rtscts=0):
  9.         self.serSer = None
  10.         self.alive = False
  11.         self.port = Port
  12.         self.baudrate = BaudRate
  13.         self.bytesize = ByteSize
  14.         self.parity = Parity
  15.         self.stopbits = Stopbits
  16.         self.thresholdValue = 64
  17.         self.receive_data = ""

  18.     def start(self):
  19.         self.serSer = serial.Serial()
  20.         self.serSer.port = self.port
  21.         self.serSer.baudrate = self.baudrate
  22.         self.serSer.bytesize = int(self.bytesize)
  23.         self.serSer.parity = self.parity
  24.         self.serSer.stopbits = int(self.stopbits)
  25.         self.serSer.timeout = 2
  26.         
  27.         try:
  28.             self.serSer.open()
  29.             if self.serSer.isOpen():
  30.                 self.alive = True
  31.         except Exception as e:
  32.             self.alive = False
  33.             logging.error(e)

  34.     def stop(self):
  35.         self.alive = False
  36.         if self.serSer.isOpen():
  37.             self.serSer.close()

  38.     def read(self):
  39.         while self.alive:
  40.             try:
  41.                 number = self.serSer.inWaiting()
  42.                 if number:
  43.                     self.receive_data += self.serSer.read(number).replace(binascii.unhexlify("00"), "")
  44.                     if self.thresholdValue <= len(self.receive_data):
  45.                         self.receive_data = ""
  46.             except Exception as e:
  47.                 logging.error(e)

  48.     def write(self, data, isHex=False):
  49.         if self.alive:
  50.             if self.serSer.isOpen():
  51.                 if isHex:
  52.                     # data = data.replace(" ", "").replace("\n", "")
  53.                     data = binascii.unhexlify(data)
  54.                 self.serSer.write(data)
复制代码


水平有限,也是刚学习python不久,大家多指点,谢谢!                                          




                                                                                 发稿与2018年1月19日

此内容由EEWORLD论坛网友star_66666原创,如需转载或用于商业用途需征得作者同意并注明出处



回复

570

帖子

235

资源

版主

谢谢分享
个人签名爱电子,爱生活

回复

1990

帖子

0

资源

版主

客气了,,

回复

1

帖子

0

资源

一粒金砂(初级)

去年摸过一段时间的Python,现在又想捡起来呢。既然看到这个版块了,就MARK一下吧

回复

1990

帖子

0

资源

版主

欢迎

回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表