diff --git a/framebuffer.py b/framebuffer.py new file mode 100644 index 0000000..4a8c517 --- /dev/null +++ b/framebuffer.py @@ -0,0 +1,24 @@ +class Framebuffer(object): + def __init__(self, device_no: int): + self.path = "/dev/fb%d" % device_no + config_dir = "/sys/class/graphics/fb%d/" % device_no + self.size = tuple(_read_and_convert_to_ints( + config_dir + "/virtual_size")) + self.stride = _read_and_convert_to_ints(config_dir + "/stride")[0] + self.bits_per_pixel = _read_and_convert_to_ints( + config_dir + "/bits_per_pixel")[0] + assert self.stride == self.bits_per_pixel // 8 * self.size[0] + def __str__(self): + args = (self.path, self.size, self.stride, self.bits_per_pixel) + return "%s size:%s stride:%s bits_per_pixel:%s" % args + # Note: performance is terrible even for medium resolutions + def show(self, image: Image): + converter = _CONVERTER[(image.mode, self.bits_per_pixel)] + assert image.size == self.size + out = converter(image) + with open(self.path, "wb") as fp: + fp.write(out) + def on(self): + pass + def off(self): + pass \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..bc1b43e --- /dev/null +++ b/main.py @@ -0,0 +1,15 @@ +import clock_pillow +from framebuffer import Framebuffer +import time + + +def main(): + fb = Framebuffer() + while True: + img = clock_pillow.draw_clock(pixelformat="RGB", aliasing=4) + fb.show(img) + time.sleep(0.1) + + +if __name__ == "__main__": + main() \ No newline at end of file