pyserial | Python serial port access library | Wrapper library

 by   pyserial Python Version: 3.5b0 License: Non-SPDX

kandi X-RAY | pyserial Summary

kandi X-RAY | pyserial Summary

pyserial is a Python library typically used in Utilities, Wrapper applications. pyserial has no bugs, it has no vulnerabilities, it has build file available and it has high support. However pyserial has a Non-SPDX License. You can install using 'pip install pyserial' or download it from GitHub, PyPI.

Python serial port access library

            kandi-support Support

              pyserial has a highly active ecosystem.
              It has 2887 star(s) with 1076 fork(s). There are 140 watchers for this library.
              It had no major release in the last 12 months.
              There are 294 open issues and 219 have been closed. On average issues are closed in 150 days. There are 64 open pull requests and 0 closed requests.
              It has a negative sentiment in the developer community.
              The latest version of pyserial is 3.5b0

            kandi-Quality Quality

              pyserial has 0 bugs and 0 code smells.

            kandi-Security Security

              pyserial has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              pyserial code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              pyserial has a Non-SPDX License.
              Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.

            kandi-Reuse Reuse

              pyserial releases are available to install and integrate.
              Deployable package is available in PyPI.
              Build file is available. You can build the component from source.
              It has 7990 lines of code, 660 functions and 59 files.
              It has medium code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed pyserial and discovered the below as its top functions. This is intended to give you an instant insight into pyserial implemented functionality, and help decide if they suit your requirements.
            • Creates a simple terminal port .
            • Sends a sub - negotiation message .
            • Iterate all available ports
            • Open the serial port .
            • Handle the menu key .
            • Returns the device s serial number .
            • Returns a Serial object for the given URL .
            • Open the port settings .
            • Process an incoming command .
            • Runs the serial .
            Get all kandi verified functions for this library.

            pyserial Key Features

            No Key Features are available at this moment for pyserial.

            pyserial Examples and Code Snippets

            How to remove quotation and parenthesis around csvwriter output
            Pythondot img1Lines of Code : 11dot img1License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            if __name__ == '__main__':
                with open('Text FILE69', 'a', newline='') as f:
                    write = csv.writer(f)
                    while True:
                        ctime = timec()
                        lat, lon = GPS()
                        Rows = (ctime, lat, lon)
            Threading tkinter serial reading function
            Pythondot img2Lines of Code : 22dot img2License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            class Reader(Serial):
                def __init__(self, *args, **kwargs):
                    self.buffer = ''
                    super(Reader, self).__init__(*args, **kwargs)
                def monitor(self, w, interval=10):
                    n = self.inWaiting()
                    if n != 0:
            how to use python serial write to PLC?
            Pythondot img3Lines of Code : 110dot img3License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            import serial
            # cmd = '0101B00064000001'
            class OMR_SERIAL_TOOL:
                def __init__(self,port,baudrate):
                    self.omr = serial.Serial(port=port, baudrate=baudrate, timeout=0.5)
            How to use "multi-threading" in python with ROS services and serial comunication?
            Pythondot img4Lines of Code : 38dot img4License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            #!/usr/bin/env python
            import threading
            import rospy
            from std_msgs.msg import String
            mutex = threading.Lock()
            def msg_callback(msg):
                # reentrang processing
                # work serial port here, e.g. send msg 
            How to send the contents of a variable to Micropython repl
            Pythondot img5Lines of Code : 22dot img5License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            import serial
            import time
            MyPassWord = "This is the password"
            def Send(s):
                ser.write((s +'\r\n').encode())
                z =
            portx = "COM6"
            bps = 115200
            timex = 5
            ser = serial.Serial(portx,bps,time
            Can't stop thread at all (unless I cause an exception)
            Pythondot img6Lines of Code : 2dot img6License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            How to write and read binary (not ASCII encoded) to Arduino with pyserial
            Pythondot img7Lines of Code : 2dot img7License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            command = bytes([int(input("Enter command: "))])
            Python Serial Read Timer
            Pythondot img8Lines of Code : 19dot img8License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            def countup(seconds):
                global after_id
                seconds += 1
                timelabel['text'] = str(seconds)+"s"
                after_id = root.after(1000, countup, seconds)
            Can't convert object of type 'function' to 'str' for 'text
            Pythondot img9Lines of Code : 5dot img9License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            def get_temp(ser, num_samples=50):
                float_vals = [float(ser.readline()) for _ in range(num_samples)]
                avg_val = sum(float_vals)/len(float_vals) 
                return str(avg_val) # convert to string for open cv
            Which is the python function that is equivalent to the Arduino byte() function?
            Pythondot img10Lines of Code : 7dot img10License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            import serial, time
            ser = serial.Serial('/dev/ttyS0', 115200)

            Community Discussions


            How to remove quotation and parenthesis around csvwriter output
            Asked 2022-Mar-25 at 20:08

            I have a gps sensor that outputs latitude and longitude. Along with it I am calling the current time in timec(). I want to output these values into a text file that I can upload into excel for extrapolation. My outputs currently look like

            14:48:48,"(36.12306, -97.06177333333332)"

            And I need my outputs to look like

            14:48:48, 36.12306, -97.06177333333332

            I have tried what is below:



            Answered 2022-Mar-25 at 20:08

            Spread the result of GPS in to separate variables.

            You should just open the file once, not every time through the loop. You can use f.flush() to flush the line to the file immediately.



            how to use python serial write to PLC?
            Asked 2022-Mar-19 at 02:45

            I have 2 PLCs with serial port. one is mitsubishi Q00Jcpu mc protocol, another is omron hostlink protocol.

            I tried to use python pyserial lib to write to the PLC and read response. But failed, I tried to use a serial tool to test and got nice response, serial tool success communicate with PLC, I read CIO address start 100 and size 2, it got 12345678, that is a true result.

            my code :



            Answered 2022-Mar-19 at 02:45

            I figured it how, the return of serial.write is not the result. If need the response from device, should use read_until(), not sure weather this is a good way, please let me know if you have any suggestions. Anyway, the class i make, can read the omron PLC by giving different params, hope it can help someone.




            Why Smart Card answers 6982 to EXTERNAL AUTHENTICATE while all calculations are correct?
            Asked 2022-Mar-12 at 05:05

            I am trying to establish a secure channel SCP02 with a smart card using python. My smartcard is connected to the terminal using a serial port and I use pySerial to send APDUs.

            I send commands SELECT ISD, INITIALIZE UPDATE correctly, and next I try to do EXTERNAL AUTHENTICATE as the python code below:



            Answered 2022-Jan-10 at 10:45

            You can use the working Test Vectors from the GlobalPlatform library and test if your executed crypto logic is really working. It could also be that your card is using some key derivation scheme, i.e. the keys you are using cannot be used directly.



            Can't stop thread at all (unless I cause an exception)
            Asked 2022-Feb-17 at 10:42

            So I am working on a GUI (PyQt5) and I am multi-threading to be able to do data acquisition and real-time plotting concurrently.

            Long story short, all works fine apart from stopping the thread that handles the data acquisition, which loops continuously and calls PySerial to read the com port. When a button on the GUI is pressed, I want to break the while loop within the thread so as to stop reading the com port and allow the com port to be closed safely.

            Currently, none of the methods I have tried manage to gracefully exit the while loop inside the thread, which causes all kinds of errors with the PySerial library and the closed com port/ attempted reading in the thread. Here is what I have tried:

            • Using a class variable (self.serial_flag) and changing its state when the button is pressed. The thread loop then looks like this: while self.serial_flag:
            • Using a global variable (serial_flag = False at top of the script). Defining global serial_flag at the top of the threaded function and same condition: while serial_flag:
            • Using a shared memory variable: from multiprocessing import Value, then defining serial_flag = Value('i', 0) then in the loop checking while serial_flag.value == 0:
            • Using threading.Event to set an event and use that as a break condition. Defining: serial_flag = threading.Event() and inside the thread while loop: if serial_flag.is_set(): break

            None of these seem to work in breaking the while loop and I promise I have done my homework in researching solutions for this type of thing - I feel like there is something basic that I am doing wrong with my multithreading application. Here are the parts of the GUI that call/ deal with the thread (with my latest attempt using threading.Event):



            Answered 2022-Feb-17 at 10:42

            The problem occurs because you are closing the serial port without waiting for the thread to terminate. Although you set the event, that part of the code might not be reached, since reading from the serial port is still happening. When you close the serial port, an error in the serial library occurs.

            You should wait for the thread to terminate, then close the port, which you can do by adding



            Threading reading a serial port in Python (with a GUI)
            Asked 2022-Jan-19 at 18:19

            I want to trigger an event whenever there is data to be read from a serial port while running a GUI. The pySerial module apparently has experimental functionality for that, but it isn't particularly well documented (I couldn't find any useful examples in the API).

            This question appears to deal with the same or at least very similar task, but doesn't provide instructions to replicate it or working code examples.

            I came up with this code:



            Answered 2022-Jan-18 at 11:10

            Your main concern is to be thread safe, when You are updating GUI from another running Thread.
            To achieve this, we can use .after() method, which executes callback for any given tk widget.

            Another part of Your request is to use Threaded serial reader.
            This can be achieved by using ReaderThread accompanied with Protocol.

            You can pick two protocols:

            Here is working code example, with two protocols mentioned above, so You can pick which one suits You. Just remember, that all data coming from serial port are just raw bytes.



            Install Odoo Source dependencies on Windows 10 Error
            Asked 2022-Jan-11 at 10:47

            I am trying to install Odoo15 Source dependencies on windows 10. I run pip install -r requirements.txt. Then this error occurs



            Answered 2022-Jan-11 at 10:47

            Try using psutil version 5.6.7.




            pySerial problem: embedded controller stops echoing commands
            Asked 2022-Jan-05 at 23:37

            I'm trying to use pySerial running on an Ubuntu host to automate testing of an embedded controller. I can enter commands in a terminal window (e.g., PuTTY) and get responses from the EC all day long. However, when I try using a pySerial program to do the same thing, the EC stops echoing the commands after some time, right in the middle of echoing a command. From that point forward, the EC stops responding to the program, including not sending results from the command that was interrupted.

            If I terminate the program and try to connect to the EC with a terminal again, the EC is unresponsive. If an external event happens that causes the EC to write output to the terminal, that information is displayed correctly. The problem persists until I reboot the EC - which also erases any logs of what was happening on the EC when the problem occurred. (The logs are only accessible through the serial port...)

            It appears that something pySerial is doing causes the EC's input processing to stop. I tried typing Ctrl-Q (XON) hoping there was some software flow control going on that wasn't obvious, but that didn't make a difference. I've tried sending alternating commands in the program, sending blank lines between sending commands, inserting delays between when the commands are sent - but it dies, every time, after processing a few commands.

            This is the script I'm currently using:



            Answered 2022-Jan-05 at 23:37

            It appears the testing procedure was actually in error: Following one of my colleague's example, I typed the "battery current" command into the terminal, got a response, then used the up-arrow key to re-run the command - which seems to work all day long.

            However, that's not the same test: Up-arrow (which retrieves the last command from the EC's history) followed by is not the same as repeatedly typing the command and sending it.

            When I repeatedly pasted the command into the terminal window as quickly as I could, the EC failed exactly the same way as did sending the commands using pySerial: The failure is internal to the EC, not something different pySerial was doing on the communication line.



            Interface Arduino/RedBoard vibrator to Python
            Asked 2021-Dec-30 at 15:33

            I am trying to interface my SparkFun Qwiic Haptic Driver - DA7280 with Python3. My current set-up is as follows:

            PC -USB to micro-USB-> SparkFun RedBoard Qwiic -Qwiic Cable-> Haptic Driver

            I've trialed the accompanying Arduino sketch & managed to get the C++ code up and running fine; modulating the vibrator's intensity & frequency just fine.

            Then, what I would like to do is to trigger a vibration pulse in time with some Python code. Such that, when python prints out a word, for example, a vibratory impulse would be triggered.

            I have tried using pySerial to interface with the microcontroller, trigger the controller to run a pre-loaded script. This was worked fine with a simple C++ script to repeat an LED blink uploaded to the micro-controller:



            Answered 2021-Dec-30 at 15:33

            I suspect at least part of the problem is that you are not clearing the contents of the read buffer, only checking if something is there. Serial.flush() i think that as of Arduino 1.00 (don't quote me on that) serial flush doesn't do anything to the incoming buffer.

            try adding a var = in before your hapDrive.setVibrate(25); and see if that changes the functionality.

            I also HEAVILY recommend interrupts for serial. There's a serial event example that's really comprehensive (although i seem to remember that's not actually interrupt driven in the classical microcontroller sense, but it's close enough!)



            Running odoo in Debugging VSCode and found error ModuleNotFoundError: No module named 'stdnum' - - -
            Asked 2021-Dec-27 at 17:01

            i using VSCode as my IDE for development odoo and for now run using Start > Debugging ( F5)

            While running at web browser localhost:8069 ( default ) then appear Internal Server Error and in terminal VSCode there are errors :



            Answered 2021-Dec-27 at 17:01

            After trying for a few days and just found out that pip and python in the project are not pointing to .venv but to anaconda due to an update. when error

            no module stdnum

            actually there is a problem with pip so make sure your pip path with which pip or which python

            1. to solve .venv that doesn't work by deleting the .venv folder, create venv in python, and install all requirements again



            Run Django in docker container with GDAL
            Asked 2021-Dec-20 at 11:25

            I am currently trying to run a Django project inside a docker container, to provide the project with a local DB.

            The Project is depending on GDAL, but when trying to install the requirements it always runs into the same problem. The following is my dockerfile:



            Answered 2021-Dec-20 at 11:25

            I found the problem. The conda install fixed the GDAL problem. BUT. When installing requirements.txt, GDAL got installed a second time and this caused the error, since the normal pip install is not working properly with GDAL.


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install pyserial

            You can install using 'pip install pyserial' or download it from GitHub, PyPI.
            You can use pyserial like any standard Python library. You will need to make sure that you have a development environment consisting of a Python distribution including header files, a compiler, pip, and git installed. Make sure that your pip, setuptools, and wheel are up to date. When using pip it is generally recommended to install packages in a virtual environment to avoid changes to the system.


            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • PyPI

            pip install pyserial

          • CLONE
          • HTTPS


          • CLI

            gh repo clone pyserial/pyserial

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Reuse Pre-built Kits with pyserial

            Consider Popular Wrapper Libraries


            by java-native-access


            by serialport


            by eddiezane


            by KeepSafe


            by pyserial

            Try Top Libraries by pyserial


            by pyserialPython


            by pyserialPython


            by pyserialPython


            by pyserialPython