Skip to main content

Asynchronous scale driver

Project description

ScalesDriverAsync

About

Электронные весы получили широкое распространение на производственных предприятиях, в логистике, торговле, медицине и в других областях. Несмотря на широкое распространение программное взаимодействие с весами не стандартизировано. Электронные весы имеют разнообразные интерфейсы для подключения и протоколы для обмена данными. Наиболее распространены весы с интерфейсами RS-232, Ethernet и Wi-Fi. Некоторые модели имеют более одного интерфейса. Многие производители реализуют широко известные протоколы обмена данными в своих устройствах, например протокол CAS и его разновидности, другие же реализуют собственные открытые протоколы.

ScalesDriverAsync - это асинхронный драйвер электронных весов. ScalesDriverAsync предоставляет единый интерфейс независимо ни от физического интерфейса, ни от протокола.

Класс Connector модуля connector предоставляет высокоуровневый интерфейс для отправки и получения данных. Кроме того он предоставляет логику для простой обработки ошибок передачи данных и восстановления соединения после сбоев.

Модуль drivers предоставляет реализации протоколов обмена данными.

Requirements

Usage

pip install scales-driver-async

import asyncio

from scales_driver_async.drivers import CASType6, ScalesDriver


async def main():
    scales = CASType6(
            name='Bench scales',
            connection_type='serial',
            transfer_timeout=1,
            url='/dev/ttyUSB0',
            baudrate=9600,
            bytesize=8,
            parity='N',
            stopbits=1
    )
    print(await scales.get_weight(ScalesDriver.UNIT_KG))

asyncio.run(main())

Class connector.Connector

Connector предоставляет высокоуровневый API для получения и отправки данных. Работает поверх asyncio.StreamReader и asyncio.StreamWriter. Конструктор принимает параметры connection_type, transfer_timout и другие ключевые параметры (kwargs). Параметр connection_typeможет иметь значение 'socket' или 'serial'. Параметр transfer_timout - число, время ожидание отправки и получения данных в секундах. Kwargs должны иметь значения параметров соединения передаваемых в функцию asyncio.open_connection(**kwargs) или serial_asyncio.open_serial_connection(**kwargs).

async def main():
    connector = Connector('socket', 1.5, host='localhost', port=8080)
    await connector.write('Hello!'.encode())
    print(connector.read(6))

Вам обычно ненужно создавать объект этого класса напрямую.

coroutine read(data_len)

Открывает соединение, если оно не было открыто. Читает data_len байт из потока. Если данные небыли получены по истечении таймаута, будет поднято исключение ConnectorError. При возникновении других ошибок соединение будет закрыто и также будет поднято исключение.

coroutine write(data)

Открывает соединение, если оно не было открыто. Записывает данные. Ждет завершения передачи. Если данные небыли записаны по истечении таймаута, будет поднято исключение ConnectorError. При возникновении других ошибок соединение будет закрыто и также будет поднято исключение.

Exceptions

Connector может поднимать два типа исключений: ValueError и ConnectorError. Исключение ValueError будет поднято, если были переданы неверные параметры при инстанцировании. Исключение ConnectorError будет поднято при возникновении ошибок передачи данных. Это исключение может быть перехвачено и обработано, а работа приложения продолжена без каких-либо дополнительных действий. Соединение будет восстановлено автоматически.

Class drivers.ScalesDriver

ScalesDriver - абстрактный класс предоставляющий высокоуровневый API весов. Классы модуля drivers наследуются от ScalesDriver и реализуют протокол весов. Любой протокол может работать через сокет или последовательный порт. Пока реализовано два протокола CASType6 (CAS type #6) и MassK1C (Масса-К 1С). Протокол CAS type #6 поддерживают многие весы разных брендов. Масса-К 1С - протокол АО "МАССА-К" .

async def main():
    scales = CASType6(
        name='Bench scales',
        connection_type='serial',
        transfer_timeout=1,
        url='/dev/ttyUSB0',
        baudrate=9600,
        bytesize=8,
        parity='N',
        stopbits=1
    )
    print(await scales.get_weight(ScalesDriver.UNIT_KG))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scales_driver_async-0.0.6.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scales_driver_async-0.0.6-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file scales_driver_async-0.0.6.tar.gz.

File metadata

  • Download URL: scales_driver_async-0.0.6.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for scales_driver_async-0.0.6.tar.gz
Algorithm Hash digest
SHA256 14dc16e905195dbbcaadb8d30a9ff0082b42e591ee27ebd325c81c3bc8255108
MD5 3f022d15e93a006c5388c752bdea6890
BLAKE2b-256 92c6bfdf69a952d377e2e88138af8ada89bfc9450c7ab6eaeb333d4da8a915b7

See more details on using hashes here.

File details

Details for the file scales_driver_async-0.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for scales_driver_async-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a7865a4371761f5fa824e94200089bb4782b7bdd4081a3ec7b55ac1685a9baab
MD5 c0173063b25f81d973c5144814d1d877
BLAKE2b-256 acc2a3a470c795f26f0c8931dcfa7e1fccf393f5396b06fe0a962d503361d361

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page