#!/usr/bin/env python # -*- coding: utf_8 -*- """ Modbus TestKit: Implementation of Modbus protocol in python (C)2009 - Luc Jean - luc.jean@gmail.com (C)2009 - Apidev - http://www.apidev.fr This is distributed under GNU LGPL license, see license.txt """ import sys import struct import numpy as np import modbus_tk import modbus_tk.defines as cst from modbus_tk import modbus_tcp """from sense_emu import SenseHat""" from sense_hat import SenseHat import kbhit, time; sense = SenseHat() def main(): """main""" kbhit.init(); running = True; logger = modbus_tk.utils.create_logger(name="console", record_format="%(message)s") screen = np.zeros((8, 8, 3), dtype=np.uint8) actual_color_value1 = int(0) actual_color_value2 = int(0) actual_color_value3 = int(0) try: #Create the server server = modbus_tcp.TcpServer(port=1502) logger.info("running...") logger.info("enter 'q' for closing the server") server.start() slave_1 = server.add_slave(1) slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 100) while running: if kbhit.kbhit(): ch = kbhit.getch(); if 'q' == ch: running = False; north = sense.compass; """print("North: %s" %north);""" slave_1.set_values('0', 0, struct.unpack('>HH', struct.pack('>f', sense.temp))) slave_1.set_values('0', 2, struct.unpack('>HH', struct.pack('>f', sense.pressure))) slave_1.set_values('0', 4, struct.unpack('>HH', struct.pack('>f', sense.humidity))) slave_1.set_values('0', 6, struct.unpack('>HH', struct.pack('>f', north))) out_values = slave_1.get_values('0', 20, 3) color_value1 = out_values[0] color_value2 = out_values[1] color_value3 = out_values[2] if actual_color_value1 != color_value1 or actual_color_value2 != color_value2 or actual_color_value3 != color_value3 : color = (color_value1, color_value2, color_value3) screen[0:8, 0:8, :] = color sense.set_pixels([pixel for row in screen for pixel in row]) actual_color_value1 = color_value1 actual_color_value2 = color_value2 actual_color_value3 = color_value3 """time.sleep(0.05);""" finally: server.stop() kbhit.restore(); if __name__ == "__main__": main()