Compare commits

..

3 commits

5 changed files with 125 additions and 31 deletions

View file

@ -1,6 +1,13 @@
<?php <?php
$f = fopen("/tmp/mapid.fifo", "w+"); define("FIFO", "/tmp/mapid");
if (!file_exists(FIFO))
die("<!DOCTYPE html>\n<meta charset=\"UTF-8\">\n<h3 style=\"color:red;\">Error: FIFO file “" . FIFO . "” does not exist!</h3><p>Is <tt>fifo_bridge.py</tt> running?</p>");
$f = fopen(FIFO, "w+");
switch ($_POST["cmd"]) { switch ($_POST["cmd"]) {
case "getty": case "getty":

View file

@ -6,37 +6,43 @@ $Title = "MAPID-FIFO Web-UI";
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title> <title><?=$Title?></title>
<link rel="stylesheet" type="text/css" href="style.css">
</head> </head>
<body> <body>
<header> <header>
<h1><?=$Title?></h1> <h1><?=$Title?></h1>
</header> </header>
<main> <main>
<form action="command.php" method="POST"> <section>
<input type="hidden" name="cmd" value="getty"> <form action="command.php" method="POST">
<button type="submit">Getty</button> <input type="hidden" name="cmd" value="getty">
</form> <button type="submit">Getty</button>
<hr> </form>
<form action="command.php" method="POST"> </section>
<input type="hidden" name="cmd" value="cls"> <section>
<button type="submit">Clear</button> <form action="command.php" method="POST">
</form> <input type="hidden" name="cmd" value="cls">
<hr> <button type="submit">Clear</button>
<form action="command.php" method="POST"> </form>
<input type="hidden" name="cmd" value="line"> </section>
<select name="line" height="1"> <section>
<option value="1">1</option> <form action="command.php" method="POST">
<option value="2">2</option> <input type="hidden" name="cmd" value="line">
</select> <select name="line" height="1">
<button type="submit">Select line</button> <option value="1">1</option>
</form> <option value="2">2</option>
<hr> </select>
<form action="command.php" method="POST"> <button type="submit">Select line</button>
<input type="hidden" name="cmd" value="echo"> </form>
<input type="text" name="text"> </section>
<button type="submit">Output</button> <section>
</form> <form action="command.php" method="POST">
<input type="hidden" name="cmd" value="echo">
<input type="text" name="text" placeholder="Text">
<button type="submit">Output</button>
</form>
</section>
</main> </main>
</body> </body>
</html> </html>

56
fifo-webui/style.css Normal file
View file

@ -0,0 +1,56 @@
*, *:before, *:after {
box-sizing: border-box;
}
h1 {
font: 2em "Source Serif Pro", serif;
margin: 1em 0 2em;
padding: .5em;
text-align: center;
}
main {
width: 25em;
max-width: 100%;
padding: .5em;
margin: 0 auto;
}
section {
margin: 0 0 2em;
}
input, select {
border-radius: 6px;
padding: 6px 14px;
/*background: #DFDEDF;*/
background: #efefef;
/*box-shadow: 0px 0.5px 1px rgba(0, 0, 0, 0.1), inset 0px 0.5px 0.5px rgba(255, 255, 255, 0.5), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.12);*/
color: #6E6D70;
display: inline-block;
margin-right: .5em;
}
/* https://getcssscan.com/css-buttons-examples */
button {
/*display: flex;
flex-direction: column;
align-items: center;*/
padding: 6px 14px;
font-family: -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
border-radius: 6px;
border: none;
background: #6E6D70;
box-shadow: 0px 0.5px 1px rgba(0, 0, 0, 0.1), inset 0px 0.5px 0.5px rgba(255, 255, 255, 0.5), 0px 0px 0px 0.5px rgba(0, 0, 0, 0.12);
color: #DFDEDF;
user-select: none;
-webkit-user-select: none;
touch-action: manipulation;
}
button:focus {
box-shadow: inset 0px 0.8px 0px -0.25px rgba(255, 255, 255, 0.2), 0px 0.5px 1px rgba(0, 0, 0, 0.1), 0px 0px 0px 3.5px rgba(58, 108, 217, 0.5);
outline: 0;
}

View file

@ -4,9 +4,10 @@ import os
import sys import sys
import time import time
import mapid import mapid
from serial.serialutil import SerialException
FIFO = "/tmp/mapid.fifo" FIFO = "/tmp/mapid"
def main(): def main():
@ -19,10 +20,7 @@ def main():
os.mkfifo(FIFO) os.mkfifo(FIFO)
time.sleep(0.2) time.sleep(0.2)
print("Created FIFO " + FIFO, file=sys.stderr) print("Created FIFO " + FIFO, file=sys.stderr)
# f = open(FIFO, "w")
# f.write("\n")
# f.close()
# print("Created FIFO " + FIFO, file=sys.stderr)
f = open(FIFO, "r") f = open(FIFO, "r")
print("Opened FIFO for reading", file=sys.stderr) print("Opened FIFO for reading", file=sys.stderr)
m.cls() m.cls()
@ -39,6 +37,9 @@ def main():
except KeyboardInterrupt: except KeyboardInterrupt:
keep_going = False keep_going = False
print() print()
except SerialException:
keep_going = False
print("Caught a SerialException. Exiting now...", file=sys.stderr)
os.remove(FIFO) os.remove(FIFO)
print("Removed FIFO.", file=sys.stderr) print("Removed FIFO.", file=sys.stderr)

View file

@ -1,3 +1,8 @@
"""MAPID utility library.
This module contains an utility class to control MAPID/CP using pyserial.
"""
import os import os
import time import time
import dotenv # import dotenv #
@ -5,8 +10,15 @@ import serial
DOTENV_LOADED = False DOTENV_LOADED = False
"""bool: Is .env loaded?
Prevents loading .env multiple times for speed.
"""
def load_dotenv(): def load_dotenv():
"""Load .env file
"""
basedir = os.path.abspath(os.path.dirname(__file__)) basedir = os.path.abspath(os.path.dirname(__file__))
dotenv.load_dotenv(os.path.join(basedir, ".env")) dotenv.load_dotenv(os.path.join(basedir, ".env"))
global DOTENV_LOADED global DOTENV_LOADED
@ -14,6 +26,12 @@ def load_dotenv():
def get_serial_dev(): def get_serial_dev():
"""Get SERIAL_DEV setting from dotenv.
Returns:
str: The device file.
"""
global DOTENV_LOADED global DOTENV_LOADED
if not DOTENV_LOADED: if not DOTENV_LOADED:
load_dotenv() load_dotenv()
@ -21,6 +39,12 @@ def get_serial_dev():
def get_serial_speed(): def get_serial_speed():
"""Get SERIAL_SPEED setting from dotenv.
Returns:
int: Serial speed in baud.
"""
global DOTENV_LOADED global DOTENV_LOADED
if not DOTENV_LOADED: if not DOTENV_LOADED:
load_dotenv() load_dotenv()