Я пытаюсь получить текст для отображения на ЖК-дисплее 16x2, подключенном к Raspberry Pi (используя библиотеку Adafruit_CircuitPython_CharLCD).Когда в моем коде есть текстовая строка, все работает, но когда она предоставляется в качестве аргумента при запуске сценария, я не могу получить специальные / escape-символы для правильного отображения.
Я пытался преобразовать sys.argv[1]
в байты, используя os.fsencode(sys.argv[1])
, затем декодирование в utf-8 или ascii.Я искал библиотеку для какой-либо конкретной ссылки на кодировку.Я не очень разбираюсь в кодировке.
#!/usr/bin/env python3
#lcd.py
import os, sys
from time import sleep
import board
import digitalio
import adafruit_character_lcd.character_lcd as characterlcd
#LCD setup
lcd_columns = 16
lcd_rows = 2
lcd_rs = digitalio.DigitalInOut(board.D5)
lcd_en = digitalio.DigitalInOut(board.D6)
lcd_d4 = digitalio.DigitalInOut(board.D13)
lcd_d5 = digitalio.DigitalInOut(board.D16)
lcd_d6 = digitalio.DigitalInOut(board.D19)
lcd_d7 = digitalio.DigitalInOut(board.D26)
lcd = characterlcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows)
#Special character definitions
degree = bytes([0xc, 0x12, 0x12, 0xc, 0x0, 0x0, 0x0, 0x0])
lcd.create_char(0, degree)
def display(text):
lcd.clear()
lcd.message = text
if __name__ == '__main__':
display(" T: 19.5\x00C\nSet 21.0\x00C")
sleep(5)
display(sys.argv[1])
Я называю свой скрипт так: $ python3 lcd.py " T: 19.5\x00C\nSet 21.0\x00C"
Сейчас он отображается правильно в течение пяти секунд:
T: 19.5°C
Set 21.0°C
И затем отображает эту красоту:
T: 19.5¥x00C¥nS
С пустой второй строкой (\ n не распознается).
Любая помощь будет принята с благодарностью.Спасибо!