Skip to main content

Handles various message types for the Brilliant Labs Frame

Project description

Frame Message Package

A Python package for handling various types of messages for the Brilliant Labs Frame, including sprites, text, audio, IMU data, and photos.

Installation

pip install frame-msg

Usage

import asyncio
from pathlib import Path

from frame_msg import FrameMsg, TxSprite

async def main():
    """
    Displays sample images on the Frame display.

    The images are indexed (palette) PNG images, in 2, 4, and 16 colors (that is, 1-, 2- and 4-bits-per-pixel).
    """
    frame = FrameMsg()
    try:
        await frame.connect()

        # Let the user know we're starting
        await frame.print_short_text('Loading...')

        # send the std lua files to Frame that handle data accumulation and sprite parsing
        await frame.upload_stdlua_libs(lib_names=['data', 'sprite'])

        # Send the main lua application from this project to Frame that will run the app
        await frame.upload_frame_app(local_filename="lua/sprite_frame_app.lua")

        # attach the print response handler so we can see stdout from Frame Lua print() statements
        frame.attach_print_response_handler()

        # "require" the main frame_app lua file to run it, and block until it has started.
        await frame.start_frame_app()

        # send the 1-bit image to Frame in chunks
        sprite = TxSprite.from_indexed_png_bytes(Path("images/logo_1bit.png").read_bytes())
        await frame.send_message(0x20, sprite.pack())

        # send a 2-bit image
        sprite = TxSprite.from_indexed_png_bytes(Path("images/street_2bit.png").read_bytes())
        await frame.send_message(0x20, sprite.pack())

        # send a 4-bit image
        sprite = TxSprite.from_indexed_png_bytes(Path("images/hotdog_4bit.png").read_bytes())
        await frame.send_message(0x20, sprite.pack())

        await asyncio.sleep(5.0)

        # unhook the print handler
        frame.detach_print_response_handler()

        # break out of the frame app loop and reboot Frame
        await frame.stop_frame_app()

    except Exception as e:
        print(f"An error occurred: {e}")
    finally:
        # clean disconnection
        await frame.disconnect()

if __name__ == "__main__":
    asyncio.run(main())

Acknowledgements

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frame_msg-4.2.0.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

frame_msg-4.2.0-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file frame_msg-4.2.0.tar.gz.

File metadata

  • Download URL: frame_msg-4.2.0.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for frame_msg-4.2.0.tar.gz
Algorithm Hash digest
SHA256 89d9530927ef983d8fda4942cc9e1a540aabf44d36d553d6352cd19fec419db3
MD5 6f04139c17565ee02e4d291ddd1d1ed1
BLAKE2b-256 7ded4df7cc0afde702dc470e2d00db69881f5a1dfb383a7bb585f03a57897e27

See more details on using hashes here.

File details

Details for the file frame_msg-4.2.0-py3-none-any.whl.

File metadata

  • Download URL: frame_msg-4.2.0-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for frame_msg-4.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a8b857eff9363e8c404043537c98e51e39277b935acf675fa713932fc617a98
MD5 3a9eed98996e9e1ab1811b165757bafa
BLAKE2b-256 a544a4e229ee8aae74c4fbed2b12b004232a439fcd6e567e2a92e2736e6bbd10

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page