Я использую скрипт Python на моем Raspberry Pi, который читает последовательный ввод с Arduino. Это делается с помощью истинного цикла. Я пытаюсь выяснить, как я могу прекратить чтение и вызвать функцию или другой скрипт для записи данных в arduino из моего кода PHP.
Я создал два разных сценария, сценарий чтения и записи, и при необходимости вызываю сценарий записи из кода PHP. Но мне кажется, что это можно сделать более эффективным и более простым способом.
Чтение Скипта.
while True:
data = serial.readline().decode('ascii')
if data.find("#UID") != -1 :
print("UID found" + data)
elif data.find("#USER") != -1:
UpdateUser(data)
elif data.find("#ALARM") != -1:
UpdateAlarm(data)
elif data.find("#INHABITANTS") != -1:
if FindUserHome() == False:
serial.write(b'NO#')
else:
serial.write(b'YES#')
Написание сценария
import serial
import sys
import time
serial = serial.Serial("/dev/ttyACM0", baudrate = 9600, timeout = 1)
time.sleep(3)
name = sys.argv[1]
print(sys.argv[1])
serial.reset_output_buffer()
serial.write(b"WRITE:"+name.encode() + b"________#")
exit()
PHP
<?php
include_once "../DataAcces/Database_Functions.inc";
if (isset($_POST["submit"]) && isset($_POST["idPerson"]) && isset($_GET["query"]))
{
$firstName = getFirstName($_POST["idPerson"])[0];
system("sudo python /home/pi/Python_Scripts/writing.py " . escapeshellarg($firstName));
system("sudo python /home/pi/Python_Scripts/reading.py");
} else if (!isset($_GET["query"]) && is_null($_GET["query"]))
header("redirect: Person.php");
else system("sudo killall python");
?>
<!doctype html>
Задача ещё не решена.
Других решений пока нет …