Перейти к содержимому

Как установить pyserial на windows

  • автор:

Как поставить python-serial?

Reading package lists. Done
Building dependency tree
Reading state information. Done
python-serial is already the newest version (3.4-4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up nginx-full (1.14.2-2+deb10u3) .
Job for nginx.service failed because the control process exited with error code.
See «systemctl status nginx.service» and «journalctl -xe» for details.
invoke-rc.d: initscript nginx, action «start» failed.
● nginx.service — A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2020-10-29 13:27:07 GMT; 56ms ago
Docs: man:nginx(8)
Process: 940 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)

Oct 29 13:27:07 pi systemd[1]: Starting A high performance web server and a reverse proxy server.
Oct 29 13:27:07 pi nginx[940]: nginx: [emerg] «fastcgi_pass» directive is duplicate in /etc/nginx/sites-enabled/default:62
Oct 29 13:27:07 pi nginx[940]: nginx: configuration file /etc/nginx/nginx.conf test failed
Oct 29 13:27:07 pi systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
Oct 29 13:27:07 pi systemd[1]: nginx.service: Failed with result ‘exit-code’.
Oct 29 13:27:07 pi systemd[1]: Failed to start A high performance web server and a reverse proxy server.
dpkg: error processing package nginx-full (—configure):
installed nginx-full package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
nginx-full
E: Sub-process /usr/bin/dpkg returned an error code (1)

Кажется, просто занят порт, но я не тороплюсь убивать процессы т.к. не знаю, как работает python-serial
Ему нужны порты только для установки? Или он займет их и в дальнейшем? Что делать?

  • Вопрос задан более трёх лет назад
  • 181 просмотр

1 комментарий

Средний 1 комментарий

pySerial¶

This module encapsulates the access for the serial port. It provides backends for Python running on Windows, OSX, Linux, BSD (possibly any POSIX compliant system) and IronPython. The module named “serial” automatically selects the appropriate backend.

It is released under a free software license, see LICENSE for more details.

Copyright (C) 2001-2020 Chris Liechti

Other pages (online)

  • project page on GitHub
  • Download Page with releases (PyPi)
  • This page, when viewed online is at https://pyserial.readthedocs.io/en/latest/ or http://pythonhosted.org/pyserial/ .

Features¶

  • Same class based interface on all supported platforms.
  • Access to the port settings through Python properties.
  • Support for different byte sizes, stop bits, parity and flow control with RTS/CTS and/or Xon/Xoff.
  • Working with or without receive timeout.
  • File like API with “read” and “write” (“readline” etc. also supported).
  • The files in this package are 100% pure Python.
  • The port is set up for binary transmission. No NULL byte stripping, CR-LF translation etc. (which are many times enabled for POSIX.) This makes this module universally useful.
  • Compatible with io library
  • RFC 2217 client (experimental), server provided in the examples.

Requirements¶

  • Python 2.7 or Python 3.4 and newer
  • If running on Windows: Windows 7 or newer
  • If running on Jython: “Java Communications” (JavaComm) or compatible extension for Java

For older installations (older Python versions or older operating systems), see older versions below.

Installation¶

This installs a package that can be used from Python ( import serial ).

To install for all users on the system, administrator rights (root) may be required.

From PyPI¶

pySerial can be installed from PyPI:

python -m pip install pyserial 

Using the python / python3 executable of the desired version (2.7/3.x).

Developers also may be interested to get the source archive, because it contains examples, tests and the this documentation.

From Conda¶

pySerial can be installed from Conda:

conda install pyserial or conda install -c conda-forge pyserial 

Currently the default conda channel will provide version 3.4 whereas the conda-forge channel provides the current 3.x version.

From source (zip/tar.gz or checkout)¶

Download the archive from http://pypi.python.org/pypi/pyserial or https://github.com/pyserial/pyserial/releases. Unpack the archive, enter the pyserial-x.y directory and run:

python setup.py install 

Using the python / python3 executable of the desired version (2.7/3.x).

Packages¶

There are also packaged versions for some Linux distributions:

  • Debian/Ubuntu: “python-serial”, “python3-serial”
  • Fedora / RHEL / CentOS / EPEL: “pyserial”
  • Arch Linux: “python-pyserial”
  • Gentoo: “dev-python/pyserial”

Note that some distributions may package an older version of pySerial. These packages are created and maintained by developers working on these distributions.

References¶

  • Python: http://www.python.org/
  • Jython: http://www.jython.org/
  • IronPython: http://www.codeplex.com/IronPython

Older Versions¶

Older versions are still available on the current download page or the old download page. The last version of pySerial’s 2.x series was 2.7, compatible with Python 2.3 and newer and partially with early Python 3.x versions.

pySerial 1.21 is compatible with Python 2.0 on Windows, Linux and several un*x like systems, MacOSX and Jython.

On Windows, releases older than 2.5 will depend on pywin32 (previously known as win32all). WinXP is supported up to 3.0.1.

© Copyright 2001-2020, Chris Liechti Revision 7aeea354 .

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest

Versions latest stable Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.

Serial-порт: как с ним работать?

Очень часто при отладке различных программ на Arduino используется так называемый Serial-порт. Из него можно как считывать данные, так и отправлять команды на наше устройство.

Посмотрим, как работать с Serial, но не со стороны Arduino, а со стороны компьютера. Готовы? Поехали!

Вариант первый. Arduino IDE

Один из инструментов, входящих в состав Arduino IDE, носит гордое название — Монитор порта. Он может быть запущен только когда плата подключена к компьютеру. Есть возможность изменять скорость передачи данных, и символ окончания строки.

Если мы хотим работать только с текстом — рабочий вариант, но если при подключении открывается консоль(например в случае с Micropython), об удобстве можно забыть.

Вариант второй. Специализированное ПО

Поскольку интерфейс Serial-порта используется не только при разработке микроконтроллеров, но и в других областях IT были созданы специальные программы, для удобного взаимодействия или управления.

Одним из самых популярных решений для Windows — является программа PuTTY. Не смотря на то, что она заявлена как SSH клиент, её очень часто используют для подключения по COM-порту.

Для этого необходимо на основной вкладке среди способов подключения выбрать Serial , ввести имя порта, скорость и нажать на Open .

К сожалению данная программа доступна только для Windows. Пользователям MacOS — можно использовать CoolTerm(кстати, он доступен и для Windows и Linux)

или программу с простым названием Serial, правда за её использование после пробного периода придётся отдать 30$.

Вариант третий. Программирование

Но в том случае, когда у вас уже готовое устройство и вам необходимо им управлять, каждый раз отправлять команду — очень не удобно. Гораздо проще автоматизировать это, написав свою программу.

Для того, что бы написать программу для управления устройством через Serial-порт на Python, необходимо использовать библиотеку PySerial . Её можно установить через менеджер пакетов: pip install pyserial .

Для создания подключения и отправки сообщения необходим следующий код:

my_serial = serial.Serial('/dev/ttyS1', 115200) my_serial.write(b'command_1') my_serial.close() 

Он откроет подключение на порту /dev/ttyS1 , со скоростью 115200 , затем отправит на устройство байтовую строчку b’command_1′ , а после этого закроет подключение.

Подробнее об использовании библиотеки можно прочитать в этой статье.

Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.

Работа с COM-портом в Python — Краткое Руководство

Работа с COM-портом в Python

Работа с COM PORT / UART в Python на примере связи с платой Arduino

Введение

COM-порты до сих пор играют жизненно важную роль в установлении соединений между компьютерами и внешними устройствами. Не следует считать, что COM порт — это нечто безнадежно устаревшее и архаичное. Конечно, вы уже не встретите его в современных гаджетах общего назначения, таких как принтеры, сканеры и т.д. Однако COM порт широко используется до сих пор в промышленной технике, в различных световых рекламных табло. Также без работы с этим портом не обойтись если вы разрабатываете программы для микроконтроллеров, в частности для Arduino.

Python, будучи универсальным и мощным языком программирования, обеспечивает отличную поддержку работы с COM-портами. В этой статье мы рассмотрим, как использовать Python для эффективного взаимодействия с COM-портами, позволяя вам управлять различными устройствами и беспрепятственно собирать данные.

Установка библиотеки PySerial

Для работы с COM-портами в Python нам понадобится библиотека PySerial, предоставляющая удобный интерфейс для последовательной связи. PySerial можно легко установить с помощью pip, менеджера пакетов Python. Откройте терминал или командную строку и выполните следующую команду:

pip install pyserial

Получение списка доступных COM-портов

Перед подключением к определенному COM-порту очень важно определить доступные порты в вашей системе. PySerial предлагает удобную функцию serial.tools.list_ports.comports(), которая возвращает список доступных COM-портов. Давайте посмотрим, как его использовать:

import serial.tools.list_ports ports = serial.tools.list_ports.comports() for port in ports: print(port.device)

Установка соединения

После того, как вы определили нужный COM-порт, вы можете создать соединение с помощью PySerial. Класс serial.Serial() предоставляет необходимые методы для настройки и управления подключением. Вот пример:

import serial port = "COM1" # Replace with the appropriate COM port name baudrate = 9600 # Replace with the desired baud rate ser = serial.Serial(port, baudrate=baudrate) # Perform operations on the COM port ser.close() # Remember to close the connection when done

Чтение и запись данных:

Для связи с устройством, подключенным к COM-порту, нам нужно понять, как читать и записывать данные. PySerial предлагает для этой цели два основных метода: ser.read() и ser.write(). Давайте рассмотрим эти методы:

# Reading data data = ser.read(10) # Read 10 bytes from the COM port print(data) # Writing data message = b"Hello, world!" # Data to be sent, should be in bytes ser.write(message)

Настройка параметров COM порта

PySerial предоставляет широкие возможности для настройки COM-портов в соответствии с конкретными требованиями. Вы можете настроить такие параметры, как биты данных, стоповые биты, четность, время ожидания и управление потоком. Вот пример:

ser = serial.Serial(port, baudrate=baudrate, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=False, rtscts=False) # Adjust the parameters as needed

Обработка ошибок

При работе с COM-портами очень важно корректно обрабатывать ошибки. PySerial вызывает исключения для различных сценариев ошибок, таких как ненайденный порт, отказ в доступе или тайм-ауты связи. Реализация соответствующей обработки ошибок обеспечивает надежность ваших приложений.

Вот пример обработки ошибок при работе с COM-портами в Python с помощью PySerial:

import serial import serial.tools.list_ports try: # Find and open the COM port ports = serial.tools.list_ports.comports() port = next((p.device for p in ports), None) if port is None: raise ValueError("No COM port found.") ser = serial.Serial(port, baudrate=9600) # Perform operations on the COM port ser.close() # Close the connection when done except ValueError as ve: print("Error:", str(ve)) except serial.SerialException as se: print("Serial port error:", str(se)) except Exception as e: print("An error occurred:", str(e)) 

В этом примере мы пытаемся найти и открыть COM-порт, используя serial.tools.list_ports.comports(). Если COM-порт не найден, возникает ошибка ValueError. Если существует исключение последовательного порта, например порт уже используется или недоступен, перехватывается SerialException. Любые другие общие исключения перехватываются блоком Exception, который обеспечивает сбор всех непредвиденных ошибок. Каждый блок ошибок обрабатывает определенный тип исключения и выводит соответствующее сообщение об ошибке.

Реализуя обработку ошибок таким образом, вы можете изящно обрабатывать различные сценарии ошибок, которые могут возникнуть при работе с COM-портами в Python.

Пример приложения для получения данных из платы Arduino

Вот пример приложения Python, которое считывает данные из платы Arduino с помощью PySerial

import serial # Configure the COM port port = "COM3" # Replace with the appropriate COM port name baudrate = 9600 try: # Open the COM port ser = serial.Serial(port, baudrate=baudrate) print("Serial connection established.") # Read data from the Arduino while True: # Read a line of data from the serial port line = ser.readline().decode().strip() if line: print("Received:", line) except serial.SerialException as se: print("Serial port error:", str(se)) except KeyboardInterrupt: pass finally: # Close the serial connection if ser.is_open: ser.close() print("Serial connection closed.") 

В этом примере мы открываем указанный COM-порт с помощью serial.Serial(), а затем непрерывно считываем данные с Arduino с помощью цикла while. Функция ser.readline().decode().strip() считывает строку данных из последовательного порта, декодирует ее из байтов в строку и удаляет все начальные или конечные пробелы. Если есть доступные данные, они выводятся на консоль.

Приложение будет продолжать работать до тех пор, пока оно не будет прервано ошибкой последовательного порта (serial.SerialException) или нажатием Ctrl+C, чтобы вызвать прерывание клавиатуры. В блоке finally мы обеспечиваем правильное закрытие последовательного соединения с помощью ser.close().

Не забудьте заменить «COM3» на соответствующее имя COM-порта, чтобы оно соответствовало соединению вашего Arduino. Кроме того, настройте значение скорости передачи данных, если ваш Arduino использует другую скорость передачи данных.

Пример приложения для отправки данных в плату Arduino

Вот пример приложения Python, которое отправляет последовательные данные на Arduino для управления устройством на основе Arduino:

import serial # Configure the COM port port = "COM3" # Replace with the appropriate COM port name baudrate = 9600 try: # Open the COM port ser = serial.Serial(port, baudrate=baudrate) print("Serial connection established.") # Send commands to the Arduino while True: command = input("Enter a command (e.g., 'ON', 'OFF'): ") # Send the command to the Arduino ser.write(command.encode()) except serial.SerialException as se: print("Serial port error:", str(se)) except KeyboardInterrupt: pass finally: # Close the serial connection if ser.is_open: ser.close() print("Serial connection closed.") 

В этом примере мы открываем указанный COM-порт с помощью serial.Serial(), а затем постоянно запрашиваем у пользователя ввод команд. Команда считывается с помощью input(), а затем отправляется в Arduino с помощью ser.write(command.encode()), где command.encode() преобразует команду из строки в байты перед отправкой через последовательный порт. .

Приложение будет продолжать работать до тех пор, пока оно не будет прервано ошибкой последовательного порта (serial.SerialException) или нажатием Ctrl+C, чтобы вызвать прерывание клавиатуры. В блоке finally мы обеспечиваем правильное закрытие последовательного соединения с помощью ser.close().

Не забудьте заменить «COM3» на соответствующее имя COM-порта, чтобы оно соответствовало соединению вашего Arduino. Отрегулируйте значение скорости передачи данных, если ваш Arduino использует другую скорость передачи данных.

С помощью этого кода вы сможете отправлять команды из своего приложения Python на Arduino и соответствующим образом управлять своим устройством на базе Arduino.

Заключение

Python в сочетании с библиотекой PySerial обеспечивает надежный и простой способ работы с COM-портами. Поняв основы COM-портов, установив PySerial и используя его возможности, вы сможете без труда взаимодействовать с внешними устройствами, собирать данные и управлять аппаратными компонентами. Независимо от того, создаете ли вы проект IoT, работаете с датчиками или взаимодействуете с микроконтроллерами, Python предлагает универсальную платформу для достижения ваших целей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *