ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
16 июля
1530085 Топик полностью
Cкpипaчпророк (13.07.2025 15:07, просмотров: 99) ответил Nikolay_Po на С просторов Интернета:
Фрагмент кода. Я ничего не шлю. Только read_input_registers. И если бы ошибка была в получении команды, несошлось бы CRC. 
async def get_data(datablock, delay):

    client = AsyncModbusSerialClient( baudrate=19200, stopbits = 1, bytesize = 8, parity = 'E',
                                      port='/dev/ttyS1', timeout=1))
    await client.connect()
    assert client.connected

    while 1:
        try:
            for (addr, size) in [(2136,100),(2136+100,39)]:
                await asyncio.sleep(delay)
                result = await client.read_input_registers(address=addr, count=size, slave=1)
                if result.isError():
                    log.error(f'rs485 {addr}/{size} error: {result}')
                else:
                    log.debug(f'rs485 {addr}/{size}: {result.registers}')
                    datablock.setValues(addr, result.registers)
except ModbusException as exc: log.error(f'ModbusPy exceprion: {exc}') await asyncio.sleep(0.1)
... но не любой ценой.