LINUX.ORG.RU

VirtualGPIO. Эмулятор GPIO для Raspberry Pi 3. А так же отладочная утилита управления GPIO.

 , , , , virtual gpio


0

1

В ходе одного моего проекта мне понадобилось проводить отладку взаимодействия с GPIO. Проще было выполнять большую часть тестов не на Raspberry Pi, а на ПК который использую для разработки. Поэтому я написал небольшую утилиту для эмуляции GPIO. Но кроме эмуляции, данная утилита ещё может работать и с реальным GPIO (не проверял) отслеживая состояние вводов и посылая сигналы на выходы.

Пакет для Debian https://yadi.sk/d/81w1aWnMx2tZK
Исходный код https://yadi.sk/d/n-OqSBLwx2td5

Публикую данную программу под лицензией GNU GPL v3.

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

☆☆☆

Последнее исправление: rezedent12 (всего исправлений: 2)

Ответ на: комментарий от BRE

Я правильно понимаю:

Нет

она на бейсике

На gambas

и не на гитхабе?

Да. Пока нет смысла.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Придумай. Сквозной на проект. Мы на форуме спо или как? Вдруг кто захочет по стопам пойти. Он задолбается в твоем сраче про коммунизм этим темы выискивать.

dk-
()

Божественный код от самого светоча! С благоговением открываю архив, не знаю, чего там ожидать! :D

Harald ★★★★★
()
Ответ на: комментарий от Harald

благоговением открываю архив, не знаю, чего там ожидать! :D

Остатки от первоначальной переусложнённой логики которую я упростил. Да и комментариев я маловато оставил.

rezedent12 ☆☆☆
() автор топика

Что-то мне подсказывает, что тебе лучше не писать код. xD

r3lgar ★★★★★
()
Ответ на: комментарий от dk-
'Китайский код
  ButtonGPIO.Add(ButtonGPIO1, 0)
  ButtonGPIO.Add(ButtonGPIO1, 1)
  ButtonGPIO.Add(ButtonGPIO2, 2)
  ButtonGPIO.Add(ButtonGPIO3, 3)
  ButtonGPIO.Add(ButtonGPIO4, 4)
  ButtonGPIO.Add(ButtonGPIO5, 5)  
  ButtonGPIO.Add(ButtonGPIO6, 6)
  ButtonGPIO.Add(ButtonGPIO7, 7)
  ButtonGPIO.Add(ButtonGPIO8, 8)
  ButtonGPIO.Add(ButtonGPIO9, 9)
  ButtonGPIO.Add(ButtonGPIO10, 10)
  ButtonGPIO.Add(ButtonGPIO11, 11)
  ButtonGPIO.Add(ButtonGPIO12, 12)
  ButtonGPIO.Add(ButtonGPIO13, 13)
  ButtonGPIO.Add(ButtonGPIO14, 14)
  ButtonGPIO.Add(ButtonGPIO15, 15)
  ButtonGPIO.Add(ButtonGPIO16, 16)
  ButtonGPIO.Add(ButtonGPIO17, 17)
  ButtonGPIO.Add(ButtonGPIO18, 18)
  ButtonGPIO.Add(ButtonGPIO19, 19)
  ButtonGPIO.Add(ButtonGPIO20, 20)
  ButtonGPIO.Add(ButtonGPIO21, 21)
  ButtonGPIO.Add(ButtonGPIO22, 22)
  ButtonGPIO.Add(ButtonGPIO23, 23)
  ButtonGPIO.Add(ButtonGPIO24, 24)
  ButtonGPIO.Add(ButtonGPIO25, 25)
  ButtonGPIO.Add(ButtonGPIO26, 26)
  ButtonGPIO.Add(ButtonGPIO27, 27)
  m = ButtonGPIO.Max
Stil ★★★★★
()

а гамбас — это вариант бейсика?

Public Sub InitProgram()
  'Dim ArgMax As Integer
  Dim f As File
  Dim s As String
  Dim a As Integer
  'Dim n As Integer
  Dim l As Integer
  Dim m As Integer
Stil ★★★★★
()
Ответ на: комментарий от Harald

ТС, а для кого ты выложил этот код, кто целевая аудитория?

Те кто использует Raspberry Pi

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Stil

Пришлось ибо расположение GPIO на raspberry pi хаотичное. Так что либо пришлось бы «китайским кодом» вводить координаты всех элементов либо как я сделал, китайским кодом создать на них ссылки.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от dk-

Да нет, всё сводится именно к тому, что это Бейсик. Просто нужно использовать его в среде, где люди понимают Бейсик и желают на нём писать. Примерно как разговаривать на суахили в России. Если вокруг все знают только русский, люди просто не поймут. Но можно найти какую-то тусовку, где можно пообщаться на этом языке.

Здесь на Бейсик не говорят. Маргинальный уже язык, без оправданий.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

На BASIC не говорят, на нём пишут. И не маргинальный, а экзотический. Маргинальным его считают либо те кто его не знают совсем, либо те чьё знание исчерпывается школьным изучением GW-BASIC. Ну и просто дураки которые любят повторять за другими.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

На BASIC не говорят, на нём пишут.

Похоже, сути фразы ты так и не понял.

И не маргинальный, а экзотический.

И в чём отличие?

не знают совсем

А зачем его знать?

i-rinat ★★★★★
()
Ответ на: комментарий от rezedent12

На BASIC не говорят, на нём пишут

Любой язык — средство общения, способ донести свои идеи (да-да :D) до адресата. И совершенно не обязательно этот адресат — машина, даже в случае с языками программирования. Читая код, другой человек может понять, что ты имеешь в виду, воспринять записанную в нем идею.

А может и не понять — если не владеет использованным тобой языком, например, ввиду его маргинальности. Или владеет, но в коде трудно что-то понять из-за сумбурности и запутанности изложения. Понемаешь? %)

не маргинальный, а экзотический

Эскобар.3gp

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

Я преследовал цель не «идею донести», а написать нужную мне программу. И решил поделиться ею с теми кому она может пригодится.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

И решил поделиться ею с теми кому она может пригодится.

Как по-твоему, сколько в мире людей, пишуших на gambas-е программы для Raspberry Pi, управляющие GPIO и умеющих понимать комментарии на русском?

Harald ★★★★★
()
Ответ на: комментарий от Harald

Как по-твоему, сколько в мире людей, пишуших на gambas-е программы для Raspberry Pi

Ты так говоришь как будто что бы использовать какую либо программу нужно обязательно знать язык на котором она написана.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Harald

Как по-твоему, сколько в мире людей, пишуших на gambas-е программы для Raspberry Pi, управляющие GPIO и умеющих понимать комментарии на русском?

Я считаю, что ты не прав. (нет, ну что язык программирования лучше менять на другой - я не спорю) Но. Т.е. смотри, автор написал (удобную для него), утилиту для отладки GPIO. Там есть готовый, скомпилированный пакет, чё те вообще эти исходники? Бери и юзай. Если тебе не нужно - так и скажи, не пользуюсь таким, а не разводи флуд.

fehhner ★★★★★
()

Я ниосилил смысла. Нехватает GPIO на самой плате? И где хранятся эти «фейковые» GPIO. Они формат sysfs имеют? edge поддерживают? по коду ваще ниче не понял. Вот тут, например, есть на lua http://raspberrypi.ru/blog/641.html и вроде как с реальными пинами работает.

anonymous
()
Ответ на: комментарий от fehhner

А зачем для простой задачи менять язык? Обоснуй.

Под малинку куча народу пишущих на том самом, комменты на ру, ну можно подумать над заменой. Хотя с другой стороны зная резидента они там скорее всего не нужны, проделать что-то шедевральное, что не распарсится вменяемым хмырем он врятли мог

Morin ★★★★
()
Ответ на: комментарий от Morin

А зачем для простой задачи менять язык? Обоснуй.

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

fehhner ★★★★★
()
Ответ на: комментарий от anonymous

Я ниосилил смысла. Нехватает GPIO на самой плате?

Хватает, но отладку проще на ПК проводить.

И где хранятся эти «фейковые» GPIO. Они формат sysfs имеют?

Нет. Просто обычные файлы.

edge поддерживают?

Не знаю что это такое применительно к GPIO

по коду ваще ниче не понял.

Мой код является оболочкой для bash команд

cat /sys/class/gpio/gpio0/value
echo "1" > /sys/class/gpio/gpio4/value
echo "0" > /sys/class/gpio/gpio4/value
Он имитирует файлы и способен управлять через файлы «реальным железом». Каталог для имитации можно задать любой, либо параметром в конфигурационном файле, либо тем же параметром в командной строке https://yadi.sk/i/XbSio80Qx5BP8

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от fehhner

Не слышал о серьёзных проектах, сделанных на бейсике.

«Значит не надо делать серьёзные проекты на бейсике». Логика торгаша, а не исследователя.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Не знаю что это такое применительно к GPIO

это для poll событий

https://www.kernel.org/doc/Documentation/gpio/sysfs.txt

	"edge" ... reads as either "none", "rising", "falling", or
		"both". Write these strings to select the signal edge(s)
		that will make poll(2) on the "value" file return.

		This file exists only if the pin can be configured as an
		interrupt generating input pin.
anonymous
()
Ответ на: комментарий от fehhner

Это не означает, что их не существует

Morin ★★★★
()
Ответ на: комментарий от anonymous

это для poll событий

Насколько я знаю обычные файловые системы тоже поддерживают pool события.

rezedent12 ☆☆☆
() автор топика
12 января 2017 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.