我正在我的覆盆子pi上运行一个python脚本,它从arduino读取串行输入。这是通过while循环完成的。我试图找出如何停止读取并调用函数或其他脚本从我的PHP代码向arduino写入数据。
我创建了两个不同的脚本,一个读取脚本和一个编写脚本,我需要在需要时从PHP代码调用编写脚本。但在我看来,这可以通过更有效,更简单的方式来完成。
阅读Scipt。
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>