Подтвердить что ты не робот

Есть ли способ получить доступ к оборудованию прямо в Python?

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

Я имею в виду, что я не хочу использовать готовые графические библиотеки, такие как gnome, cocoa и т.д. Я обычно использую Python для кода, а моя программа использует Python, но я также могу кодировать и интегрировать C-модули с он.

Мне известно, что доступ к экранному оборудованию напрямую убирает многоплатформенную сторону Python, но я не обращаю внимания на это ради обучения. Итак: есть ли какой-либо способ доступа к аппаратным средствам непосредственно в Python, и если да, то что это такое?

4b9b3361

Ответ 1

Это кажется отличным способом для самостоятельного обучения, и я бы добавил свои двухценты и предложил рассмотреть возможность поиска GObject, Cairo и Pygame несколько раз.

Модуль Python GObject может находиться на более высоком уровне, чем ваш текущий интерес, но он позволяет рисовать на уровне пикселей с помощью Cairo (см. home), а также общую базу для приложений с графическим интерфейсом с использованием Python

Pygame также имеет методы уровня пикселей, а также методы доступа к графическим драйверам (на более высоком уровне) - вот быстрый пример кода

Ответ 2

Нет, Python не лучший выбор для этого типа необработанного аппаратного доступа к видеокарте. Я бы рекомендовал писать C в DOS. Ну, на самом деле, я не рекомендую. Это ужасно. Но, как я научился это делать, и это, вероятно, так же дружелюбно, как вы собираетесь получить доступ к аппаратным средствам без каких-либо промежуточных результатов.

Я говорю DOS, а не Linux или NT, потому что ни один из них не даст вам прямого доступа к видеооборудованию без написания драйвера. Это означает, что вам нужно изучить весь API-интерфейс драйвера, и вам нужно вызвать много "магии", что не будет очень очевидно, потому что писать видеодрайвер в Windows NT довольно сложно.

Я говорю C, а не Python, потому что он дает вам настоящие указатели и способность делать с ними глупые вещи. В DOS вы можете записывать на произвольные адреса физической памяти в C, которые, похоже, вы хотите. Попытка заставить Python работать вообще под ОС, достаточно страшная, чтобы позволить вам прямой доступ к аппаратным средствам, была бы разочарованием сама по себе, даже если вы только хотели сделать простые вещи, на которых хорошо работает Python.

И, как говорили другие, не ожидайте использовать что-либо, что вы узнаете в этом проекте в реальном мире. Это может быть интересно, но если бы вы попытались написать реальное приложение таким образом, вы бы быстро были расстреляны тем, кто должен был поддерживать ваш код.

Ответ 3

Это скорее старая нить, но я наткнулся на нее, задавая тот же вопрос.

Я использовал программу на языке ассемблера. В мой день на экране было просто (?) Вопрос о том, чтобы высунуть значение в ячейку памяти. Значение включало или выключало пиксель и определяло его цвет.

Термин "poke" происходит от Basic, а не ассемблера. В ассемблере вам нужно было записать значение в регистр данных, а затем сообщить процессору, куда поместить данные, используя другую команду, и указать регистр адресов, обычно в шестнадцатеричной форме! И каждый другой процессор имел свой собственный язык ассемблера. Но hec был кодом быстро!

По мере продвижения аппаратного обеспечения я обнаружил, что программирование графического оборудования становится все более сложным. Там гораздо больше, чем сейчас, просто определяя пиксель. У графической подсистемы есть свой процессор - или процессоры - и это то, чему вы должны научиться разговаривать. Процессор не просто использует plonk в ячейках памяти. (Я считаю, что то, что раньше было самым быстрым суперкомпьютером в мире, какое-то время работало на графических чипах!) "Plonk", кстати, не является базовой.

К сожалению, Я отвлекся. В ответ на исходный запрос постера я считаю, что цель понимания процесса рисования графики могла быть лучше всего достигнута путем экспериментирования с малиной Pi. Он совместим с Python и, следовательно, идеально подходит для работы. Его аппаратное обеспечение хорошо документировано, и оно дешево и легко использовать.

Надеюсь, это поможет кому-то, Cheers, M