diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1-Installer-V2.exe b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1-Installer-V2.exe deleted file mode 100644 index 11c87b4..0000000 Binary files a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1-Installer-V2.exe and /dev/null differ diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/.gitignore b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/.name b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/.name deleted file mode 100644 index 06ffd37..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -biogascontrollerapp.py \ No newline at end of file diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/ENATECH.iml b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/ENATECH.iml deleted file mode 100644 index 0e4e9fa..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/ENATECH.iml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/inspectionProfiles/profiles_settings.xml b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/misc.xml b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/misc.xml deleted file mode 100644 index d1e22ec..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/modules.xml b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/modules.xml deleted file mode 100644 index 6610bd3..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1.exe b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1.exe deleted file mode 100644 index 02ebde7..0000000 Binary files a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1.exe and /dev/null differ diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/BiogasControllerAppLogo.png b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/BiogasControllerAppLogo.png deleted file mode 100644 index b8e71ad..0000000 Binary files a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/BiogasControllerAppLogo.png and /dev/null differ diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/Readme.txt b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/Readme.txt deleted file mode 100644 index ebb7e2a..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/Readme.txt +++ /dev/null @@ -1,117 +0,0 @@ - - - ---------------------------------------------------------- - - BiogasControllerApp V2.1 - - ---------------------------------------------------------- - - - Thank you for downloading the new Version of the BiogsaControllerApp! You are greeted with - lots of new features, including a new and redesigned Graphical User Interface (later "GUI") - and an automatic assignment of the comport on Windows. - - ---------------------------------------------------------------------------- - -*FEATURE LIST* - - Easily read out the data the Microcontroller used in ENATECH sends - - Easily change the coefficients for the temperature sonds - - Easily change the temperature that is set for the controller to heat to - - Easy to navigate menus and submenus for better organisation - - (Almost) Bugfree - - Highly detailed error resolving instructions directly inside of the app - - Easy to run: No extra Software required (e.g. Python or similar) - - Easy to install and uninstall as it has an installer and uninstaller - - -####################################################################################################### - - _________ - - CHANGELOG - _________ - - DEVELOPMENT VERSIONS - ....................... - - dev-V2rev1: - - new GUI - - complete rework of the backend - - functioning value reading module - - dev-V2rev2: - - functioning Read-Data Screen - - automatic assignment of the serial port - - dev-V2rev3: - - functioning Change-Temperature screen - - functioning Change-All-Data screen - - dev-V2rev4: - - some Error-Infos were added - - V2-Rc1: - - Bugfixes - - V2-Rc2: - - Bugfixes - - - dev-V2.1rev1: - - fixed a bug, where it was possible that the app crashed if an error in - the communication module occured - - dev-V2.1rev2: - - Optimised port assignment so that it now can handle multiple comports - - dev-V2.1rev3: - - added way more detailed Error information and Error-resolving hints - - dev-v2.1rev4: - - fixed a bug, where it was possible that the app crashed if one unplugged - the cable whilst in any other screen than the homescreen or credits screen - - V2.1-Rc1: - - small Bugfixes - - - - FULL RELEASES - ...................... - - V2: - - NEW GUI - - NEW Backend - - AUTOMATIC assignment of COMPORTS - - V2.1 - - DETAILED Error-Info - - DETAILED Error-Resolving-Tips - - MORE RELIABLE Comport handling - - BUGFIXES - - - -****************************************************************************************************** - - THIS APP IS FREE TO USE FOR ALL STUDENTS AT THE - KANTONSSCHULE WOHLEN - -****************************************************************************************************** - - - DEVELOPMENT: - - - Microcontroller Software: Dr. A. Cornaz - - BiogasControllerApp V1.0.0: S. Reichmuth - - BiogasControllerApp V2.x: J. Hutz - - - -================================== -=== COPYRIGHT 2022 J. Hutz ====== -================================== - - - - diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/__pycache__/biogascontrollerapp.cpython-38.pyc b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/__pycache__/biogascontrollerapp.cpython-38.pyc deleted file mode 100644 index ddccd89..0000000 Binary files a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/__pycache__/biogascontrollerapp.cpython-38.pyc and /dev/null differ diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/gui/gui.kv b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/gui/gui.kv deleted file mode 100644 index babb5f3..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/gui/gui.kv +++ /dev/null @@ -1,611 +0,0 @@ -RootScreen: - HomeScreen: - ReadoutScreen: - ReadData: - ProgramTemp: - Program: - Credits: - -: - 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() - -: - 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() - -: - 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() - -: - 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() - -: - 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() - -: - 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() - -: - 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() - -: - 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() - -: - 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 -###################################### - -: - 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" - -: - 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} - -: - 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: "" - -: - 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() - -: - 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() - -: - 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" diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/communication.cpython-38.pyc b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/communication.cpython-38.pyc deleted file mode 100644 index a508582..0000000 Binary files a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/communication.cpython-38.pyc and /dev/null differ diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/comport_search.cpython-38.pyc b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/comport_search.cpython-38.pyc deleted file mode 100644 index 5b24120..0000000 Binary files a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/comport_search.cpython-38.pyc and /dev/null differ diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/lib.cpython-38.pyc b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/lib.cpython-38.pyc deleted file mode 100644 index cac2669..0000000 Binary files a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/__pycache__/lib.cpython-38.pyc and /dev/null differ diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/communication.py b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/communication.py deleted file mode 100644 index 768f6d6..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/communication.py +++ /dev/null @@ -1,96 +0,0 @@ -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() diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/comport_search.py b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/comport_search.py deleted file mode 100644 index 020e75a..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/comport_search.py +++ /dev/null @@ -1,22 +0,0 @@ -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 diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/lib.py b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/lib.py deleted file mode 100644 index 7c5f507..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/bin/lib/lib.py +++ /dev/null @@ -1,73 +0,0 @@ -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]) diff --git a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/biogascontrollerapp.py b/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/biogascontrollerapp.py deleted file mode 100644 index a14538a..0000000 --- a/BiogasControllerApp-V2.1/BiogasControllerApp-V2.1/biogascontrollerapp.py +++ /dev/null @@ -1,507 +0,0 @@ -print(""" - -===================== - -BIOGASCONTROLLERAPP - ----------- -Version 2.1 -Copyright 2022 J.Hutz""") -import time -import threading -import platform -import os -os.environ["KIVY_NO_CONSOLELOG"] = "1" -from kivy.uix.screenmanager import Screen, ScreenManager -from kivy.uix.popup import Popup -from kivy.app import App -from kivy.lang import Builder -from kivy.clock import mainthread -import bin.lib.lib -import bin.lib.communication -import bin.lib.comport_search - - - - -com = bin.lib.lib.Com() - -################################################################## -# Popups -################################################################## - - -class QuitPU(Popup): - def quitapp(self): - com.quitcom() - - -class NoConnection(Popup): - def details(self): - self.detailsinfo = DetailInfo() - self.detailsinfo.open() - - -class DetailInfo(Popup): - update_details = "" - def infos(self): - self.err = "" - try: - com.connect(19200, "") - com.quitcom() - except Exception as err: - self.err += "Errormessage:\n" - self.err += str(err) - self.err += "\n-------------------------------------------------------------------------------------------------------------------------------------------------------------\n" - return str(self.err) - - def error_tips(self): - self.err_tip = "" - try: - com.connect(19200, "") - com.quitcom() - except Exception as err: - self.err_tip += "Possible way to resolve the issue: \n\n" - if str(err)[0:10] == "[Errno 13]": - if platform.system() == "Linux": - self.err_tip += f"Open a terminal and type in: sudo chmod 777 {bin.lib.comport_search.ComportService().get_comport()}" - elif platform.system() == "Macintosh": - self.err_tip += "Give permission to access the cable" - elif platform.system() == "Windows": - self.err_tip += "Try a different cable or install another driver" - else: - self.err_tip += "Unknown OS" - elif str(err)[0:10] == "[Errno 2] ": - if platform.system() == "Linux": - self.err_tip += "Connect a cable, open a terminal and type in: sudo chmod 777 /dev/ttyUSB0" - elif platform.system() == "Macintosh": - self.err_tip += "Give permission to access the cable" - elif platform.system() == "Windows": - self.err_tip += "Try a different cable or install another driver" - else: - self.err_tip += "Unknown OS" - elif str(err)[0:34] == "could not open port '/dev/ttyUSB0'": - self.err_tip += "Please connect the PC with the microcontroller!" - elif str(err)[0:26] == f"could not open port '{bin.lib.comport_search.ComportService().get_comport()}'": - self.err_tip += "Try using a different cable or close all monitoring software (like MSI Afterburner)" - else: - self.err_tip += "Special Error, consult the manual of Serial" - return str(self.err_tip) - - -class Modeswitch(Popup): - pass - - -class Connecting_PU(Popup): - pass - - -class Disconnecting_PU(Popup): - pass - - -class MissingFieldsError(Popup): - pass - - -class ConnectionFail(Popup): - pass - - -class SaveConf(Popup): - pass - - -#################################################################### -# SCREENS -#################################################################### - -class HomeScreen(Screen): - connected = 1 - try: - com.connect(19200, "") - com.quitcom() - except: - connected = 0 - - def tryconnection(self): - try: - com.connect(19200, "") - com.quitcom() - self.connected = 1 - self.manager.current = "Readout" - self.manager.transition.direction = "right" - except: - self.connected = 0 - self.open_popup() - - def open_popup(self): - self.popups = NoConnection() - self.popups.open() - - def exitapp(self): - self.pup = QuitPU() - self.pup.open() - - -class ReadoutScreen(Screen): - go = 1 - def start_com(self): - self.comstart(1) - - def comstart(self, pu_on): - try: - com.connect(19200, "") - self.go = 1 - except: - self.go = 0 - - if self.go == 1: - self.parent.current = "Readout" - if pu_on == 1: - self.openstartpu() - else: - pass - self.communication = threading.Thread(name="communication", target=self.start_coms) - self.communication.start() - else: - self.openconnectionfailpu() - - def end_com(self): - self.stopcom(1) - - def stopcom(self, pu_on): - self.go = 0 - try: - self.communication.join() - except: - pass - if pu_on == 1: - self.openendpu() - else: - pass - - def start_coms(self): - self.check = 1 - self.__level = 0 - self.__distance = 0 - self.__x = "" - self.__begin = time.time() - self.go = 1 - while self.__x != "\n": - if time.time() - self.__begin > 5: - self.go = 0 - break - else: - self.__x = com.decode_ascii(com.receive(1)) - - if self.go == 1: - while self.__level < 3: - self.__x = com.decode_ascii(com.receive(1)) - if self.__x == " ": - if self.__distance == 4: - self.__level += 1 - else: - pass - self.__distance = 0 - else: - if self.__distance > 4: - self.__level = 0 - self.__distance = 0 - else: - self.__distance += 1 - self.check = 1 - com.receive(5) - else: - self.go = 0 - self.check = 0 - - while self.go == 1: - self.__starttime = time.time() - self.__output = "" - self.__data_recieve = com.receive(68) - self.__output += "Tadc: " - self.__output += str(com.decode_int(self.__data_recieve[0:4])) - self.__output += "\nTemperatur: " - self.__output += com.decode_float(self.__data_recieve[5:11]) - self.__output += f"\nDuty-Cycle: {(float(com.decode_float_2(self.__data_recieve[48:52])) / 65535) * 100}%" - self.change_screen(1, self.__output) - self.__output = "Tadc: " - self.__output += str(com.decode_int(self.__data_recieve[12:16])) - self.__output += "\nTemperatur: " - self.__output += com.decode_float(self.__data_recieve[17:23]) - self.__output += f"\nDuty-Cycle: {(float(com.decode_float_2(self.__data_recieve[53:57])) / 65535) * 100}%" - self.change_screen(2, self.__output) - self.__output = "Tadc: " - self.__output += str(com.decode_int(self.__data_recieve[24:28])) - self.__output += "\nTemperatur: " - self.__output += com.decode_float(self.__data_recieve[29:35]) - self.__output += f"\nDuty-Cycle: {(float(com.decode_float_2(self.__data_recieve[58:62])) / 65535) * 100}%" - self.change_screen(3, self.__output) - self.__output = "Tadc: " - self.__output += str(com.decode_int(self.__data_recieve[36:40])) - self.__output += "\nTemperatur: " - self.__output += com.decode_float(self.__data_recieve[41:47]) - self.__output += "\nDuty-Cycle: " - self.__output += f"\nDuty-Cycle: {(float(com.decode_float_2(self.__data_recieve[63:67])) / 65535) * 100}%" - self.change_screen(4, self.__output) - self.change_screen(5, f"F={1 / (time.time() - self.__starttime)}") - self.change_screen(6, "") - com.quitcom() - - def switch_mode(self, text): - self.go = 0 - try: - self.communication.join() - com.quitcom() - except: - pass - if text == "Normal Mode": - bin.lib.communication.SwitchMode().disable_fastmode() - else: - bin.lib.communication.SwitchMode().enable_fastmode() - self.openpupups() - self.comstart(0) - - @mainthread - def change_screen(self, pos, value): - if pos == 1: - self.ids.sonde1.text = value - elif pos == 2: - self.ids.sonde2.text = value - elif pos == 3: - self.ids.sonde3.text = value - elif pos == 4: - self.ids.sonde4.text = value - elif pos == 6: - self.openconnectionfailpu() - else: - self.ids.frequency.text = value - - def openpupups(self): - self.popup = Modeswitch() - self.popup.open() - - def openendpu(self): - self.pu = Disconnecting_PU() - self.pu.open() - - def openstartpu(self): - self.pup = Connecting_PU() - self.pup.open() - - def openconnectionfailpu(self): - if self.check == 0: - self.cfpu = ConnectionFail() - self.cfpu.open() - else: - pass - - def leave_screen(self): - self.stopcom(0) - - def resscreen(self): - self.ids.sonde1.text = "" - self.ids.sonde2.text = "" - self.ids.sonde3.text = "" - self.ids.sonde4.text = "" - self.ids.frequency.text = "" - - -class Program(Screen): - def create_com(self): - self.coms = bin.lib.communication.Communication() - - def send_data(self): - try: - self.create_com() - self.go = 1 - except: - self.go = 0 - - if self.go == 1: - self.__transmit = [] - if self.ids.s1_a.text != "" and self.ids.s1_b.text != "" and self.ids.s1_c.text != "" and self.ids.s1_t.text != "" and self.ids.s2_a.text != "" and self.ids.s2_b.text != "" and self.ids.s2_c.text != "" and self.ids.s2_t.text != "" and self.ids.s3_a.text != "" and self.ids.s3_b.text != "" and self.ids.s3_c.text != "" and self.ids.s3_t.text != "" and self.ids.s4_a.text != "" and self.ids.s4_b.text != "" and self.ids.s4_c.text != "" and self.ids.s4_t.text != "": - self.__transmit.append(self.ids.s1_a.text) - self.__transmit.append(self.ids.s1_b.text) - self.__transmit.append(self.ids.s1_c.text) - self.__transmit.append(self.ids.s1_t.text) - self.__transmit.append(self.ids.s2_a.text) - self.__transmit.append(self.ids.s2_b.text) - self.__transmit.append(self.ids.s2_c.text) - self.__transmit.append(self.ids.s2_t.text) - self.__transmit.append(self.ids.s3_a.text) - self.__transmit.append(self.ids.s3_b.text) - self.__transmit.append(self.ids.s3_c.text) - self.__transmit.append(self.ids.s3_t.text) - self.__transmit.append(self.ids.s4_a.text) - self.__transmit.append(self.ids.s4_b.text) - self.__transmit.append(self.ids.s4_c.text) - self.__transmit.append(self.ids.s4_t.text) - self.coms.change_all(self.__transmit,"") - self.ids.s1_a.text = "" - self.ids.s1_b.text = "" - self.ids.s1_c.text = "" - self.ids.s1_t.text = "" - self.ids.s2_a.text = "" - self.ids.s2_b.text = "" - self.ids.s2_c.text = "" - self.ids.s2_t.text = "" - self.ids.s3_a.text = "" - self.ids.s3_b.text = "" - self.ids.s3_c.text = "" - self.ids.s3_t.text = "" - self.ids.s4_a.text = "" - self.ids.s4_b.text = "" - self.ids.s4_c.text = "" - self.ids.s4_t.text = "" - self.openconfpu() - else: - self.openerrorpu() - else: - self.open_confail_pu() - - def openerrorpu(self): - self.pu = MissingFieldsError() - self.pu.open() - - def open_confail_pu(self): - self.cfpu = ConnectionFail() - self.cfpu.open() - - def openconfpu(self): - self.confpus = SaveConf() - self.confpus.open() - - -class ProgramTemp(Screen): - def create_com(self): - self.coms = bin.lib.communication.Communication() - - def send_data(self): - try: - self.create_com() - self.go = 1 - except: - self.go = 0 - - if self.go == 1: - self.__transmit = [] - if self.ids.temp_s1.text != "" and self.ids.temp_s2.text != "" and self.ids.temp_s3.text != "" and self.ids.temp_s4.text != "": - self.__transmit.append(self.ids.temp_s1.text) - self.__transmit.append(self.ids.temp_s2.text) - self.__transmit.append(self.ids.temp_s3.text) - self.__transmit.append(self.ids.temp_s4.text) - self.coms.change_temp(self.__transmit, "") - self.ids.temp_s1.text = "" - self.ids.temp_s2.text = "" - self.ids.temp_s3.text = "" - self.ids.temp_s4.text = "" - self.openconfpu() - else: - self.openerrorpu() - else: - self.open_confail_pu() - - def openerrorpu(self): - self.pu = MissingFieldsError() - self.pu.open() - - def openconfpu(self): - self.confpu = SaveConf() - self.confpu.open() - - def open_confail_pu(self): - self.cfpu = ConnectionFail() - self.cfpu.open() - - -class ReadData(Screen): - def read_data(self): - try: - com.connect(19200, "") - self.go = 1 - except: - self.go = 0 - - if self.go == 1: - com.send("RD") - self.__pos = 1 - self.__beginning = time.time() - self.go = 1 - while True: - if time.time() - self.__beginning < 5: - 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 == "R": - self.__data_recieve = com.decode_ascii(com.receive(1)) - if self.__data_recieve == "D": - 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 - else: - self.go = 0 - break - if self.go == 1: - for i in range(4): - self.__x = com.receive(28) - self.__output = "a: " - self.__output += str(com.decode_float(self.__x[0:6])) - self.__output += f"\nb: {str(com.decode_float(self.__x[7:13]))}" - self.__output += f"\nc: {str(com.decode_float(self.__x[14:20]))}" - self.__output += f"\nTemp: {str(com.decode_float(self.__x[21:27]))}" - if self.__pos == 1: - self.ids.inf_sonde1.text = self.__output - elif self.__pos == 2: - self.ids.inf_sonde2.text = self.__output - elif self.__pos == 3: - self.ids.inf_sonde3.text = self.__output - elif self.__pos == 4: - self.ids.inf_sonde4.text = self.__output - self.__pos += 1 - else: - self.open_confail_pu() - com.quitcom() - else: - self.open_confail_pu() - - def open_confail_pu(self): - self.cfpu = ConnectionFail() - self.cfpu.open() - - -class Credits(Screen): - pass - - -######################################################## -# Screenmanager -######################################################## - - -class RootScreen(ScreenManager): - pass - - -kv = Builder.load_file("./bin/gui/gui.kv") - - -class BiogasControllerApp(App): - def build(self): - self.icon = "./BiogasControllerAppLogo.png" - return kv - - -if __name__ == "__main__": - BiogasControllerApp().run()