54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
#python d:\Антоше\Универ\Гит\Software_and_hardware\Версия_2.0\Server.py
|
||
|
||
|
||
|
||
|
||
import serial
|
||
import serial.tools.list_ports
|
||
import minimalmodbus
|
||
import time
|
||
|
||
def find_arduino_port():
|
||
ports = list(serial.tools.list_ports.comports())
|
||
for port in ports:
|
||
if "Arduino" in port.description or "CH340" in port.description:
|
||
return port.device
|
||
return None
|
||
|
||
|
||
|
||
# Настройки порта
|
||
port = find_arduino_port() # Укажите порт, к которому подключен Arduino
|
||
slave_id = 1 # ID устройства (адрес Arduino)
|
||
baudrate = 9600
|
||
timeout = 1 # Время ожидания в секундах
|
||
|
||
# Настроим модбас клиента
|
||
client = minimalmodbus.Instrument(port, slave_id) # Создаем объект клиента Modbus
|
||
client.serial.baudrate = baudrate # Устанавливаем скорость
|
||
client.serial.timeout = timeout # Время ожидания ответа
|
||
client.mode = minimalmodbus.MODE_RTU # Используем RTU
|
||
|
||
# Ожидаем получения данных от Arduino
|
||
try:
|
||
while True:
|
||
try:
|
||
# Чтение 4 регистров с адреса 0
|
||
result = client.read_registers(0, 1, functioncode=3)
|
||
print(f"Полученные данные: {result}")
|
||
break # Выход из цикла, если данные получены
|
||
except minimalmodbus.NoResponseError:
|
||
print("Ошибка: Нет ответа от устройства. Повторяем...")
|
||
time.sleep(1) # Подождать 1 секунду и попробовать снова
|
||
except Exception as e:
|
||
print(f"Ошибка: {e}")
|
||
break
|
||
|
||
except KeyboardInterrupt:
|
||
print("Программа остановлена пользователем")
|
||
|
||
|
||
|
||
|
||
|