semvec/pypi-packages huggingface dataset:
dmx485 1.2
Simple DMX driver using an RS485 adapter
License: MIT
Keywords: dmx

# DMX485
## Requirements
This script requires pyserial.
```
pip install --user pyserial
```

## Installation
Install from pip:
```
pip install --user dmx485
```
Install from source:
```
python setup.py install
```

## Hardware Compatibility
This should work with any FTDI RS485 dongle or any of the similar knock-offs.

FTDI to RS485 cheap dongle:

https://fr.aliexpress.com/item/USB-to-TTL-RS485-Serial-Converter-Adapter-FTDI-Module-FT232RL-SN75176-double-function-double/32771847720.html?spm=a2g0w.search0104.3.15.63586239S7KSon&ws_ab_test=searchweb0_0,searchweb201602_2_10065_10068_319_10892_317_10696_453_10084_454_10083_10618_10304_10307_10820_10821_538_537_10302_536_10843_10059_10884_10887_100031_321_322_10103,searchweb201603_51,ppcSwitch_0&algo_expid=6957aa39-4868-4f8d-ac7f-b10f610a4a24-2&algo_pvid=6957aa39-4868-4f8d-ac7f-b10f610a4a24


## Hardware Example
https://stevenbreuls.com/2013/05/diy-usb-dmx-dongle-interface-for-under-10/

## Usage
First create an instance of dmx.DMX_Serial(), then start the background thread. Once that is running the dongle will begin sending a full DMX universe.
To change the value of a channel use set_data(). This function takes a bytes() object with 512 bytes, each representing a single DMX channel. It will be sent on the next DMX refresh.
```
import time
import dmx

sender = dmx.DMX_Serial()
sender.start()
for i in range(200):
    if i % 2:
        sender.set_data(bytes((255,)*512))
    else:
        sender.set_data(bytes((0,)*512))
    time.sleep(1)
```
py3odb 0.3
Python 3.6+ compatible interface to ECMWF's ODB API
License: MIT
Requires Python: >=3.6

|build| |codecov| |PyPI| |Python| |docs|

py3odb
======

Python 3.6+ compatible interface to ECMWF’s ODB API

Overview
--------

ODB API was developed by the `European Centre for Medium-Range Weather
Forecasts`_ for “encoding and processing of observational data.” The
`ODB API`_ provides an SQL-like interface called odbsql, along with a
Python 2 compatible API.

This module was written to provide an interface to ODB API using Python
>=3.6. It requires access to libOdb provided by ODB API.

Usage
-----

py3odb follows the `Python Database API Specification`_:

::

   import py3odb
   connection = py3odb.connect('foo.db')
   cursor = connection.cursor()
   cursor.execute('SELECT * FROM "foo.db"')
   for row in cursor:
       print(row)
   connection.close()

For single queries, there is a Reader context manager and <odb> tag:

::

   import py3odb
   with py3odb.Reader('foo.db', 'SELECT * FROM <odb>') as odb_reader:
       for row in odb_reader:
           print(row)

Known Limitations
-----------------

The intent of this library is to read odb2 files generated by the
`Unified Model`_ for the purpose of observation monitoring. The
underlying odbql interface to the ODB API provided by ECMWF does not
support database operations in a traditional sense. For example: \* as
of ODB API version 17.6, odbql only supports 8 character strings \* only
the most recent INSERT command is accepted \* you cannot open an
existing odb file and do an INSERT

References
----------

-  https://py3odb.readthedocs.io
-  https://www.python.org/dev/peps/pep-0249
-  https://confluence.ecmwf.int/display/ODBAPI

.. _European Centre for Medium-Range Weather Forecasts: https://www.ecmwf.int/
.. _ODB API: https://confluence.ecmwf.int/display/ODBAPI
.. _Python Database API Specification: https://www.python.org/dev/peps/pep-0249
.. _Unified Model: https://www.metoffice.gov.uk/

.. |build| image:: https://img.shields.io/circleci/build/github/opus49/py3odb
   :target: https://circleci.com/gh/opus49/py3odb
.. |codecov| image:: https://img.shields.io/codecov/c/github/opus49/py3odb
   :target: https://codecov.io/gh/opus49/py3odb
.. |PyPI| image:: https://img.shields.io/pypi/v/py3odb?color=blue
   :target: https://pypi.org/project/py3odb/
.. |Python| image:: https://img.shields.io/pypi/pyversions/py3odb
   :target: https://www.python.org/downloads/release/python-360/
.. |docs| image:: https://readthedocs.org/projects/py3odb/badge/?version=latest
   :target: https://py3odb.readthedocs.io