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.7.tar.gz (10.9 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.7-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: scales_driver_async-0.0.7.tar.gz
  • Upload date:
  • Size: 10.9 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.7.tar.gz
Algorithm Hash digest
SHA256 7b0a1e0beef7bc35c8e456ce2b952bec287f06bab3c00e7c9de615388529c7e2
MD5 73c25abfdf043225fd8eb98bb0b10b64
BLAKE2b-256 80555629d5297d7cab8d25481d54410b458d9a26baa8b9f07d22395ed4754d68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scales_driver_async-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c423d75facd27ddf8861d21b7b50b011e1a7be3f62cbbf5949aa9f04512a7b20
MD5 2e06e1ac44e2f1f9c3e70b241eb5bc0f
BLAKE2b-256 ea34b9939d2d3f53fe55e32946fe3ead7f7cbf6f1e5485093e2814d570134b73

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