Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle AVR-PC GUI


von bob (Gast)


Lesenswert?

Hallo zusammen, ich habe ein wenig mit einem atmega 168 und der 
Seriellen Schnittstelle am Pc experimentiert, verwendete Software war 
hterm.
Gibt es eine Art GUI Software mit der man Buttons, Eingabefelder, 
Tastatureingaben per serielle Schnittstelle an den uC schicken kann?

Als Beispiel stelle ich mir vor auf dem PC die Pfeiltasten oder einen 
Software Button zu drücken/klicken, daraufhin wird ein Signal an den uC 
gesendet und dieser startet zB einen DC Motor oder lässt eine LED 
leuchten.

von testi (Gast)


Lesenswert?

bob schrieb:
> Hallo zusammen, ich habe ein wenig mit einem atmega 168 und der
> Seriellen Schnittstelle am Pc experimentiert, verwendete Software war
> hterm.
> Gibt es eine Art GUI Software mit der man Buttons, Eingabefelder,
> Tastatureingaben per serielle Schnittstelle an den uC schicken kann?
>
> Als Beispiel stelle ich mir vor auf dem PC die Pfeiltasten oder einen
> Software Button zu drücken/klicken, daraufhin wird ein Signal an den uC
> gesendet und dieser startet zB einen DC Motor oder lässt eine LED
> leuchten.

Ich denke nicht das sowas fertig existiert, da jedes Produkt eigene 
Anforderungen hat. Du kannst es aber mit jeder Programmiersprache 
ziemlich einfach Implementieren, z.B. Python mit pySerial, Javascript 
mit NodeJS und serialport, Java mit jSerialComm...

Falls du eine GUI willst, kannst du diese z.B. direkt mit Python machen 
(oder mit einem Frontend), wie z.B. Kivy oder Java und dem integrierten 
Swing..

von F. M. (foxmulder)


Lesenswert?

In Java oder C# schreiben.
Für so einfach Sachen wie eine Pfeiltaste dauert das wirkich nicht 
lange.

mfg

von bob (Gast)


Lesenswert?

Also brauche ich nur ne Serial Bibliothek für die Sprache meiner Wahl, 
super danke euch.

von Stefan F. (Gast)


Lesenswert?

bob schrieb:
> Gibt es eine Art GUI Software mit der man Buttons, Eingabefelder,
> Tastatureingaben per serielle Schnittstelle an den uC schicken kann?

Im Grunde genommen (fast) jede beliebige Programmiersprache.
Im unteren Drittel der folgenden Seite ist ein Beispiel, wie man mit Qt 
in 15 Minuten zum ersten Aha-Erlebnis kommt: 
http://stefanfrings.de/serial_io/index.html

Weiter oben auf der selben Seite findest du ein komplexeres 
Beispielprogramm zum Download. Und links im Navigationsbereich kommst du 
zu einem Qt Tutorial.

Ansonsten ist die Kombination ESP8266 + Web Browser auch handlich, aber 
dafür muss man schon einiges über die Entwicklung von Web-Anwendungen 
wissen. Eine Disziplin, die viele Technologien miteinander kombiniert. 
Ein Beispiel dazu findest du in 
http://stefanfrings.de/mikrocontroller_buch/index.html Band 3. Ein paar 
Grundlagen zum HTTP Protokoll vermittelt der Band 2 ab Kapitel 10.

von Wahlschweizer (Gast)


Lesenswert?

bob schrieb:
> Gibt es eine Art GUI Software mit der man Buttons, Eingabefelder,
> Tastatureingaben per serielle Schnittstelle an den uC schicken kann?

Hallo Bob,

ich mache sowas damit: 
https://www.electronic-software-shop.com/elektronik-software/profilab-expert-40.html?xoid=qcenkch4ki58hql5n76mrl2s85
Schiesst wahrscheinlich über dein Ziel hinaus, funktioniert dafür ohne 
programmieren.

Gruss

Uli

von Maxe (Gast)


Lesenswert?

Die Comvisu ist fuer sowas gedacht:

Beitrag "Re: Serielle Visualisierung mit Comvisu"

von Ralf H. (hilti68)


Lesenswert?

Schau Dir mal Comvisu an:

https://www.mikrocontroller.net/articles/Comvisu

lg.
Ralf

von Guido L. (guidol1970)


Lesenswert?

Node-Red mit  Web-Dashboard
Da kann man leicht Buttons generieren und Daten an die serielle 
Schnittstelle versenden.

von FOp (Gast)


Lesenswert?

Habe ich das jetzt richtig verstanden, Du willst das Aussehen der 
Oberfläche im µC ablegen und auf dem PC immer das gleiche Programm 
starten ?

Also ein Protokoll irgendwo zwischen VT100 und X11 über die 
Schnittstelle geben, das das Aussehem der GUI beschreibt ?

von bob (Gast)


Lesenswert?

Wow danke für die vielen Empfehlungen. Da ist sicher was für mich dabei, 
werde ich mir anschauen wenn ich dann mal zuhause bin ^^

FOp schrieb:
> Habe ich das jetzt richtig verstanden, Du willst das Aussehen der
> Oberfläche im µC ablegen und auf dem PC immer das gleiche Programm
> starten ?

Hallo FOp, nicht ganz. Der uC soll nur Kommandos, im Grunde genommen 
Zeichenketten,vom PC entgegennehmen und dann etwas damit anstellen. Ich 
wollte mich nicht nur auf Texteingaben wie es bei zb Hterm der Fall ist 
beschränken, sondern auch GUI Elemente (Buttons etc.) ins Spiel zu 
bringen.

von Ozvald K. (Gast)


Lesenswert?

bob schrieb:
> Der uC soll nur Kommandos, im Grunde genommen
> Zeichenketten,vom PC entgegennehmen und dann etwas damit anstellen. Ich
> wollte mich nicht nur auf Texteingaben wie es bei zb Hterm der Fall ist
> beschränken, sondern auch GUI Elemente (Buttons etc.) ins Spiel zu
> bringen.

ich habe so was mit Visual Studio in C# entwickelt.

von Spess53 (Gast)


Lesenswert?

Hi

>ich habe so was mit Visual Studio in C# entwickelt.

Und ich mit Delphi.

MfG Spess

von bob (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Im Grunde genommen (fast) jede beliebige Programmiersprache.
> Im unteren Drittel der folgenden Seite ist ein Beispiel, wie man mit Qt
> in 15 Minuten zum ersten Aha-Erlebnis kommt:
> http://stefanfrings.de/serial_io/index.html
> Weiter oben auf der selben Seite findest du ein komplexeres
> Beispielprogramm zum Download. Und links im Navigationsbereich kommst du
> zu einem Qt Tutorial.

Das ist es was ich gesucht habe, super Anleitung.

Danke auch für die anderen Vorschläge!

von bob (Gast)


Lesenswert?

Ralf H. schrieb:
> Schau Dir mal Comvisu an:
> https://www.mikrocontroller.net/articles/Comvisu
> lg.
> Ralf

Und das hier ist auf alle Fälle auch ne gute Möglichkeit, das Design 
kann halt nicht mit Qt mithalten :-)

von Stefan F. (Gast)


Lesenswert?

bob schrieb:
> Und das hier ist auf alle Fälle auch ne gute Möglichkeit, das Design
> kann halt nicht mit Qt mithalten :-)

Dafür bietet es Anzeige-Elemente, die man sich in Qt erst selber 
programmieren müsste.

von bob (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Dafür bietet es Anzeige-Elemente, die man sich in Qt erst selber
> programmieren müsste.

Ich bin genügsam, mir reichen erstmal 4 Buttons.

von Pandur S. (jetztnicht)


Lesenswert?

Ich wuerde auch Delphi empfehlen, damit dauert es minimal kurz sich ein 
GUI zusammenzukloppen.
Als erstes solltest du dir ein Protokoll ueberlegen, welches in beide 
Richtungen laeuft und ausbaubar ist.

von foo (Gast)


Lesenswert?

Comvisu ist proprietär.

von Wolle (Gast)


Lesenswert?

Und QT kostet gutes Geld, ist nicht Open Source?!

von foo (Gast)


Lesenswert?

Qt gibt es als open source version. Aber ist mir zu nervig.

ich glaub ich probier es mal mit:
https://github.com/vurtun/nuklear
https://sigrok.org/wiki/Libserialport

ich hab auf auf dem arduino die standard firmata firmware geflasht und 
kann dann paar (binary/none ascii) midi ähnliche bytes schicken um ne 
led ein und aus zu machen.

hier nen python test um firmata anzusprechen:
1
import time
2
import serial
3
4
# Firmata:
5
# https://github.com/firmata/protocol/blob/master/protocol.md
6
7
8
# D13 is Arduino onboard LED
9
D13_output=b'\xF4\x0D\x01' # 0xF4 0x0D 0x01  set pin mode(I/O) 13 OUT
10
D13_on=b'\xF5\x0D\x01'     # 0xF5 0x0D 0x01  set digital pin value 13 1
11
D13_off=b'\xF5\x0D\x00'    # 0xF5 0x0D 0x00  set digital pin value 13 0
12
13
print ("Starting")
14
ser = serial.Serial("/dev/ttyUSB0", baudrate=57600, parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
15
time.sleep(1) # 1 second
16
17
#print(D13_output)
18
print("D13_output")
19
ser.write(D13_output)
20
21
#print(D13_on)
22
print("D13_on")
23
ser.write(D13_on)
24
25
time.sleep(1)
26
#print(D13_off)
27
print("D13_off")
28
ser.write(D13_off)
29
30
#print ("Returning:")
31
#while ser.inWaiting() > 0:
32
#  data = ser.read()
33
#  print (data)
34
print ("Exiting program")
35
ser.close()

von Stefan F. (Gast)


Lesenswert?

Oh, das sieht ja fast wie mein Projekt aus: 
http://stefanfrings.de/serial_io/index.html

Mit Qt Beispiel.

von Wolle (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Oh, das sieht ja fast wie mein Projekt aus:
> http://stefanfrings.de/serial_io/index.html

Wahrscheinlich hat er das sogar mit einem Deiner AVR Controller gemacht.
Unverschämtes Plagiat!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.