Serielle Schnittstelle AVR-PC GUI

Gast #6586890
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.
Gast #6586898
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..
Gast #6586950
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.
Gast #6586970
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
Gast #6587196
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 ?
Gast #6587216
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.
Gast #6587247
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.
Gast #6587363
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!
Gast #6806552
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()

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren