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("Программа остановлена пользователем")
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 |