From a1394af3aae7469bd2b0fb669b5c2f968bcb82a4 Mon Sep 17 00:00:00 2001 From: Felix Kunsmann Date: Tue, 14 Mar 2017 13:19:02 +0000 Subject: [PATCH] First test on implementing octoprint.printer.PrinterCallback --- octoprint_hd44780/__init__.py | 31 ++++++++++++++++++++++++++- octoprint_hd44780/hd44780_callback.py | 27 +++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 octoprint_hd44780/hd44780_callback.py diff --git a/octoprint_hd44780/__init__.py b/octoprint_hd44780/__init__.py index 707a23c..59cc8ee 100644 --- a/octoprint_hd44780/__init__.py +++ b/octoprint_hd44780/__init__.py @@ -1,6 +1,7 @@ # coding=utf-8 import future +from builtins import chr __author__ = "Felix Kunsmann " __license__ = "GNU Affero General Public License http://www.gnu.org/licenses/agpl.html" @@ -8,6 +9,8 @@ __copyright__ = "Copyright (C) 2017 Felix Kunsmann - Released under terms of the import octoprint.plugin +from hd44780_callback import * + import RPi.GPIO as GPIO from RPLCD import CharLCD @@ -35,8 +38,31 @@ class LCD_HD44780(octoprint.plugin.StartupPlugin, self._lcd = None + self._custom_heatbed = ( + 0b00000, + 0b11111, + 0b10101, + 0b10101, + 0b10001, + 0b10101, + 0b10101, + 0b11111, + ) + + self._custom_tool0 = ( + 0b00000, + 0b11111, + 0b10001, + 0b10111, + 0b10011, + 0b10111, + 0b10001, + 0b11111, + ) + def on_settings_initialized(self): self._initialize_lcd() + self._printer.register_callback(LCD_HD44780_PrinterCallback) def _gpio_board_to_bcm(self, pin): if GPIO.RPI_REVISION == 1: @@ -90,9 +116,12 @@ class LCD_HD44780(octoprint.plugin.StartupPlugin, self._lcd = CharLCD(pin_rs=pin_rs, pin_rw=pin_rw, pin_e=pin_e, pins_data=[pin_d4, pin_d5, pin_d6, pin_d7], numbering_mode=GPIO.getmode(), cols=self.cols, rows=self.rows) + self._lcd.create_char(0, self._custom_heatbed) + self._lcd.create_char(1, self._custom_tool0) + self._lcd.cursor_mode = CursorMode.hide self._lcd.clear() - self._lcd.write_string('Octoprint-LCD-HD44780\n\rVersion: 0.1') + self._lcd.write_string('Octoprint') __plugin_name__ = "LCD: HD44780-compatible" diff --git a/octoprint_hd44780/hd44780_callback.py b/octoprint_hd44780/hd44780_callback.py new file mode 100644 index 0000000..3e6ac10 --- /dev/null +++ b/octoprint_hd44780/hd44780_callback.py @@ -0,0 +1,27 @@ +# coding=utf-8 + +import future +from builtins import chr + +import octoprint.plugin + +class LCD_HD44780_PrinterCallback(octoprint.printer.PrinterCallback): + def on_printer_add_log(data): + pass + + def on_printer_add_message(data): + pass + + def on_printer_add_temperature(data): + LCD_HD44780._lcd.cursor_pos = (3,0) + LCD_HD44780._lcd.write_string(chr(1) + '{:5.1f}/{:3f}'.format(data['tool0']['actual'], data['tool0']['target']) + ' ' + chr(0) + '{:5.1f}/{:3f}'.format(data['tool0']['actual'], data['tool0']['target'])) + + def on_printer_received_registered_message(name, output): + pass + + def on_printer_send_current_data(data): + self._lcd.cursor_pos = (0,0) + self._lcd.write_string(data['state']['text'].center(20)) + + def on_printer_send_initial_data(data): + self._lcd.clear()