1)Когда мы хотим прочитать определенную информацию, мы создаем структуру в которую записываем номер Reg(регистра) и номер Page(страницы) откуда мы будем читать, Data заполняется просто нулями. Тем самым мы выделяем буфер под те данные которые мы будем дальше читать. Затем вызывая функцию чтения из файла (так как все устройства в linux представлены как обычные файлы), мы передаем в неё указатель на созданную нами структуру. В процессе чтения драйвер сначала проверят размер созданной нами структуры, если все в норме то он вычитывает номер регистра и страницы, а затем записывает в Data данные которые располагаются по переданному нами адресу(регистр страница).
2)Операция записи происходит аналогично, только в Data мы изначально записываем те данные которые затем необходимо передать в драйвер.
Проблема в том что в питоне я новичок и пока не знаю всех тонкостей работы со структурами. Сразу оговорюсь что использую python 2.7.1.
Что пытался сделать:
Создавать структуру в виде списка, словаря….но указать типизацию при этом сложно и тем более передавать адреса страницы и регистра в виде 0x а не ввиде строки. Пробовал пользоваться модулем struct, но успеха пока тоже не добился.
Вот примерно как я пытаюсь читать:
from struct import *
input = open(r'/dev/camera', 'rb')
twidata = pack('CCH', 0x1, 0x97, 0x0)
print twidata
twidata = input.read(4) #еще у меня большие сомнения по поводу данной операции, передается ли указатель на структуру twidata при такой попытке чтения. Если не передается то как его передать явно?
print twidata
Прошу помощи, как из питона управлять сишным драйвером, требующим структуру с адресами.