Найти - Пользователи
Полная версия: Драйвер на С и Python ?
Начало » Python для новичков » Драйвер на С и Python ?
1 2
SandrRu
xam1816
Точная модель экрана есть?
Есть “13.3inch e-Paper e-Ink Display HAT For Raspberry Pi, 1600×1200, Black / White, 16 Grey Scales, USB / SPI / I80”
https://www.waveshare.com/product/displays/e-paper/epaper-1/13.3inch-e-paper-hat.htm
py.user.next
SandrRu
py.user.next
И как ты её написал? Через system()?
Так - https://github.com/SandrRu/e-PaperFrame-IT8951
Надо просто написать программу на C, которая может принимать вообще все параметры для отображения на устройстве.
Потом можно написать уже на питоне программу, которая выполняет эту программу, написанную на C, с разными параметрами, но уже принимает настройки от пользователя.

Модуль ctypes нужен там, где у тебя уже есть скомпилированная библиотека функций и нужно из питона добраться до этих функций внутри библиотеки.

Так что, если даже сделать библиотеку на C для Raspberry Pi, а потом применить ctypes и написать скрипт на питоне, использующий эту библиотеку, то это просто лишние телодвижения. Получится почти то же самое.
xam1816
SandrRu
https://www.waveshare.com/product/displays/e-paper/epaper-1/13.3inch-e-paper-hat.htm
Там очень много информации
Попробуй этот код, он сделан через gpt, по коду который есть в документации, он считывает информацию о дисплее

  
import spidev
import time
# Настройка SPI интерфейса
spi = spidev.SpiDev()
spi.open(0, 0)  # Шина 0, устройство 0 (проверь для своей настройки)
spi.max_speed_hz = 1000000
# Команда для получения информации о дисплее
USDEF_I80_CMD_GET_DEV_INFO = 0x0302  # Уточни значение, если требуется
def lcd_write_cmd(cmd):
    # Отправляем команду как два байта
    spi.xfer2([cmd >> 8, cmd & 0xFF])
def lcd_read_data(num_bytes):
    # Чтение заданного количества байт данных
    return spi.readbytes(num_bytes)
def get_it8951_system_info():
    # Отправляем команду для получения информации о дисплее
    lcd_write_cmd(USDEF_I80_CMD_GET_DEV_INFO)
    
    # Читаем 36 байт данных
    data = lcd_read_data(36)
    
    # Разбор данных в соответствии со структурой I80IT8951DevInfo
    panel_w = int.from_bytes(data[0:2], 'little')
    panel_h = int.from_bytes(data[2:4], 'little')
    img_buf_addr = int.from_bytes(data[4:8], 'little')
    
    # Преобразование версий прошивки и LUT
    fw_version = ''.join(chr(data[i]) for i in range(8, 24)).strip()
    lut_version = ''.join(chr(data[i]) for i in range(24, 40)).strip()
    
    # Вывод информации
    print("Panel(W, H) = ({}, {})".format(panel_w, panel_h))
    print("Image Buffer Address = 0x{:X}".format(img_buf_addr))
    print("FW Version =", fw_version)
    print("LUT Version =", lut_version)
# Вызов функции
get_it8951_system_info()
# Закрытие SPI после работы
spi.close()
SandrRu
xam1816
Попробуй этот код,
Спасибо, попробую через пару дней отпишусь
Rodegast
> Надо просто написать программу на C, которая может принимать вообще все параметры для отображения на устройстве.
Потом можно написать уже на питоне программу, которая выполняет эту программу, написанную на C, с разными араметрами, но уже принимает настройки от пользователя.

Прочти анекдот про Вовочку и арбузы. В нём как раз описана конструкция подобная той что ты предлагаешь
py.user.next
Rodegast
В нём как раз описана конструкция
Да это распространённая архитектура. В Emacs'е, например, можно экспортировать блоки TeX-кода напрямую в pdf. А чтобы это делать, Emacs запускает внешний софт, установленный в системе, для этого. При этом сам Emacs не знает, как сделать pdf из TeX'а.

Если почитаешь код на C, который он выложил, то там ты увидишь его уровень в C, когда он даже ни одной вспомогательной функции не сделал. Чтобы просто хотя бы сделать исполнитель, работающий с директориями, или исполнитель, работающий с путями и файловыми именами и расширениями, у него не хватило элементарных знаний в структурной парадигме.

Поэтому он может сделать что-то на своём уровне - программу, предоставляющую атомарный интерфейс для взаимодействия с устройством. А дальше уже можно задействовать питон или Shell, которые в десять раз облегчат работу. По крайней мере, на питоне можно было бы написать переборщик файлов в директории просто и легко. Ещё проще его было бы написать на Shell'е. И для этого не надо было бы читать inode'ы в зафиксированной на глобальном уровне директории.

Сейчас он будет ещё творчество chat gpt изучать :facepalm:.
Сейчас когда показывают результаты нейронных сетей, там то кошки с тремя лапами, то руки с десятью пальцами на каждой руке постоянно всплывают. Естественно, и коды, сгенерированные нейронными сетями, демонстрируют всё то же самое, только это не всем видно и не с первого взгляда.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB