Python Forum
Python3 - serial port reload
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python3 - serial port reload
#4
I don't know if there's anything useful in the following code, but perhaps.
I wrote it to connect to an Arduino UNO, some of the code (commented) was from a github account, some of my own.
# ArduinoSerial.py
# Author: Larz60+
# Detect available serial ports, open and close same
# License MIT license see MIT_license.txt
#
from ArPaths import ArPaths
import sys
import glob
import serial


class ArduinoSerial:
    def __init__(self, baudrate=9600, serialport=None, serialtimeout=2, sstream=None):
        self.Apath = ArPaths()
        self.baud = baudrate
        self.port = serialport
        self.timeout = serialtimeout
        self.sstream = sstream

    def setport(self):
        if self.port is None:
            ports = glob.glob("/dev/ttyUSB*") + glob.glob("/dev/ttyACM*")
            print(f"ports: {ports}")
            self.port = ports[0]

    def OpenSerialPort(self):
        self.setport()
        print(f"self.port: {self.port}")
        self.sstream = serial.Serial(self.port, self.baud, timeout=self.timeout)
        print(f"self.sstream: {self.sstream}")
        return self.sstream

    def CloseSerialPort(self):
        self.sstream.close()

    def find_serial_ports(self):
        """
            Source for this code: https://gist.github.com/tekk/5c8d6824108dfb771a1e16aa8bc479f0

            Lists serial port names

            :raises EnvironmentError:
                On unsupported or unknown platforms
            :returns:
                A list of the serial ports available on the system
        """
        if sys.platform.startswith('win'):
            ports = ['COM%s' % (i + 1) for i in range(256)]
        elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
            # this excludes your current terminal "/dev/tty"
            ports = glob.glob('/dev/tty[A-Za-z]*')
        elif sys.platform.startswith('darwin'):
            ports = glob.glob('/dev/tty.*')
        else:
            raise EnvironmentError('Unsupported platform')

        result = []
        for port in ports:
            try:
                s = serial.Serial(port)
                s.close()
                result.append(port)
            except (OSError, serial.SerialException):
                pass

        return result


def main():
    aser = ArduinoSerial()
    ports = aser.find_serial_ports()
    print(f"Ports (find): {ports}")
    aser.OpenSerialPort()
    aser.CloseSerialPort()


if __name__ == '__main__':
    main()
output of internal test:
Output:
Ports (find): ['/dev/ttyACM0'] ports: ['/dev/ttyACM0'] self.port: /dev/ttyACM0 self.sstream: Serial<id=0x7faf12c0b0a0, open=True>(port='/dev/ttyACM0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=2, xonxoff=False, rtscts=False, dsrdtr=False)
Reply


Messages In This Thread
Python3 - serial port reload - by parovelb - Apr-07-2021, 12:34 PM
RE: Python3 - serial port reload - by Larz60+ - Apr-07-2021, 04:38 PM
RE: Python3 - serial port reload - by parovelb - Apr-07-2021, 07:39 PM
RE: Python3 - serial port reload - by Larz60+ - Apr-07-2021, 10:34 PM
RE: Python3 - serial port reload - by parovelb - Apr-08-2021, 09:18 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Waiting for input from serial port, then move on KenHorse 3 1,281 Apr-17-2024, 07:21 AM
Last Post: DeaD_EyE
  MCU reboots after opening Serial port when ran from Raspberry PI zazas321 3 540 Mar-19-2024, 09:02 AM
Last Post: zazas321
  pyserial/serial "has no attribute 'Serial' " gowb0w 9 5,003 Aug-24-2023, 07:56 AM
Last Post: gowb0w
  Serial Port As Global Prasanjith 2 1,580 Mar-23-2023, 08:54 PM
Last Post: deanhystad
  python serial port barryjo 2 1,706 Dec-27-2021, 11:09 PM
Last Post: barryjo
  is there a way to mention port range or search for port dynamically with qConnection Creepy 0 1,522 Sep-09-2021, 03:15 PM
Last Post: Creepy
  How to Properly Open a Serial Port in a Function bill_z 2 4,612 Jul-22-2021, 12:54 PM
Last Post: bill_z
  Unable to read from serial port br0kenpixel 1 2,542 Aug-08-2020, 10:03 PM
Last Post: Larz60+
  Read Data from Serial Port PA3040 3 3,249 Feb-16-2020, 04:54 AM
Last Post: PA3040
  Gnuradio python3 is not compatible python3 xmlrpc library How Can I Fix İt ? muratoznnnn 3 5,002 Nov-07-2019, 05:47 PM
Last Post: DeaD_EyE

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020