Предыстория: у меня есть два компьютера, подключенных к сети. Я использую http-сервер, который я сделал в python на первом компьютере. На втором компьютере я получаю доступ к каталогу, связанному с http-сервером, и открываю файл html. Файл html показывает время, которое я установил на первом компьютере, и время, которое у меня есть на втором компьютере.
проблема: в идеале я пытаюсь сделать кнопку в файле html, которая отправляет время обратно к компьютеру в переменной некоторого типа. Что я затем могу использовать для отправки данных через UART. У меня есть рабочий код python для моего UART, httpserver, рабочий html и javascript на время
python сервер:
import http.server
import socketserver
PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
python uart:
import serial
from serial import Serial
ser = serial.Serial(
port='COM8',
baudrate = 57600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
print("Serial is open: "+ str(ser.isOpen()))
ser.write('!TA9000\r\n'.encode())
y = ser.readline()
ser.write('!T?\r\n'.encode())
x = ser.readline()
print(x.decode())
ser.close()
html
<html>
<head>
<script src="serverTime.js"></script>
<style>
body{ background-color: #D3D3D3}
h1 {text-align: center}
div {text-align: center;}
</style>
</head>
<script>
var setS = setInterval(localServerTime, 1000);
var setL = setInterval(localTime, 500);
var st = srvTime();
var stime = new Date(st);
stime.setSeconds(stime.getSeconds() - 1);
function localTime() {
var ltime = new Date();
document.getElementById('local').innerHTML = "Local time: " + ltime ;
}
function localServerTime() {
stime.setSeconds(stime.getSeconds() + 1);
unixTime();
document.getElementById('server').innerHTML = "Server time: " + stime; //display
}
function unixTime(){
var utime = stime.getTime();
document.getElementById('unix').innerHTML = "Server Unix time: " + (utime/1000 | 0);
}
function send_time(){
// put stuff here
}
function show_hide() {
var x = document.getElementById("local");
var y = document.getElementById("server");
var z = document.getElementById("unix");
if (x.style.display == "none") {
x.style.display = "block";
y.style.display = "block";
z.style.display = "block";
}
else {
x.style.display = "none";
y.style.display = "none";
z.style.display = "none";
}
}
</script>
<body onload=" localTime(); localServerTime()">
<p>
<div id="local"></div>
<div id="server"></div>
<div id="unix"></div>
<div>
<button onclick="show_hide()">on/off</button>
<button onclick="send_time()">Send Time</button>
</div>
</p>
</body>
JavaScript, который получает время от сервера
var xmlHttp;
//update ip & port in this file and the port in the python file
var iPort = "192.168.10.1:8000";
function srvTime(){
try {
//FF, Opera, Safari, Chrome
xmlHttp = new XMLHttpRequest();
}
catch (err1) {
//IE
try {
xmlHttp = new ActiveXObject(iPort);
}
catch (err2) {
try {
xmlHttp = new ActiveXObject(iPort);
}
catch (eerr3) {
alert("Not supported");
}
}
}
xmlHttp.open('HEAD',window.location.href.toString(),false);
xmlHttp.setRequestHeader("Content-Type", "text/html");
xmlHttp.send('');
return xmlHttp.getResponseHeader("Date");
}