Forum: PC-Programmierung Terminal-Proggi


von TOM (Gast)


Lesenswert?

Hallo in die Runde,

such verzweifelt nach einem Programm, das mir einen Hex-String bzw.
Binärstring vom PC direkt an eine wählbare COM-Schnittstelle sendet.
Übertragungseinstellungen wie Parität oder Baudrate sollten geändert
werden können. Ausserdem ist es wichtig das es bei der Übertragung des
NUL-Zeichens HEX 0x00 keine Probleme gibt!!

Beispiel

0xff 0xab 0x45 0xd8

oder

11111111 10101011 01000101 11011000

hat jemand sowas, oder muss ich das selber schreiben??
DANKE

TOM

von Thorsten (Gast)


Lesenswert?

Ich denke, das hier dürfte passend sein:
http://bray.velenje.cx/avr/terminal/

von TOM (Gast)


Lesenswert?

Vielen Dank!!

scheint nen super Proggi zu sein!!

MfG   TOM

von TOM (Gast)


Lesenswert?

..... nur kann man nicht hex bzw binär senden!! :-(

von Thorsten (Gast)


Lesenswert?

Doch, du kannst dir Makros definieren und die wiederrum können Hex-Werte
enthalten. (guckst du in der Hilfe...)

von TOM (Gast)


Lesenswert?

Sorry du hast recht, mit Makros ist es möglich!!

Nu hab ich aber nur noch ein Problem mit dem 9.bit!!
So ein Sch....!!

MfG TOM

von Tobi (Gast)


Angehängte Dateien:

Lesenswert?

falls noch bedarf besteht, könnte ich interessierten eine beta des
proggies im anhang zu verfügung stellen.

unterstützt senden und ausgabe in hex, bin, dec und ascii incl senden
von 0x00.

ist bloss noch beta ohne vollen umfang und bestimmt noch mit vielen,
vielen bugs :)

von Oliver (Gast)


Lesenswert?

Moin Tobi,

hast Du das Programm geschrieben?
Kleiner Tipp von mir: weite mal die Schnittstellen noch auf COM5 und
COM6 aus.

Wenn man sich zusätlich noch eine Schnittstellenkarte in den Rechner
packt, dann wirds eng mit nur 4 COMs.

Grüße
Oliver

von Rufus T. Firefly (Gast)


Lesenswert?

Für solche Listen von Parametern eignen sich übrigens
Drop-Down-Comboboxen, die nehmen weniger Platz auf dem Bildschirm weg
und man muss nicht das Dialogdesign überarbeiten, nur weil ein weiterer
Eintrag dazukommt.
Der obere Bildschirmbereich ließe sich so auf die Höhe eines Toolbars
zusammenschrumpeln, was Platz spart. Die Knöpfe ganz links gehören
eigentlich in ein Menü.

Sinnvoll wäre es, beliebige Schnittstellennummern oder sogar -Namen zu
unterstützen; es gibt einige virtuelle Schnittstellen, die eben nicht
COMx heißen, sich aber genauso verhalten.

Bei Schnittstellen größer COM9 muss man in CreateFile übrigens eine
andere Schreibweise für den Schnittstellennamen verwenden:
"\\.\COM10".

Eine benutzerdefinierte Baudrate zu unterstützen ist -im Rahmen der
Möglichkeiten des Baurdatenteilers- übrigens 'ne klasse Idee.
Im dazugehörenden Dialog sollte überprüft werden, ob die durch Teilen
von 1.8432 MHz errechnet werden kann und nötigenfalls eine Warnung
ausgegeben werden (der Wert aber trotzdem akzeptiert werden; es gibt
Schnittstellen, die das können). Bei der Beschriftung 'u' und 'o'
vertauschen (custom, nicht costum).


Schön wäre es auch, wenn die Fenstergröße angepasst werden kann und
auch die Ein- und Ausgabebereiche unabhängig voneinander
vergrößert/verkleinert werden können (mit einem Gripper oberhalb der
"Input Options").

Allgemein: (gespeicherte) Optionen aus .ini-File (und nicht der
Registry!) übernehmen, als Kommandozeilenoption sollte beim Aufruf der
Pfad/Name dieser Datei angegeben werden können.
So kann mit einer Verknüpfung das Programm mit definierten Parametern
gestartet werden, ohne daß die bei jedem Programmstart erneut
festgelegt werden müssten.

von Tobi (Gast)


Lesenswert?

Ja, das Programm schreib ich derzeit selber. ist ein selbstauferlegtes
übungsprojekt zur gui programmierung unter windows (sogar halbwegs
portabel dank wxwidgets).

danke erstmal für die tips!

die dropdown listen für den oberen teil werde ich implementieren. muss
man bei schnittstellen, die andere namen als COMx haben ähnliches
beachten wie bei comports über 9? oder können diese namen 1:1 an
createfile übergeben werden?

die dis/connect usw buttons hatte ich für einen schnelleren zugriff
extra nicht in ein menü gepackt aber ich denke mal, dass das
geschmackssache ist.

die baudrate wird beim connectversuch schon auf gültikeit überprüft.
das lässt sich recht einfach machen, indem man die (evtl nicht
unterstützte) einfach einstellt und dann den DCB zurückliest und die
werte vergleicht. SetCommState setzt den wert automatisch auf den
nächsten gültigen. die rückmeldung an den bentuzer fehlt noch, ist aber
geplant.

das verändern der fenstergrösse werde ich versuchen hinzubekommen, muss
mal schaun womit das geht. die ausgabebreite innerhalb der ausgabefelder
ist leider statisch, da das sonst die formatierung durcheinander wirft.

bisher wird noch keine config datei unterstützt, ist aber geplant. ich
hatte auch vor, dass ganze per ini file zu machen (mag auch keine reg)
aber die idee mit dem kommandozeilenparameter ist recht gut. die werde
ich einbauen.

wenn ich mir das so ansehe, werd ich in den semesterferien nicht viel
zeit haben :)
trotzdem nochmal danke für die ganzen tips!

von Rufus T. Firefly (Gast)


Lesenswert?

"muss man bei schnittstellen, die andere namen als COMx haben
  ähnliches beachten wie bei comports über 9? oder können diese
  namen 1:1 an  createfile übergeben werden?"

Die Namen können unverändert durchgereicht werden. Die Sonderbehandlung
liegt daran, daß COM und LPT spezielle reservierte Namen sind.

Da Du in C++ programmierst, kann ich Dir -so es Dich interessiert- auch
beschreiben, wie man herausfinden kann, welche seriellen Schnittstellen
tatsächlich vorhanden sind (das betrifft natürlich nur Windows und ist
dann nicht portierbar), ich hab' mich mal mit den verschiedenen dafür
erforderlichen Klimmzügen beschäftigt.

  "die dis/connect usw buttons hatte ich für einen schnelleren
  zugriff extra nicht in ein menü gepackt aber ich denke mal,
  dass das geschmackssache ist."

Treffen wir uns in der Mitte: Toolbar (Knopfleiste). "Quit" kann wg.
Redundanz entfallen (wozu ist sonst das Kreuzchen rechts oben oder der
Doppelklick auf das Kästchen links oben da?). Ich bin ein großer Freund
von platzsparenden Oberflächen.

Das mit der Baudratenprüfung klingt nicht schlecht; der Teilervergleich
könnte allerdings eine (farbliche?) Hervorhebung vom Standard
abweichender Einträge in der Baudratendropdownlistbox ermöglichen, ohne
daß dafür eigens ein SetCommState aufgerufen werden muss (ich meine
sowas wie "38400", "57600", "115200", "[128000]",
"[256000]"). Aber das ist nur Konvenienz.

Was die Veränderung der Fenstergröße angeht, so verwendest Du ja mit
wxWidgets eine exzellent dafür geeignete Klassenbibliothek. Schreibst
Du das von Hand oder verwendest Du einn GUI-Builder à la DialogBlocks?

  "die ausgabebreite innerhalb der ausgabefelder ist leider
  statisch, da das sonst die formatierung durcheinander wirft."

Wenn Du magst, können wir uns da mal über einen geeigneten Algorithmus
unterhalten, so aus'm hohlen Bauch heraus würde ich sagen
"Spaltenanzahl = Fensterbreite Modulo Spaltenbreite".

Für Zugriffe auf die Konfigurationsdatei bietet wxWidgets ja auch
einfach zu handhabende Funktionen (wxFileConfig) - ich finde Dein
Projekt jedenfalls interessant und begrüßenswert und bin gerne bereit,
mit (hoffentlich auch so aufgefasster) konstruktiver Kritik zum
Gelingen beizutragen.

Viel Erfolg!

von Tobi (Gast)


Lesenswert?

".. wie man herausfinden kann, welche seriellen Schnittstellen
tatsächlich vorhanden sind (das betrifft natürlich nur Windows und ist
dann nicht portierbar), ich hab' mich mal mit den verschiedenen dafür
erforderlichen Klimmzügen beschäftigt."

diese funktionalität habe ich schon implementiert. bisher versuche ich
alle möglichen schnittstellen per createfile zu öffnen aber im modus 0
(kein generic_read/write). wenn alles glattgeht gibts die schnittstelle
auf jeden fall, wenn nicht wird der fehler ausgewertet. bei error
ERROR_FILE_NOT_FOUND existiert die schnittstelle nicht bei
ERROR_ACCESS_DENIED ist sie vorhanden aber zur zeit von einer anwendung
reserviert. gibt es noch eine andere/elegantere methode das zu lösen?


"Treffen wir uns in der Mitte: Toolbar (Knopfleiste). "Quit" kann
wg.
Redundanz entfallen (wozu ist sonst das Kreuzchen rechts oben oder der
Doppelklick auf das Kästchen links oben da?). Ich bin ein großer Freund
von platzsparenden Oberflächen."

da schliesse ich mich doch mal in beiden punkten an. das quit werde ich
aber, da ich dann wahrscheinlich eine menüleiste einbaue dort zusammen
mit config und about unterkommen lassen. bleiben nur dis/connect direkt
erreichbar.


"der Teilervergleich könnte allerdings eine (farbliche?) Hervorhebung
vom Standard abweichender Einträge in der Baudratendropdownlistbox
ermöglichen, ohne daß dafür eigens ein SetCommState aufgerufen werden
muss (ich meine sowas wie "38400", "57600", "115200",
"[128000]",
"[256000]")."

da blicke ich noch nicht ganz durch, wie du das meinst. sollen alle
einträge, die dem teilerverhältnis nach falsch sind markiert werden?
ich hatte überlegt das ganze als drop-down menü zu machen, das einige
standardeinträge anbietet aber auch beschreibbar ist für
sonderwünsche.


"Was die Veränderung der Fenstergröße angeht, so verwendest Du ja mit
wxWidgets eine exzellent dafür geeignete Klassenbibliothek. Schreibst
Du das von Hand oder verwendest Du einn GUI-Builder à la
DialogBlocks?"

Bisher habe ich alles per hand geschrieben ohne irgendwelche grafischen
werkzeuge. weisst du, mit welcher klasse solch ein gripper erstellt
werden kann? werd aber gleich auch mal in der referenz ein wenig
stöbern.


"Wenn Du magst, können wir uns da mal über einen geeigneten
Algorithmus unterhalten, so aus'm hohlen Bauch heraus würde ich sagen
"Spaltenanzahl = Fensterbreite Modulo Spaltenbreite"."

das ist prinzipiell auch korrekt und so machbar, nur müsste man dann
den kompletten fensterinhalt im hintergrund für eine neuberechnung
nochmal speichern. bei einer veränderung der fenstergrösse wäre der pc
bei einigen huntert bis tausend zeichen im eingabefenster erst einmal
spürbar beschäftigt. werde aber mal damit experimentieren und schaun,
ob das von der performance her klappt.

bisher habe ich eine feste (muss zum programmstart festgelegt werden)
fensterbreite und wenn man das fenster zu sehr verkleinert kommen
scrollbalken, weil sonst die formatierung nicht mehr passen würde.


"Für Zugriffe auf die Konfigurationsdatei bietet wxWidgets ja auch
einfach zu handhabende Funktionen (wxFileConfig)"

kannte ich noch nicht, werde ich mir auf jeden fall anschaun

"ich finde Dein Projekt jedenfalls interessant und begrüßenswert und
bin gerne bereit, mit (hoffentlich auch so aufgefasster) konstruktiver
Kritik zum Gelingen beizutragen."

ich bin für jede hilfreiche kritik offen. da ich in bei sowas noch
nicht ganz so viel übung habe freu ich mich natürlich, wenn das projekt
auf interesse stösst und gute vorschläge kommen. da werd ich ganz sicher
nicht meckern, immer her mit guten ideen ;)


"Viel Erfolg!"

danke, wird schon schiefgehen

von Tobi (Gast)


Angehängte Dateien:

Lesenswert?

nochmal ausgraben:

@rufus:
bin gerade dabei das ganze neu zusammenzubasteln. das design ist jetzt
kompakter und es lässt sich alles per config datei einstellen.

dauert allerdings noch ein bisschen, bis es fertig ist aber vielleicht
hat ja jemand noch gute ideen

von Werner (Gast)


Lesenswert?

Hi Tobi,
das sieht ja schon richtig klasse aus. Was ich an einem anderen
Programm noch ganz witzig fand, war der grafische Output, d.h. entweder
man nimmt den Hexwert (0-255) oder man definiert, das nach jedem
Zahlenwert (mehrere Byte) ein Enter geschickt wird. Die wird dann
grafisch in einem Diagramm dargestellt.

Werner
PS: wann gibts denn den ersten Download Link ;-)

von Tobi (Gast)


Lesenswert?

Danke :)

Das mit der grafischen Ausgabe habe ich noch nicht so ganz verstanden.
Das mit dem Graph zeichnen ist machbar (wenn auch erstmal auf die
Warteliste verschoben), aber was meinst du mit dem Enter nach einigen
Bytes schicken?

Einen Downloadlink gibt es frühstens in 1-2 Wochen aber es geht
schonmal gut vorran

von Birger* (Gast)


Lesenswert?

Ich vermisse, dass das Terminalprogramm im Hintergrund weiterarbeitet,
auch wenn es nicht mehr den Fokus hat. Oder geht das auch schon
bislang? Dann wüßte ich doch gerne wie.

von Jemand (Gast)


Lesenswert?

hi,
was ich noch gut fände wäre ganze dateien zu senden/empfängen und dass
man das über die shell(also mit selbstgestrikten programmen) ansprechen
kann.
könntest du auch den code für das ansprechen der com mal hochladen?
Danke im voraus.
Jemand

von Tobi (Gast)


Lesenswert?

@birger
ich denke, dass das funktionieren sollte da ich keinen grund sehe warum
nicht, werde es aber bei gelegenheit testen

@jemand
dateien senden und empfangen ist schon eingebaut. das ansprechen von
der shell aus werde ich wohl nicht einbauen, da es einfacher ist die
schnittstelle direkt anzusprechen.
eine sehr gute implementierung gibts hier:
http://www.iftools.com/ctb.de.html
(relevant ist die datei serport.cpp im src/win32 dir)

von Jemand (Gast)


Lesenswert?

scheint ne gute Seite zu sein
dankeschön.

von mgos (Gast)


Lesenswert?

@Tobi
dein prog könnte mir bei meiner diplomarbeit ne große hilfe sein.
kannst du mir ne beta zur verfügung stellen?

schankedön

von Tobi (Gast)


Lesenswert?

ist schon so wit raus. hatte ich in einem anderen thread gepostet:
http://www.mikrocontroller.net/forum/read-8-155472.html#new

direkt zu meiner site gehts hier:
http://www.der-hammer.info/terminal/index.htm

falls irgendwas nicht funktioniert oder fehlt einfach bescheid sagen.
lässt sich fast alles machen :)

von mgos (Gast)


Lesenswert?

@Tobi

thx gute Arbeit!!!
welche ProgSprachen beherrscht Du?

icq 247869651

mgos

von Jürgen Schuhmacher (Gast)


Lesenswert?

Die CTb ist wirklich zu empfehlen. Wer sich ein wenig mit wxWidgets
befasst, hat all seine Probleme im Bereich Applikationsprogrammierung
gelöst.

von Tobi (Gast)


Lesenswert?

@mgos
danke!
ich mach mitlerweile fast alles in c/c++
ich add dich heut abend mal in icq..

@jürgen
ja, kann ich auch nur empfehlen. hab ich zwar für das terminal nicht
benutzt aber auch einige sache übernommen
vor allem der support ist bei wxwidgets einfach super. bei einer frage
in der mailing list bekomm man zu 90% eine antwort von einem der
entwickler persönlich

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.