Publish the files

This commit is contained in:
simplePCBuilding
2022-01-27 17:06:30 +00:00
parent 8a1b59a988
commit bf990dd4cf
20 changed files with 1458 additions and 164 deletions

View File

@@ -0,0 +1,611 @@
RootScreen:
HomeScreen:
ReadoutScreen:
ReadData:
ProgramTemp:
Program:
Credits:
<QuitPU>:
title: "BiogasControllerApp"
font_size: 50
size_hint: 0.5, 0.4
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Are you sure you want to leave?"
font_size: 20
GridLayout:
cols:2
Button:
text: "Yes"
font_size: 15
on_release:
root.quitapp()
app.stop()
Button:
text: "No"
font_size: 15
on_press:
root.dismiss()
<NoConnection>:
title: "WARNING!"
font_size: 50
size_hint: 0.5, 0.4
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Unable to open Serial Port"
font_size: 20
GridLayout:
cols:2
Button:
text: "Details"
on_release:
root.details()
Button:
text:"Ok"
on_release:
root.dismiss()
<ConnectionFail>:
title: "WARNING!"
font_size: 50
size_hint: 0.7, 0.6
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Unable to communicate"
font_size: 20
Label:
text: "Possible ways to resolve this problem:\n- Try again\n- Restart the PIC16F877 or reset the program\n- Check the cable / connect one"
font_size: 14
Button:
text:"Ok"
on_release:
root.dismiss()
<DetailInfo>:
on_open: self.update_details = root.infos()
title: "DETAILS"
font_size: 50
size_hint: 1, 0.7
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Unable to open Serial Port"
font_size: 20
Label:
id: errormessage
text: root.infos()
font_size: 13
Label:
text: root.error_tips()
font_size: 13
Button:
text:"Ok"
on_release:
root.dismiss()
<Modeswitch>:
title: "NOTICE!"
font_size: 50
size_hint: 0.5, 0.4
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Mode Switched!"
font_size: 30
Button:
text:"Ok"
on_release:
root.dismiss()
<SaveConf>:
title: "NOTICE!"
font_size: 50
size_hint: 0.5, 0.4
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "SAVED!"
font_size: 30
Button:
text:"Ok"
on_release:
root.dismiss()
<Connecting_PU>:
title: "NOTICE!"
font_size: 50
size_hint: 0.5, 0.4
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Establishing connection with PIC16F877"
font_size: 18
Label:
text: "This Process may take a while..."
font_size: 15
Button:
text:"Ok"
on_release:
root.dismiss()
<MissingFieldsError>:
title: "WARNING!"
font_size: 50
size_hint: 0.5, 0.4
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Missing Information!"
font_size: 18
Label:
text: "Check your entry"
font_size: 15
Button:
text:"Ok"
on_release:
root.dismiss()
<Disconnecting_PU>:
title: "NOTICE!"
font_size: 50
size_hint: 0.5, 0.4
auto_dismiss: False
GridLayout:
cols:1
Label:
text: "Connection with PIC16F877 terminated"
font_size: 18
Label:
text: "The connection to the Microcontroller\nhas been terminated successfully"
font_size: 15
Button:
text:"Ok"
on_release:
root.dismiss()
######################################
# SCREENS
######################################
<HomeScreen>:
name: "Home"
canvas.before:
Color:
rgba: (50,50,50,0.2)
Rectangle:
size: self.size
pos: self.pos
GridLayout:
cols:1
Label:
text: "BiogasanlageControllerApp"
font_size: 50
color: (0, 113, 0, 1)
bold:True
italic:True
FloatLayout:
GridLayout:
cols: 2
size_hint: 0.8, 0.8
pos_hint: {"x": 0.1, "y": 0.1}
Button:
text: "Start"
background_color: (255, 0, 0, 0.6)
font_size: 30
on_release:
root.tryconnection()
Button:
text: "Quit"
background_color: (255, 0, 0, 0.6)
font_size: 30
on_release:
root.exitapp()
Label:
text: "You are currently running Version 2.1.0 - If you encounter a bug, please report it!"
font_size: 13
pos_hint: {"y": -0.45, "x":0.05}
Button:
text: "credits"
font_size: 13
size_hint: 0.07, 0.06
pos_hint: {"x":0.01, "y":0.01}
background_color: (50, 0, 0, 0.2)
on_release:
app.root.current = "Credits"
root.manager.transition.direction = "left"
<ReadoutScreen>:
on_pre_enter: self.reset_screen = root.resscreen()
name: "Readout"
canvas.before:
Color:
rgba: (50,50,50,0.2)
Rectangle:
size: self.size
pos: self.pos
GridLayout:
FloatLayout:
Label:
pos_hint: {"y":0.4}
text: "READOUT"
font_size: 40
color: (0, 113, 0, 1)
bold: True
GridLayout:
cols:4
size_hint: 0.8, 0.3
pos_hint: {"x":0.1, "y":0.4}
Label:
text: "SONDE 1: "
font_size: 20
Label:
id: sonde1
text: ""
Label:
text: "SONDE 2: "
font_size: 20
Label:
id: sonde2
text: ""
Label:
text: "SONDE 3: "
font_size: 20
Label:
id: sonde3
text: ""
Label:
text: "SONDE 4: "
font_size: 20
Label:
id: sonde4
text: ""
Button:
text: "Start communication"
size_hint: 0.2, 0.1
pos_hint: {"x": 0.5, "y": 0.05}
background_color: (255, 0, 0, 0.6)
on_release:
root.start_com()
Button:
text: "End communication"
size_hint: 0.2, 0.1
pos_hint: {"x": 0.7, "y": 0.05}
background_color: (255, 0, 0, 0.6)
on_release:
root.end_com()
Button:
text: "Back"
size_hint: 0.3, 0.1
pos_hint: {"x":0.05, "y":0.05}
background_color: (255, 0, 0, 0.6)
on_release:
root.leave_screen()
app.root.current = "Home"
root.manager.transition.direction = "left"
ToggleButton:
id: mode_sel
size_hint: 0.15, 0.1
pos_hint: {"x":0.1, "y":0.2}
text: "Normal Mode" if self.state == "normal" else "Fast Mode"
on_text: root.switch_mode(mode_sel.text)
background_color: (255,0,0,0.6) if self.state == "normal" else (0,0,255,0.6)
Button:
text: "Read Data"
size_hint: 0.15, 0.1
pos_hint: {"x":0.3, "y":0.2}
background_color: (255, 0, 0, 0.6)
on_release:
root.leave_screen()
app.root.current = "RD"
root.manager.transition.direction = "down"
Button:
text: "Temperature"
size_hint: 0.15, 0.1
pos_hint: {"x":0.5, "y":0.2}
background_color: (255, 0, 0, 0.6)
on_release:
root.leave_screen()
app.root.current = "PT"
root.manager.transition.direction = "down"
Button:
text: "Change all Data"
size_hint: 0.15, 0.1
pos_hint: {"x":0.7, "y":0.2}
background_color: (255, 0, 0, 0.6)
on_release:
root.leave_screen()
app.root.current = "PR"
root.manager.transition.direction = "down"
Label:
id: frequency
text: "Frequency will appear here"
font_size: 10
pos_hint: {"x":0.4, "y": 0.3}
<ReadData>:
name: "RD"
canvas.before:
Color:
rgba: (50,50,50,0.2)
Rectangle:
size: self.size
pos: self.pos
GridLayout:
FloatLayout:
Label:
text: "Read Data"
font_size: 40
color: (0, 113, 0, 1)
bold: True
pos_hint: {"y":0.4}
Button:
text: "Start Readout"
size_hint: 0.2, 0.1
pos_hint: {"x":0.4, "y":0.1}
on_release:
root.read_data()
Button:
text: "Back"
size_hint: 0.2, 0.1
pos_hint: {"x":0.1, "y":0.1}
background_color: (255, 0, 0, 0.6)
on_release:
app.root.current = "Readout"
root.manager.transition.direction = "up"
GridLayout:
cols:4
size_hint: 0.8, 0.4
pos_hint: {"x":0.1, "y":0.3}
Label:
text: "Sonde 1"
font_size: 20
Label:
id: inf_sonde1
text: ""
Label:
text: "Sonde 2"
font_size: 20
Label:
id: inf_sonde2
text: ""
Label:
text: "Sonde 3"
font_size: 20
Label:
id: inf_sonde3
text: ""
Label:
text: "Sonde 4"
font_size: 20
Label:
id: inf_sonde4
text: ""
<ProgramTemp>:
name: "PT"
canvas.before:
Color:
rgba: (50,50,50,0.2)
Rectangle:
size: self.size
pos: self.pos
GridLayout:
FloatLayout:
Label:
text: "Change Temperature"
pos_hint: {"y":0.4}
font_size: 40
color: (0, 113, 0, 1)
bold: True
GridLayout:
size_hint: 0.8, 0.4
pos_hint: {"x": 0.1, "y":0.3}
cols:2
Label:
text: "Temperatur Sonde 1: "
TextInput:
id: temp_s1
multiline: False
input_filter: "float"
Label:
text: "Temperatur Sonde 2: "
TextInput:
id: temp_s2
multiline: False
input_filter: "float"
Label:
text: "Temperatur Sonde 3: "
TextInput:
id: temp_s3
multiline: False
input_filter: "float"
Label:
text: "Temperatur Sonde 4: "
TextInput:
id: temp_s4
multiline: False
input_filter: "float"
Button:
text: "Back"
size_hint: 0.2, 0.1
pos_hint: {"x":0.1, "y":0.1}
background_color: (255, 0, 0, 0.6)
on_release:
app.root.current = "Readout"
root.manager.transition.direction = "up"
Button:
text: "Save"
size_hint: 0.2, 0.1
pos_hint: {"x":0.6, "y":0.1}
background_color: (255, 0, 0, 0.6)
on_release:
root.send_data()
<Program>:
name: "PR"
canvas.before:
Color:
rgba: (50,50,50,0.2)
Rectangle:
size: self.size
pos: self.pos
FloatLayout:
Label:
text: "Change all Data"
font_size: 40
color: (0, 113, 0, 1)
bold: True
pos_hint: {"y":0.4}
GridLayout:
size_hint: 0.8, 0.5
pos_hint: {"x":0.1, "y":0.2}
cols: 4
Label:
text: "Sonde 1, a:"
TextInput:
id: s1_a
multiline: False
input_filter: "float"
Label:
text: "Sonde 1, b:"
TextInput:
id: s1_b
multiline: False
input_filter: "float"
Label:
text: "Sonde 1, c:"
TextInput:
id: s1_c
multiline: False
input_filter: "float"
Label:
text: "Sonde 1, Temp:"
TextInput:
id: s1_t
multiline: False
input_filter: "float"
Label:
text: "Sonde 2, a:"
TextInput:
id: s2_a
multiline: False
input_filter: "float"
Label:
text: "Sonde 2, b:"
TextInput:
id: s2_b
multiline: False
input_filter: "float"
Label:
text: "Sonde 2, c:"
TextInput:
id: s2_c
multiline: False
input_filter: "float"
Label:
text: "Sonde 2, Temp:"
TextInput:
id: s2_t
multiline: False
input_filter: "float"
Label:
text: "Sonde 3, a:"
TextInput:
id: s3_a
multiline: False
input_filter: "float"
Label:
text: "Sonde 3, b:"
TextInput:
id: s3_b
multiline: False
input_filter: "float"
Label:
text: "Sonde 3, c:"
TextInput:
id: s3_c
multiline: False
input_filter: "float"
Label:
text: "Sonde 3, Temp:"
TextInput:
id: s3_t
multiline: False
input_filter: "float"
Label:
text: "Sonde 4, a:"
TextInput:
id: s4_a
multiline: False
input_filter: "float"
Label:
text: "Sonde 4, b:"
TextInput:
id: s4_b
multiline: False
input_filter: "float"
Label:
text: "Sonde 4, c:"
TextInput:
id: s4_c
multiline: False
input_filter: "float"
Label:
text: "Sonde 4, Temp:"
TextInput:
id: s4_t
multiline: False
input_filter: "float"
Button:
text: "Back"
size_hint: 0.2, 0.1
pos_hint: {"x":0.1, "y":0.1}
background_color: (255, 0, 0, 0.6)
on_release:
app.root.current = "Readout"
root.manager.transition.direction = "up"
Button:
text: "Save"
size_hint: 0.2, 0.1
pos_hint: {"x":0.6, "y":0.1}
background_color: (255, 0, 0, 0.6)
on_release:
root.send_data()
<Credits>:
name: "Credits"
canvas.before:
Color:
rgba: (50,50,50,0.2)
Rectangle:
size: self.size
pos: self.pos
FloatLayout:
Button:
text: "back"
size_hint: 0.4, 0.2
pos_hint: {"x":0.3, "y":0.1}
on_release:
app.root.current = "Home"
root.manager.transition.direction = "right"
GridLayout:
cols:1
pos_hint:{"x":0.05, "y":0.35}
size_hint: 0.9, 0.5
Label:
text: "This is a rework of the BiogasControllerApp V1, that was originally programmed by S. Reichmuth."
Label:
text: "Written by: Janis Hutz\nDesigned by: Janis Hutz\nDesign language: Kivy"

View File

@@ -0,0 +1,96 @@
import bin.lib.lib
com = bin.lib.lib.Com()
class Communication:
def __init__(self):
self.__x = 0
self.__data_recieve = 0
self.__output = ""
def change_temp(self, data, special_port):
com.connect(19200, special_port)
com.send("PT")
self.go = 0
while True:
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "\n":
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "P":
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "T":
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "\n":
self.go = 1
break
else:
pass
else:
pass
else:
pass
else:
pass
if self.go == 1:
self.data = data
while len(self.data) > 0:
self.__data_recieve = com.receive(3)
if self.__data_recieve != "":
com.send_float(float(self.data.pop(0)))
else:
print("error")
break
else:
print("Error")
com.quitcom()
def change_all(self, data, special_port):
com.connect(19200, special_port)
com.send("PR")
self.go = 0
while True:
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "\n":
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "P":
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "R":
self.__data_recieve = com.decode_ascii(com.receive(1))
if self.__data_recieve == "\n":
self.go = 1
break
else:
pass
else:
pass
else:
pass
else:
pass
if self.go == 1:
self.data = data
while len(self.data) > 0:
self.__data_recieve = com.receive(3)
if self.__data_recieve != "":
com.send_float(float(self.data.pop(0)))
else:
print("error")
break
else:
print("Error")
com.quitcom()
class SwitchMode:
def __init__(self):
pass
def enable_fastmode(self):
com.connect(19200,"")
com.send("FM")
com.quitcom()
def disable_fastmode(self):
com.connect(19200, "")
com.send("NM")
com.quitcom()

View File

@@ -0,0 +1,22 @@
import serial.tools.list_ports
class ComportService:
def __init__(self):
self.__comport = []
self.__import = []
self.__working = []
def get_comport(self, special_port=""):
self.__comport = [comport.device for comport in serial.tools.list_ports.comports()]
self.__pos = 0
if special_port != "":
self.__working = special_port
else:
while self.__working == []:
self.__com_name = serial.tools.list_ports.comports()[self.__pos]
if "USB-Serial Controller" or "Prolific USB-Serial Controller" in self.__com_name:
self.__working = self.__comport.pop(self.__pos)
else:
self.__pos += 1
return self.__working

View File

@@ -0,0 +1,73 @@
import serial
import struct
import bin.lib.comport_search
"""@package docstring
This package can communicate with a microcontroller"""
coms = bin.lib.comport_search.ComportService()
class Com:
def __init__(self):
self.xr = ""
self.output = ""
self.str_input = ""
self.str_get_input = ""
self.xs = ""
self.__comport = '/dev/ttyUSB0'
def connect(self, baudrate, special_port):
try:
self.__comport = coms.get_comport(special_port)
except:
pass
self.ser = serial.Serial(self.__comport, baudrate=baudrate, timeout=5)
def quitcom(self):
try:
self.ser.close()
except:
pass
def receive(self, amount_bytes):
self.xr = self.ser.read(amount_bytes)
return self.xr
def decode_ascii(self, value):
try:
self.output = value.decode()
except:
self.output = "Error"
return self.output
def check_value(self, value_check, checked_value):
if value_check == checked_value:
return 1
else:
return 0
def decode_int(self, value):
self.i = int(value, base = 16)
return self.i
def decode_float(self, value):
self.fs = str(value, 'ascii') + '00'
self.f = struct.unpack('>f', bytes.fromhex(self.fs))
return str(self.f[0])
def decode_float_2(self, value):
self.fs = str(value, 'ascii') + '0000'
self.f = struct.unpack('>f', bytes.fromhex(self.fs))
return str(self.f[0])
def get_input(self):
self.str_get_input = input("please enter a character to send: ")
return self.str_get_input
def send(self, str_input):
self.xs = str_input.encode()
self.ser.write(self.xs)
def send_float(self, float_input):
ba = bytearray(struct.pack('>f', float_input))
self.ser.write(ba[0:3])