Compare commits

..

No commits in common. "026dd1ed9c058f38817a89d023490be77d578156" and "6e0cf26d6a88aa2078a6aa52331d8d9482a89089" have entirely different histories.

4 changed files with 18 additions and 46 deletions

View File

@ -6,19 +6,15 @@ from pytec.client import Client
TIME_WINDOW = 300.0 TIME_WINDOW = 300.0
tec = Client()
target_temperature = tec.get_pid()[0]['target']
print("Channel 0 target temperature: {:.3f}".format(target_temperature))
class Series: class Series:
def __init__(self, conv=lambda x: x): def __init__(self, scale=1.0):
self.conv = conv self.scale = scale
self.x_data = [] self.x_data = []
self.y_data = [] self.y_data = []
def append(self, x, y): def append(self, x, y):
self.x_data.append(x) self.x_data.append(x)
self.y_data.append(self.conv(y)) self.y_data.append(self.scale * y)
def clip(self, min_x): def clip(self, min_x):
drop = 0 drop = 0
@ -29,8 +25,8 @@ class Series:
series = { series = {
'adc': Series(), 'adc': Series(),
'sens': Series(lambda x: x * 0.0001), 'sens': Series(0.0001),
'temperature': Series(lambda t: t - target_temperature), 'temperature': Series(),
'i_set': Series(), 'i_set': Series(),
'pid_output': Series(), 'pid_output': Series(),
'vref': Series(), 'vref': Series(),
@ -59,6 +55,7 @@ def recv_data(tec):
if quit: if quit:
break break
tec = Client()
thread = Thread(target=recv_data, args=(tec,)) thread = Thread(target=recv_data, args=(tec,))
thread.start() thread.start()

View File

@ -1,8 +1,6 @@
import socket import socket
import json import json
CHANNELS = 2
class Client: class Client:
def __init__(self, host="192.168.1.26", port=23, timeout=None): def __init__(self, host="192.168.1.26", port=23, timeout=None):
self._socket = socket.create_connection((host, port), timeout) self._socket = socket.create_connection((host, port), timeout)
@ -24,27 +22,6 @@ class Client:
self._lines = self._lines[1:] self._lines = self._lines[1:]
return line return line
def _get_conf(self, topic):
self._command(topic)
result = []
for channel in range(0, CHANNELS):
line = self._read_line()
conf = json.loads(line)
result.append(conf)
return result
def get_pwm(self):
return self._get_conf("pwm")
def get_pid(self):
return self._get_conf("pid")
def get_steinhart_hart(self):
return self._get_conf("s-h")
def get_postfilter(self):
return self._get_conf("postfilter")
def report_mode(self): def report_mode(self):
"""Start reporting measurement values """Start reporting measurement values

View File

@ -54,7 +54,7 @@ mod net;
mod server; mod server;
use server::Server; use server::Server;
mod session; mod session;
use session::{Session, SessionInput}; use session::{Session, SessionOutput};
mod command_parser; mod command_parser;
use command_parser::{Command, ShowCommand, PwmPin}; use command_parser::{Command, ShowCommand, PwmPin};
mod timer; mod timer;
@ -194,12 +194,10 @@ fn main() -> ! {
if ! socket.is_active() { if ! socket.is_active() {
let _ = socket.listen(TCP_PORT); let _ = socket.listen(TCP_PORT);
session.reset(); session.reset();
} else if socket.may_send() && !socket.may_recv() { } else if socket.can_send() && socket.can_recv() && socket.send_capacity() - socket.send_queue() > 1024 {
socket.close()
} else if socket.can_send() && socket.can_recv() {
match socket.recv(|buf| session.feed(buf)) { match socket.recv(|buf| session.feed(buf)) {
Ok(SessionInput::Nothing) => {} Ok(SessionOutput::Nothing) => {}
Ok(SessionInput::Command(command)) => match command { Ok(SessionOutput::Command(command)) => match command {
Command::Quit => Command::Quit =>
socket.close(), socket.close(),
Command::Reporting(reporting) => { Command::Reporting(reporting) => {
@ -415,7 +413,7 @@ fn main() -> ! {
SCB::sys_reset(); SCB::sys_reset();
} }
} }
Ok(SessionInput::Error(e)) => { Ok(SessionOutput::Error(e)) => {
let _ = writeln!(socket, "Command error: {:?}", e); let _ = writeln!(socket, "Command error: {:?}", e);
} }
Err(_) => Err(_) =>

View File

@ -38,16 +38,16 @@ impl LineReader {
} }
} }
pub enum SessionInput { pub enum SessionOutput {
Nothing, Nothing,
Command(Command), Command(Command),
Error(ParserError), Error(ParserError),
} }
impl From<Result<Command, ParserError>> for SessionInput { impl From<Result<Command, ParserError>> for SessionOutput {
fn from(input: Result<Command, ParserError>) -> Self { fn from(input: Result<Command, ParserError>) -> Self {
input.map(SessionInput::Command) input.map(SessionOutput::Command)
.unwrap_or_else(SessionInput::Error) .unwrap_or_else(SessionOutput::Error)
} }
} }
@ -106,7 +106,7 @@ impl Session {
self.report_pending[channel] = false; self.report_pending[channel] = false;
} }
pub fn feed(&mut self, buf: &[u8]) -> (usize, SessionInput) { pub fn feed(&mut self, buf: &[u8]) -> (usize, SessionOutput) {
let mut buf_bytes = 0; let mut buf_bytes = 0;
for (i, b) in buf.iter().enumerate() { for (i, b) in buf.iter().enumerate() {
buf_bytes = i + 1; buf_bytes = i + 1;
@ -125,6 +125,6 @@ impl Session {
None => {} None => {}
} }
} }
(buf_bytes, SessionInput::Nothing) (buf_bytes, SessionOutput::Nothing)
} }
} }