Добавил изначальные файлы
This commit is contained in:
		
						commit
						465df94f07
					
				
							
								
								
									
										29
									
								
								sketch_feb14a/sketch_feb14a.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								sketch_feb14a/sketch_feb14a.ino
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | #include <SimpleModbusSlave.h> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #define PIN1 7  // Пин для проверки состояния
 | ||||||
|  | 
 | ||||||
|  | // Настройка регистров
 | ||||||
|  | #define TOTAL_REGS 1 | ||||||
|  | uint16_t regs[TOTAL_REGS] = {0}; // Один регистр для хранения статуса
 | ||||||
|  | 
 | ||||||
|  | SimpleModbusSlave slave(1);  // Инициализация Slave с ID 1
 | ||||||
|  | 
 | ||||||
|  | void setup() { | ||||||
|  |     // Настройка пина как вход
 | ||||||
|  |     pinMode(PIN1, INPUT); | ||||||
|  | 
 | ||||||
|  |     // Настройка скорости передачи данных
 | ||||||
|  |     slave.setup(115200); // Установка скорости передачи данных 115200
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void loop() { | ||||||
|  |     // Чтение состояния пина
 | ||||||
|  |     int pinState = digitalRead(PIN1); | ||||||
|  | 
 | ||||||
|  |     // Установка регистра в 1, если пин HIGH, иначе 0
 | ||||||
|  |     regs[0] = (pinState == HIGH) ? 1 : 0; | ||||||
|  | 
 | ||||||
|  |     // Запуск цикла Modbus slave
 | ||||||
|  |     slave.loop(regs, TOTAL_REGS); | ||||||
|  | } | ||||||
							
								
								
									
										79
									
								
								Сервер.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								Сервер.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,79 @@ | |||||||
|  | from flask import Flask, jsonify | ||||||
|  | from pymodbus.client.serial import ModbusSerialClient | ||||||
|  | 
 | ||||||
|  | app = Flask(__name__) | ||||||
|  | 
 | ||||||
|  | # Настройка Modbus клиента | ||||||
|  | port_Arduino = 'COM3'  # Убедитесь, что это правильный порт для вашего компьютера | ||||||
|  | baudrate = 115200 | ||||||
|  | 
 | ||||||
|  | client = ModbusSerialClient(port=port_Arduino, baudrate=115200, timeout=1, stopbits=1, bytesize=8, parity='N') | ||||||
|  | 
 | ||||||
|  | # Попытка подключения к Modbus клиенту | ||||||
|  | try: | ||||||
|  |     if client.connect(): | ||||||
|  |         print("Подключение успешно!") | ||||||
|  |     else: | ||||||
|  |         print("Не удалось подключиться к порту.") | ||||||
|  | except PermissionError as e: | ||||||
|  |     print(f'Ошибка доступа к порту: {e}') | ||||||
|  | except Exception as e: | ||||||
|  |     print(f'Ошибка подключения: {e}') | ||||||
|  | 
 | ||||||
|  | STATUS_REGISTER = 0  # Адрес регистра, где хранится статус | ||||||
|  | 
 | ||||||
|  | @app.route('/modbus-status', methods=['GET']) | ||||||
|  | def modbus_status(): | ||||||
|  |     try: | ||||||
|  |         result = client.read_holding_registers(STATUS_REGISTER, 1) | ||||||
|  |         if result.isError(): | ||||||
|  |             return jsonify({'error': 'Не удалось прочитать данные с Arduino'}), 500 | ||||||
|  |         else: | ||||||
|  |             connected = bool(result.registers[0]) | ||||||
|  |             return jsonify({'connected': connected}) | ||||||
|  |     except Exception as e: | ||||||
|  |         return jsonify({'error': str(e)}), 500 | ||||||
|  | 
 | ||||||
|  | @app.route('/') | ||||||
|  | def index(): | ||||||
|  |     return ''' | ||||||
|  |     <!DOCTYPE html> | ||||||
|  |     <html lang="ru"> | ||||||
|  |     <head> | ||||||
|  |       <meta charset="UTF-8"> | ||||||
|  |       <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |       <title>Статус пина</title> | ||||||
|  |       <style> | ||||||
|  |         #status-circle { | ||||||
|  |           width: 100px; | ||||||
|  |           height: 100px; | ||||||
|  |           border-radius: 50%; | ||||||
|  |           background-color: red; | ||||||
|  |         } | ||||||
|  |       </style> | ||||||
|  |     </head> | ||||||
|  |     <body> | ||||||
|  |       <div id="status-circle"></div> | ||||||
|  | 
 | ||||||
|  |       <script> | ||||||
|  |         function updateStatus() { | ||||||
|  |           fetch('/modbus-status') | ||||||
|  |             .then(response => response.json()) | ||||||
|  |             .then(data => { | ||||||
|  |               const circle = document.getElementById('status-circle'); | ||||||
|  |               if (data.connected) { | ||||||
|  |                 circle.style.backgroundColor = 'green'; | ||||||
|  |               } else { | ||||||
|  |                 circle.style.backgroundColor = 'red'; | ||||||
|  |               } | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         setInterval(updateStatus, 1000);  // Проверка статуса каждую секунду | ||||||
|  |       </script> | ||||||
|  |     </body> | ||||||
|  |     </html> | ||||||
|  |     ''' | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     app.run(debug=True, host='0.0.0.0') | ||||||
							
								
								
									
										
											BIN
										
									
								
								Снимок.PNG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Снимок.PNG
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 54 KiB | 
		Loading…
	
		Reference in New Issue
	
	Block a user