Compare commits

..

No commits in common. "42fb68de4dadb99c9513ac361686d58f973d0d49" and "fc87dd7eada3ed63f7ddceb3c2fb3e2c21e0846c" have entirely different histories.

3 changed files with 5 additions and 169 deletions

View file

@ -1,135 +0,0 @@
#! /usr/bin/python3
import sys, os, socket
class cmd_socket:
def __init__(self, path=".cmd.socket", **a):
self.s = None
self.c = []
self.path = None
if path:
self.open(path, **a)
def close(self):
for c in self.c:
c.close()
self.c = []
self.s.close()
self.s = None
if self.path:
os.unlink(self.path)
class cmd_receiver(cmd_socket):
def open(self, path, blocking=False, force=False):
if force:
try:
os.unlink(path)
except FileNotFoundError:
pass
self.blocking=blocking
if self.s:
raise ValueError("socket is not closed")
self.path = path
self.s = socket.socket(socket.AF_UNIX)
self.s.bind(path)
self.s.listen()
self.s.setblocking(blocking)
self.c = []
self.m = b''
def poll(self):
if not self.s:
return
try:
c = self.s.accept()[0]
self.c.append(c)
c.setblocking(self.blocking)
self.s.setblocking(False)
except BlockingIOError:
pass
cc = False
for i, c in enumerate(self.c):
try:
m = c.recv(4096)
if not m:
c.close()
self.c[i] = None
cc = True
else:
self.exec(m)
except BlockingIOError:
pass
if cc:
self.c = [c for c in self.c if c]
if not self.c:
self.s.setblocking(self.blocking)
def exec(self, m):
if self.m:
m = self.m + m
mm = m.split(b'\n')
for m in mm[:-1]:
self.msg(m)
self.tail(mm[-1])
def tail(self, m):
self.m = m
if m:
print(f"socket {self.path}: got tail {m}", file=sys.stderr)
def msg(self, m):
print(f"socket {self.path}: got message {m}", file=sys.stderr)
class cmder(cmd_socket):
def open(self, path):
if self.s:
raise ValueError("socket is not closed")
self.s = socket.socket(socket.AF_UNIX)
self.s.connect(path)
def write(self, m, eol=b'\n'):
if isinstance(m, str):
m = m.encode()
if eol and m[-1:] != eol:
m += eol
self.s.send(m)
def main():
import getopt, time
options, messages = getopt.gnu_getopt(sys.argv[1:], "s:d:rfn")
path = ()
delay = 0.1
receiver = False
force = False
eol = b'\n'
for o,v in options:
if o=="-s":
path = (v,)
if o=="-d":
delay = float(v)
if o=="-r":
receiver = True
if o=="-f":
force = True
if o=="-n":
eol = None
if receiver:
s = cmd_receiver(*path, blocking=True, force=force)
try:
while True:
s.poll()
except KeyboardInterrupt:
s.close()
return
s = cmder(*path)
for m in messages:
if delay:
time.sleep(delay)
s.write(m, eol)
if __name__=="__main__":
main()

View file

@ -12,7 +12,7 @@ class ntc:
The NTC is biases via resistor R₁ from Voltage V₁.
"""
β = 3940.0 # K
β = 3695.0 # K
T25 = 298.16 # K
T0 = 273.16 # K
R25 = 10 # kΩ

View file

@ -1,13 +1,12 @@
#! /usr/bin/python3
import sys, time, getopt, serial, fileinput
import pressure, ntc, linear_regression, cmdsocket
import pressure, ntc, linear_regression
options, files = getopt.gnu_getopt(sys.argv[1:], "xF:s:o:c", ["tty=", "noise", "clock", "socket=", "output="])
options, files = getopt.gnu_getopt(sys.argv[1:], "xF:C", ["tty=", "noise", "clock"])
tty = None
socket = None
out = None
out = sys.stdout
do_noise = False
do_clock = False
@ -19,28 +18,12 @@ for o,v in options:
tty = v
do_clock = True
if o in "--clock":
if o in "-C --clock":
do_clock = True
if o in "-x --noise":
do_noise = True
if o in "--socket":
socket = v
if o in "--output":
if out:
raise ValueError("cannot have multiple --outputs")
if v=="-":
out = sys.stdout
elif v=="--":
out = sys.stderr
else:
out = open(v, "a")
if not out:
out = sys.stdout
if tty and files:
raise ValueError("cannot do tty and files")
@ -164,17 +147,6 @@ processes = {
b'X': echo,
}
class batecmd(cmdsocket.cmd_receiver):
def msg(self, m):
echo(b'r '+m)
inp.write(b'\n' + m + b'\n')
cmd = batecmd(path=None)
if socket:
if not tty:
raise ValueError("cannot have socket without tty")
cmd.open(socket, force=True)
while True:
try:
line = inp.readline()
@ -199,4 +171,3 @@ while True:
if tty:
out.flush()
cmd.poll()