C# Arduino: как определить, установлено ли на компьютере необходимое программное обеспечение
У меня есть digispark, который использует библиотеку клавиатуры trinket для отправки клавиш мультимедиа обратно на компьютер с помощью поворотного энкодера. В настоящее время он настроен на отправку обычных клавиш мультимедиа, но около 2 недель назад мне потребовалось изменить привязки к тому, что делает поворотный энкодер, поэтому мне понадобился какой-то драйвер. Я спросил и получил ответы, что я не могу использовать последовательные порты, но я могу использовать неиспользуемые клавиши, такие как клавиши f13+, поэтому теперь я использую клавиши f для связи с программным обеспечением c# (оно слушает эти клавиши f и, как только они нажимаются, в зависимости от конфигурации, делает то, что ему нужно).
Я не думаю, что этот код нужен для этой демонстрации, но если он вам нужен, я с радостью его отредактирую.
Итак, я создал программное обеспечение, и теперь возникла проблема: что происходит, когда вы подключаете устройство, для которого нет драйвера? Это бесполезно, поэтому мне нужен способ, с помощью которого digispark сможет узнать, есть ли программное обеспечение, которое может «перепрограммировать» работу поворотного энкодера, и если нет, использовать функции по умолчанию (клавиши мультимедиа).
Вопросы:
Как мне узнать, есть ли необходимый драйвер на том компьютере, к которому подключен digispark?
Есть ли способ добавить мою программу, написанную на C#, в digispark? У меня есть USB-гарнитура, и когда я впервые ее подключил, она установила свой драйвер. Когда я подключаю свой digispark, он может загрузить программу?
Решения, которые, по моему мнению, могут сработать, но я понятия не имею, как их реализовать:
используя одну из этих неиспользуемых клавиш в качестве логического значения, когда она удерживается, скажем, программным обеспечением C#, может ли digispark с помощью брелка или любой другой совместимой библиотеки Tiny85 определить, нажата ли эта клавиша или нет (это может помешать работе другого программного обеспечения, поэтому я не думаю, что это идеальное решение)
Если кто-нибудь знает какую-либо библиотеку или пользовательскую прошивку, которая позволяет digispark (Tiny85) взаимодействовать через последовательные порты, это было бы весьма полезно и решило бы весь вопрос.
По второй проблеме: нужно ли мне какое-либо другое оборудование, чтобы сделать это, поскольку у меня есть только Tiny85 digispark и поворотный энкодер с коммутационной платой
Если у вас есть решение, пожалуйста, предоставьте мне код или ссылки, по которым я могу узнать, как это сделать, потому что на данный момент я понятия не имею, как это сделать, я знаю, как это сделать, но я новичок в программировании Arduino. Я уже спрашивал об этом на Stack Overflow неделю назад, но не получил никаких комментариев или ответов. Извините, если это считается дубликатом, я удалю тот, что на Stack Overflow, если нужно. Спасибо за понимание
@SenaCarbtc, 👍0
1 ответ
Как мне узнать, есть ли необходимый драйвер на том компьютере, к которому подключен digispark?
Я не могу придумать, как это сделать. Это все равно, что спрашивать, может ли клавиатура, подключаемая к USB-порту, определить, установлен ли у вас Photoshop или нет.
Есть ли способ добавить мою программу, написанную на C#, в digispark ...
Нет. Digispark — это крошечный компьютер на базе Attiny85, имеющий 8 КБ памяти программ, часть которой выделена для загрузчика, позволяющего загружать новый код.
Ваш проект слишком амбициозен для того уровня оборудования, которое вы предлагаете использовать. На самом деле, это видео, которое я посмотрел на днях, приходит мне на ум:
https://www.youtube.com/watch?v=s7AXskSxxMk
Из комментария:
it относится к digispark, при подключении digispark проверяет, нажата ли клавиша f17, и если это так, это означает, что моя программа работает в фоновом режиме, поэтому используйте функции, совместимые с программой
Хорошо, вы хотите, чтобы хост-компьютер (не Digispark) делал вид, что удерживает F17, а затем, когда Digispark подключен, он проверяет, нажата ли F17, и если да, то он знает, что нужная программа запущена на ПК. Это ваша идея?
Проблема здесь в том, что Digispark — это USB-устройство (а не USB-хост). Я полагаю, что можно было бы написать специальный драйвер устройства на ПК, который после подключения Digispark отправлял бы специальный код, сообщающий, запущена ли программа. Однако, поскольку Digispark имеет всего 8 КБ памяти программ, этот дополнительный код (на Digispark) может быть трудно вместить. Плюс вам нужно будет написать свой драйвер USB-устройства. Плюс драйвер устройства должен иметь возможность запрашивать, какие программы запущены.
Я думаю, гораздо более простым решением было бы иметь кнопку Вкл/Выкл на Digispark. Если вы подключаете его к ПК, на котором запущена эта специальная программа, вы нажимаете кнопку, и Digispark отправляет альтернативные команды вашей программе на C#.
- Связь последовательного порта Digispark
- Библиотеки I2C для ATTiny85?
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
- Почему DigiSpark не распознается автоматически на других компьютерах?
- Digispark ATtiny 85 - не распознается как HID устройство
- Открытие программы в administrator с помощью Arduino (DigiSpark / DigiSparkKeyboard)
- Клавиатура Digispark ATtiny85
- Почему DigiKeyboard.print и println меняют строку?