[原创] python实战串口助手---4实现串口功能

star_66666   2018-1-19 11:54 楼主
在研究别人的代码和资料后,进行了深入的学习后,整理了一版串口的操作代码,
功能包括启动,停止,读,和写,目前还没有加到界面上,下一步,大家不要着急,也不要催我,我会慢慢搞定的哦。
废话不说了,先给大家代码,欢迎大家的批评和指正,当然是参考了前人的作品改动的,请高手见谅啊,我的目的也是学习和带动大家学习,不是想要什么回报的。
  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原创,如需转载或用于商业用途需征得作者同意并注明出处


回复评论 (4)

谢谢分享
爱电子,爱生活
点赞  2018-1-19 22:40
客气了,,
点赞  2018-1-20 02:40
去年摸过一段时间的Python,现在又想捡起来呢。既然看到这个版块了,就MARK一下吧
点赞  2018-11-14 10:49
欢迎
点赞  2018-11-14 11:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复