pytec: Package with entry points

This commit is contained in:
atse 2024-11-11 15:45:03 +08:00
parent 52e35d2a98
commit d5eac60f21
4 changed files with 134 additions and 107 deletions

2
.gitignore vendored
View File

@ -3,3 +3,5 @@ result
*.bin *.bin
__pycache__/ __pycache__/
*.egg-info/
build/

View File

@ -57,10 +57,22 @@
dontFixup = true; dontFixup = true;
auditable = false; auditable = false;
}; };
pytec = pkgs.python3Packages.buildPythonPackage {
pname = "pytec";
version = "0.0.0";
src = "${self}/pytec";
propagatedBuildInputs =
with pkgs.python3Packages; [
numpy
matplotlib
];
};
in in
{ {
packages.x86_64-linux = { packages.x86_64-linux = {
inherit thermostat; inherit thermostat pytec;
default = thermostat; default = thermostat;
}; };

View File

@ -4,13 +4,15 @@ import matplotlib.animation as animation
from threading import Thread, Lock from threading import Thread, Lock
from pytec.client import Client from pytec.client import Client
TIME_WINDOW = 300.0
tec = Client() def main():
target_temperature = tec.get_pid()[0]['target'] TIME_WINDOW = 300.0
print("Channel 0 target temperature: {:.3f}".format(target_temperature))
class Series: tec = Client()
target_temperature = tec.get_pid()[0]['target']
print("Channel 0 target temperature: {:.3f}".format(target_temperature))
class Series:
def __init__(self, conv=lambda x: x): def __init__(self, conv=lambda x: x):
self.conv = conv self.conv = conv
self.x_data = [] self.x_data = []
@ -27,7 +29,7 @@ class Series:
self.x_data = self.x_data[drop:] self.x_data = self.x_data[drop:]
self.y_data = self.y_data[drop:] self.y_data = self.y_data[drop:]
series = { series = {
# 'adc': Series(), # 'adc': Series(),
# 'sens': Series(lambda x: x * 0.0001), # 'sens': Series(lambda x: x * 0.0001),
'temperature': Series(), 'temperature': Series(),
@ -40,12 +42,12 @@ series = {
'tec_i': Series(), 'tec_i': Series(),
'tec_u_meas': Series(), 'tec_u_meas': Series(),
# 'interval': Series(), # 'interval': Series(),
} }
series_lock = Lock() series_lock = Lock()
quit = False quit = False
def recv_data(tec): def recv_data(tec):
global last_packet_time global last_packet_time
for data in tec.report_mode(): for data in tec.report_mode():
ch0 = data[0] ch0 = data[0]
@ -62,16 +64,16 @@ def recv_data(tec):
if quit: if quit:
break break
thread = Thread(target=recv_data, args=(tec,)) thread = Thread(target=recv_data, args=(tec,))
thread.start() thread.start()
fig, ax = plt.subplots() fig, ax = plt.subplots()
for k, s in series.items(): for k, s in series.items():
s.plot, = ax.plot([], [], label=k) s.plot, = ax.plot([], [], label=k)
legend = ax.legend() legend = ax.legend()
def animate(i): def animate(i):
min_x, max_x, min_y, max_y = None, None, None, None min_x, max_x, min_y, max_y = None, None, None, None
series_lock.acquire() series_lock.acquire()
@ -116,13 +118,17 @@ def animate(i):
margin_y = 0.01 * (max_y - min_y) margin_y = 0.01 * (max_y - min_y)
ax.set_ylim(min_y - margin_y, max_y + margin_y) ax.set_ylim(min_y - margin_y, max_y + margin_y)
global legend nonlocal legend
legend.remove() legend.remove()
legend = ax.legend() legend = ax.legend()
ani = animation.FuncAnimation( ani = animation.FuncAnimation(
fig, animate, interval=1, blit=False, save_count=50) fig, animate, interval=1, blit=False, save_count=50)
plt.show() plt.show()
quit = True quit = True
thread.join() thread.join()
if __name__ == "__main__":
main()

View File

@ -9,4 +9,11 @@ setup(
license="GPLv3", license="GPLv3",
install_requires=["setuptools"], install_requires=["setuptools"],
packages=find_packages(), packages=find_packages(),
entry_points={
"gui_scripts": [
"autotune = autotune:main",
"plot = plot:main",
]
},
py_modules=["autotune", "plot"],
) )