Root Only

подайте на пропитание, бывшему админу бывшего локалхоста

Menu
  • Администрирование
  • Программирование
  • Монетизация
  • Продвижение
  • Хлам
Menu

Проверка на python модулей UART на базе CH340, PL2303 и прочих.

По причине того, что из китая идет невообразимое колличество бракованных модулей USB-UART на базе CH340, PL2303 и прочих, вот вам python-скрипт для их проверки.
Аргументами задается число проверок для каждой из частот и адрес тестируемого устройства.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random
import argparse
import serial

parser = argparse.ArgumentParser()
parser.add_argument('-d', dest='dev', default='/dev/ttyUSB0', help='serial device')
parser.add_argument('-c', dest='checks', default=3, type=int, help='checks')
args = parser.parse_args()

for baudrate in [256000, 128000, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200]:
    BUFFSIZE = baudrate
    TIMEOUT = BUFFSIZE/(baudrate/8)
    with serial.Serial(args.dev, baudrate, timeout=TIMEOUT) as ser:
        ser.flushInput()
        ser.flushOutput()
        print('* rate:%s timeout:%s buffsize:%s' % (ser.baudrate, ser.timeout, BUFFSIZE))
        for C in range(0, args.checks):
            SENDDATA = ''.join(random.choice('0123456789ABCDEF') for i in range(BUFFSIZE)).encode()
            ser.write(SENDDATA)
            RECVDATA = ser.read(BUFFSIZE)
            print('  %02i result=[%s]' % (C, SENDDATA == RECVDATA))

Скрипт проходит по набору BAUDRATEs, а именно
256000, 128000, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200, пытаясь записать и считать из модуля случайным образом сгенерированный набор байт, размер которого расчитывается изсходя из текущей установленной частоты приема/передачи.

Перед тестированием модуля нужно замкнуть перемычкой контакты RX/TX друг на друга, чтобы все, что вылетало из TX попадало на RX, кстати, таким образом можно вполне однозначно тестировать например витую пару, но это на ваше усмотрение.

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

* rate:256000 timeout:8.0 buffsize:256000
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:128000 timeout:8.0 buffsize:128000
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:115200 timeout:8.0 buffsize:115200
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:57600 timeout:8.0 buffsize:57600
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:38400 timeout:8.0 buffsize:38400
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:19200 timeout:8.0 buffsize:19200
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:9600 timeout:8.0 buffsize:9600
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:4800 timeout:8.0 buffsize:4800
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:2400 timeout:8.0 buffsize:2400
  00 result=[True]
  01 result=[True]
  02 result=[True]
* rate:1200 timeout:8.0 buffsize:1200
  00 result=[True]
  01 result=[True]
  02 result=[True]

Поиск

Метки

adb antiddos bash bubble cache console ddos debian docker eclipse elasticsearch elk ffmpeg fs gentoo glusterfs grafana healthcheck hicam ipcam jquery jscript mail mysql mysqldump nginx nodejs php putty python redirect replication RSS serial socat ssh ssh-agent sysfs systemd tinymce uart usb vim vnc windows

Безопасность

© 2025 Root Only