Как отправить время клиента в javascript на http-сервер в python - PullRequest
0 голосов
/ 07 августа 2020

Предыстория: у меня есть два компьютера, подключенных к сети. Я использую 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");
}

...