Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2024 00:53:29

SandrRu
Зарегистрирован: 2024-10-31
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Драйвер на С и Python ?

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

Отредактировано SandrRu (Ноя. 7, 2024 00:55:47)

Офлайн

#2 Ноя. 7, 2024 03:55:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

Драйвер на С и Python ?

SandrRu
py.user.next
И как ты её написал? Через system()?
Так - https://github.com/SandrRu/e-PaperFrame-IT8951
Надо просто написать программу на C, которая может принимать вообще все параметры для отображения на устройстве.
Потом можно написать уже на питоне программу, которая выполняет эту программу, написанную на C, с разными параметрами, но уже принимает настройки от пользователя.

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

Так что, если даже сделать библиотеку на C для Raspberry Pi, а потом применить ctypes и написать скрипт на питоне, использующий эту библиотеку, то это просто лишние телодвижения. Получится почти то же самое.



Отредактировано py.user.next (Ноя. 7, 2024 03:56:03)

Офлайн

#3 Ноя. 7, 2024 09:33:55

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1350
Репутация: +  118  -
Профиль   Отправить e-mail  

Драйвер на С и Python ?

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()

Офлайн

#4 Ноя. 7, 2024 09:43:48

SandrRu
Зарегистрирован: 2024-10-31
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Драйвер на С и Python ?

xam1816
Попробуй этот код,
Спасибо, попробую через пару дней отпишусь

Офлайн

#5 Ноя. 7, 2024 13:55:11

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2744
Репутация: +  183  -
Профиль   Отправить e-mail  

Драйвер на С и Python ?

> Надо просто написать программу на C, которая может принимать вообще все параметры для отображения на устройстве.
Потом можно написать уже на питоне программу, которая выполняет эту программу, написанную на C, с разными араметрами, но уже принимает настройки от пользователя.

Прочти анекдот про Вовочку и арбузы. В нём как раз описана конструкция подобная той что ты предлагаешь



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Ноя. 7, 2024 14:36:40)

Офлайн

#6 Ноя. 7, 2024 15:00:06

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

Драйвер на С и Python ?

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

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

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

Сейчас он будет ещё творчество chat gpt изучать :facepalm:.
Сейчас когда показывают результаты нейронных сетей, там то кошки с тремя лапами, то руки с десятью пальцами на каждой руке постоянно всплывают. Естественно, и коды, сгенерированные нейронными сетями, демонстрируют всё то же самое, только это не всем видно и не с первого взгляда.



Отредактировано py.user.next (Ноя. 7, 2024 15:08:12)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version