PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfegesuch: GUI Anwendungen für Linux und/oder Windows ohne ewige Toolsuche



Ceos
07.09.2019, 21:36
ICh bin gerade dabei mir eine kleine Seitentastatur zu bauen, mit einem Arduino Leonardo in Form eines Pro Micro

Der Arduino Part funktioniert schon mal soweit, aber ich scheitere gerade grandios daran mich auf eine ARt festzulegen mit der ich die Anwendung am PC schreibe die mit dem Board interagiert.

Folgende Versuche habe ich hinter mir:

1) Java + HID4Java + libusb/HIDAPI (HID4JAva nutzt die original VErsion die unter Win 10 nicht mehr läuft, der Ersatz SCHEINT zu laufen aber ich kann keine Feature Reports senden, bekomme immer nur -1 beim send zurück)
2) Visual Studio + libusb/HIDAPI (Es gibt keine VS Version mehr die man privat nutzen kann, oder man braucht unbedingt einen MS Account der auch auf dem PC angemeldet ist und das kommt für mich garnicht in Frage oder ich hab was falsch gemacht)
3) Windows/Linux und QT ... alter Schwede ist DAS ein kompliziertes gestrüpp, hat jemand Tools mit denen ich QT vielleicht unter Windows etwas angenehmer "gestalten" kann als jeden Button per Code zu arrangieren?!

ich bin ehrlich gesagt WYSIWYG Editoren gewohnt, auch wenn ich es zumindest unter Java mit Swing und SWT ohne beherrsche, QT ist eine ganz andere Dimension!
Daher mach ich hier auch parallel zu dem RPI VS ARduino Topic diesen Topic hier auf, damit das Thema mal einen ordentlichen Platz hat :)

HaWe
07.09.2019, 22:40
was meinst du mit Seitentastatur? wie sieht so was aus und was soll die tun?

was ich kann ist
- einen Arduino per USB mit dem Win PC verbinden
- Kommunikation über Serial
- GUI Form auf dem PC, wo ich die Arduino Pin states lesen (digital, analog), beliebige Zahlen hin- und herschicken (int, float, ASCII) und auch pins schreiben kann (on, off, pwm).

https://github.com/dsyleixa/Borland-Cpp-Builder/tree/master/Projects/109_ArduinoCOM_RxTx

https://github.com/dsyleixa/Borland-Cpp-Builder/blob/master/Projects/109_ArduinoCOM_RxTx/BCB-Arduino-109.jpg

Ceos
08.09.2019, 09:11
HID erstmal, steht für Human Interface Device und ist eine Art "Schnittstelle" um USB Geräte anzubinden die für Mensch Maschine Interaktionen gedacht sind ... Tastatur ist da der naheliegendste Vergleich.

Ich habe mir vor ein paar Wochen eine 3x3 Tasten mini Tastatur geholt mit RGB LEDs und der Hoffnung, dass die LEDs auch interaktiv vom PC aus reagieren ... leider ist es nur eine statische Beleuchtung, die ich zwar anpassen kann aber eben nicht live und auch nur über das ziemlich murksige Tool.

Versuche die Tastatur zu verstehen endeten bei einem ATMega32 (NICHT U, also ohne nativen USB) der irgendeine kryptische USB Schaltung verwendet, die ich nur teilweise auf einer Russischen Webseite ohne Code gefunden habe ... den Controller Umflashen fällt damit also flach.

Jetzt habe ich mir den Leonardo Pro Micro geholt weul das ein Mega32U4 (mit nativem USB) ist und unter Arduino als HID Gerät konfiguriert werden kann.

Er wird schon als Tastatur Maus und Gamecontroller gleichzeitig erkannt, aber ich brauche einen Rückkanal um vom PC aus die Tasten zu konfigurieren und die LEDs anzusteuern.

Das HID Interface (BootKeyboard aus dem HID-Projekt ganz genau) bietet eine Unterstützung für FeatureReports, das ist eine relativ simple SChnittstelle soweit ich es verstanden habe, bei der man auf der API SEite des PC nur einen Datenblock mit einer führenden ID Nummer an das GErät senmdet und dort beliebig interpretieren kann.

Das wäre die IDeale Schnittstelle, aber ich scheiterte daran, dass die HID4Java Lib eben eine alte DLL verwendete, mit der ich das Gerät unter Win 10 nicht öffnen kann. Die DLL ersetzen hat leider keinen nennenswerten Erfolg gezeigt, das Gerät lässt sich zwar öffnen aber der sendFeatureReport Aufruf scheitert immer mit -1 (ich vermute fast das ist ein Failsafe, weil die Methode in der DLL wahrscheinlich eine andere Signatur bekommen hat)

Ich könnte zwar hingehen und den Code von HIDApi und HID4Java anpassen, aber den Kaninchenbau wollte ich eigentlich noch nicht betreten.

Die Idee mit Seriell ist mir heute früh auch gekommen, das wäre für den Rückkanal zumindest erstmal eine Option, ich berichte mal ob HID Modus und virtueller COM Port gleichzeitig möglich sind, das ist nämliche meine nächste Befürchtung.

------------------------

Zum eigentlichen Topic:

Java ist eigentlich mein Mittel der WAhl für GUI auf dem PC, weil es prinzipiell unter allen OS läuft für die es eine Java Runtime gibt, aber die Einbindung von USB erfordert native Unterstützung und als ich gestern versucht habe Visual Studio zu laden (in der 2010er Edition gabs noch die Kostenlose Version für privat) wurde ich aber von M$ bitter enttäuscht.

Daher suche ich im Moment entweder nach einer leichtgewichtigen, halbwegs WYSIWYG Editor ähnlichen Grundlage mit der ich ohne C++ in 3ter Potenz rumeiern muss um mir eine einfache GUI zu bauen.

Ist Borland denn prinzipell erstmal kostenfrei nutzbar?!

Am liebsten würde ich ja mit ein paar Plugins unter Eclipse arbeiten, aber man wird mit halbfertigen Werkzeugen förmlich erschlagen wenn man im Marketplace sucht, ich finde halt im Moment einfach kein brauchbares Tool.

HaWe
08.09.2019, 09:29
ja, BCB ist bis Version 6 kostenlos, download ist in meiner repo verlinkt (USB/virtual Comm ist ein Zusatz-Widget, ist ebenfalls verlinkt)

Ceos
08.09.2019, 09:53
Okay der COM Port geht parallel, sehr angenehm!

Jetzt versuch ichs mal mit BCB ... das letze mal dass ich BCB benutzt hatte war im Praxissemster und als Werksstudent um eine Windows DCOM Anwendung auf Sockets um zu schreiben XD

Weist du aus dem Handgelenk heraus wie ich einen 2ten COM Port auf dem Arduino starten kann?

Mein nächster Gedanke wäre eine Art "Konsolenmenü" also die Konfiguration über Serial-CLI zu bewerkstelligen und einen separaten COM für LED Daten zu erzeugen ... ich fürchte langsam dass ich wohl das RawHID-Kaninchenloch hinunter muss um das zu bewerkstelligen Q_Q

HaWe
08.09.2019, 10:04
ich kenne auf dem Arduino nur Serial, Serial1, Serial2, softSerial usw, aber nur Serial geht über USB soweit ich es kenne,
der Rest über die entspr. RxTx/GPIO-Pins, an die man aber auch einen CH341 anschließen kann (IIRC).
Frag doch mal im Arduino.cc Forum nach!

Ceos
08.09.2019, 10:13
Ich bin an einem Punkt angekommen, an dem ich schon genug Accounts angelegt habe im Leben, ich mag nicht für eine Frage einen neuen Account anlegen müssen :(

ich versuchs ertmal mit Simba (auf Github gefunden) ... das scheint eine mir vertrautere Struktur in den Programmen zu haben als das reine Arduino und wenn es sich mit Arduino aufflashen lässt bin ich damit auch erstmal happy :)

edit: klingt geil, ist aber ein Fehlschlag, das Board wird nach dem Flashen nicht mehr erkannt ... grmpf .. also doch erstmal arduino und RawHID ... :X

edit2: hab mal ein Issue bei SIMBA hinterlassen, der hängt mit der Composite Implementierung wohl etwas hinterher also neustart und BCB + HIDApi

NumberFive
14.12.2019, 04:19
GUI auf PC noch Aktuell als Thema ?

HaWe
14.12.2019, 15:02
und für Linux qt5? Klappt bei mir auf dem Pi perfekt... Und gibt es ja auch für Windows, IIUC.

freesh
28.12.2019, 22:12
Ich persönlich würde electron und Johnny-Five nutzen.
Mit electron kann ich apps für gängige OS bauen und nutze dazu simples JavaScript (node.js), CSS und HTML. Ich kann zudem auch so ziemlich alle npm packages nutzen, oder auch react und gewünschte fertige Komponenten für z.B. Graphen usw. Entsprechende npm packages für die Kommunikation über die ports, oder mit j5 gibt es auch bereits viele.

Das Thema hat auch eine recht große Community also würdest du auch hinreichend Hilfe finden bei Fragen denk ich. Besonders Johnny-Five erfreut sich großer Beliebtheit.

Hier z.B. eine Boilerplate: https://github.com/leoweigand/electron-arduino-quickstart Bin mir aber nicht sicher wie gut das Ding ist, aber zum Einstieg sicher ganz gut. :)

https://electronjs.org/
http://johnny-five.io/


Hier gibt es auch ein Beispiel mit J5 und NodeWebkit. Ist ähnlich wie Electron, aber nicht so verbreitet. https://github.com/rwaldron/johnny-five/wiki/Getting-Started-with-Johnny-Five-and-NW.js-(a.k.a.-node-webkit)

Viele Grüße,
Björn :)