Hi, ich hab mein neues Terminal-Programm so weit fertig, dass man es der Öffentlichkeit zeigen kann. Die Besonderheiten sind die Ausgabe und Eingabe(!) in Hexadezimal, Binär, Dezimal und Ascii. Ausserdem kann man die ganzen Standardwerte für die Oberfläche in Config Dateien speichern Ist zwar noch eine Beta aber sollte schon recht fehlerfrei laufen. Hier gibts einen Download http://www.der-hammer.info/terminal/index.htm Eine Hilfe kommt demnächst noch PS: Danke an Rufus für die vielen Tips bezüglich der Oberfläche!
jetzt gibts noch eine hilfe dazu (zusammen mit der exe im zipfile) und durchs packen ist das ganze auf ansehnliche 600k geschrumpft :)
Eben nichts, es sollte sich doch ein Fenster öffnen? (BS XP SP2)
da scheint der server wohl beim letzten abschmieren ein paar beiträge verloren zu haben... das 'send file' funktioniert nur, wenn die verbindung zu einem comport schon steht, sonst reagiert der button nicht. werd ich mal ändern, dass der dann ausgegraut ist... liegt es daran, oder bist du verbunden und es klappt trotzdem nicht?
Hallo Tobi, tolles Programm, habs gleich mal gezogen und ausprobiert. Ich würde gerne auf zwei Dinge hinweisen. Das erste kann man im Screenshot im Anhang sehen. Wenn nur auf ASCII gestellt ist, werden #CR und #LF als zwei Kästchen dargestellt. Ist das so beabsichtigt? Ich denke eher es wäre besser, diese beiden Zeichen zu ignorieren. Das zweite ist folgendes: wenn man das Fenster rechts unten mit der Maus ganz verkleinert, daß außer dem Fenstertitel nichts mehr zu sehen ist und dann das Fenster wieder vergrößert, ist nur noch das Input-Fenster. Ich hoffe, daß hilft dir. Weiter so!! Gruß Thorsten
Hast natürlich recht, könntest du aber ruhig abändern. Ansonsten muss ich sagen, dass es in Ordnung ist. Optimierungen fallen mir auch nicht weiter ein.
danke für die infos an euch beide. @alex du hast ja recht aber das sind halt die kleinen details die man selber nie finden würde aber anderen sofort ins auge fallen. ist bei mir jetzt schon ausgebessert und wird in der nächsten version dann drin sein @thorsten den bug mit dem verkleinern kann ich bei mir reproduzieren und hab auch schon den fehler gefunden. das programm bekommt eine minimale fenstergrösse die erlaubt ist und dann klappts das mit den sonderzeichen war eigentlich so gewollt. wenn, dann müsste man alle sonder/steuerzeichen im nur ascii modus ausschalten (alles kleiner 32 und die 173). ich werd mit mal überlegen was ich da mache: entweder komplett unterdrücken wie du meintest oder irgendwo eine option um das anzupassen
Super Programm! Ich habe es getestet und es ist genau das was ein Controllerprogrammierer benötigt um seine Kommunikationsschnittstelle testen zu können. Genial! Beim Entpacken der zip-Datei entsteht aber ein Abbild deiner Verzeichnisstruktur. Das ist etwas unschön.
danke für den hinweis, werde ich korrigieren. morgen wird voraussichtlich auch die neue version online gestellt mit ein paar kleinen verbesserungen und bugfixes
So, v0.5 ist fertig. Hauptsächlich Detailverbesserungen und Bugfixes. das genaue Changelog gibts hier einzusehen: http://www.der-hammer.info/terminal Verbersserungsvorschläge oder Bugs könnt ihr gerne hier posten. Dann mal viel Spaß beim ausprobieren!
Hi, ich hab die Soft gerade auch mal ausprobiert. Nen paar Sachen sind mir aufgefallen, wären vielleicht zu verbessern. - der Connectstatus wird beim neustart nicht wieder hergestellt - der Pfad wo der Output gespeichert wurde, wird nicht gesichert - die Fensterposition wird nicht gespeichert (da ich nur 800x600 fahre muss ich das Fenster zunächst in die richtige Position schieben) Ansonsten Toll geworden, DANKE Werner
pfad und fensterposition speichern werde ich noch in den nächsten tagen hinzufügen. danke für den hinweis! was meinst du genau mit connectstatus wiederherstellen?
Hi Tobi, ich hab die Option "Autosave on exit" für das Ini-File aktiviert. Wenn ich connected war, die Software beende und wieder starte muss ich erst wieder Connect drücken. Ich fände es ganz praktisch, wenn die Soft automatisch den Status wieder herstellen würde. Werner
ok, sollte kein problem sein, diese funktion einzubauen. die anderen beiden von dir genannten funktionen laufen schon so weit und werd ich voraussichtlich morgen nach ein paar weiteren test online stellen
Moin, moin, ich würde gerne etwas mehr flexibilität beim CR@ haben. Also zu den Auswahlen CR/LF, LF, CR noch ein Zeichen (Zeichenfolge) selber definieren können. In meinem persönlichen Fall bräuchte ich z.B. das NULL-Byte als Trennzeichen. 'Save Output' ist eine schöne Funktion, aber ein 'Laod Output' um sich die Daten später nochmal anschauen zu können, wäre eine nette Ergänzung. Ein langfristiger Wunsch wären Buttons, mit denen vorgefertigte Nachrichten versendet werden können. Ist aber schon ein nettes kompaktes und trotzdem übersichtliches Programm geworden, weiter so... Martin
so, es gibt wieder eine neue version mit so ziemlich allen vorgeschlagenen verbesserungen! - pfad wird mitgespeichert - fenstergrösse/position wird gespeichert - der verbindungstatus wird gespeichert (besonderheit: wird nur beim beenden mit 'autosave on exit' aktiv gespeichert, NICHT beim normalen config speichern. ist so gewollt, falls ihr es für nicht so gut haltet immer her mit der kritik ;) - man kann jetzt eine datei ins output fenster laden (optionen menü) - man kann jetzt selber cr@ strings definieren. genaueres steht in der hilfe (@martin: die 0x00 ist aber jetzt schon standardmässig in der liste drin) - und natürlich wurde wieder die hilfe auf den aktuellen stand gebracht eine funktion für textbausteine ist schon geplant aber wird noch etwas dauern, da ich dafür noch einiges erweitern muss, um das ordentlich einzubauen link zur download-seite findet sich ganz oben im thread!
ich hab mir mal ein lustiges prog geschrieben, dass dir die rs232 durchschleift.. ist ungemein praktisch für leute die z.b am uc irgendwelche perepherie am uart hängen haben und schaun wolln was da an daten herumgurken... problem..braucht 2 serielle (eine rein, eine raus) ist hin und wieder ganz nett... sollte ich mal wieder auskramen und auch veröffentlichen ;) oder hast du lust das bei dir einzubaun???? 73
@hans interessante idee. ich werd mal ein bisschen rumbasteln ob das bei mir irgendwie reinzubasteln ist. @thorsten schau mal mails nach
btw in welcher sprache hast du das geschrieben ? und hast du lust das ding open source zu machen ??? es gäbe da sicher unzählige funktionen die es noch zu ergänzen gebe ... und open source kann dann jeder nach herzenslust basteln ;) 73
das ganze ist komplett in c++ mit wxWidgets als framework geschrieben derzeit hab ich noch nicht vor das ganze als open source zu veröffentlichen, weil ich erstmal die grundfunktionalität, so wie ich sie mir vorstelle fertig haben möchte. danach hatte ich auch schon überlegt, dass zu machen und evtl auch bei sourceforge reinzustellen
Hi Tobi, mir ist gerade aufgefallen, das der Status von DTR und RTS nicht wieder hergestellt wird. Könntest Du außerdem mal erklären was für Funktionen hinter den Befehlen im Count/Log Bereich stecken? Rx ist die Anzahl der empfangenen Zeichen, das ist ja noch klar. Aber der Rest ... Werner
DTR und RTS speichern wird eingebaut. Die Optionen bedeuten: ====================== Count: Das Zeichen in der Box (Ascii-Wert) wird gezählt Delete on: Wenn das Zeichen in der Box auftritt, wird alles incl. dem Zeichen selber gelöscht (Die Checkbox muss markiert sein, damit diese Funktion aktiv ist) Show last....: Gibt an wieviele Zeichen angezeigt werden sollen. Bei vielen Zeichen kann sonst das umschalten des Formats, von CR@ oder ein Resize des Fensters sehr lange (einige dutzend Sekunden) dauern. Die Infos stehen auch alle (in Englisch) in der Hilfe-Datei drin
Schickes Tool Bei mir ist leider die Schaltfläche "Autosave on exit" gegrayed. Woran liegt das denn. Echt super, dass man auch ander Baudraten eintragen kann. Könnte man vielleicht ne User-Defined Box einbauen.
Du musst vorher das Setup einmal mit einem Namen speichern, dann direkt wieder laden. Dann ist autosave on exit aktiviert. Werner
@stefan es ist genau wie werner gesagt hat. liegt daran, dass das program mit ini dateien arbeitet und nicht mit der registry. dadurch hat man den vorteil, dass man für unterschiedliche projekte auch unterschiedliche konfigurationen benutzen kann. man kann eine ini-datei direkt beim start als 1. kommandozeilen parameter angeben. Man kann alle baudraten (und auch com-ports) selber definieren. schau dir mal die gespeicherte config datei an, dann sieht man die struktur, wie das auszusehen hat recht gut. Sonst steht in der hilfe datei, die mit im zip paket ist auch noch mal jede option ausführlich drin.
Neue Version 0.5.3: - jetzt mit anständigem send file dialog mit abbrechen - das programm verursacht einiges weniger last Die restlichen Kleinigkeiten stehen wie immer im Changelog! Sauglink steht oben auf der Seite!
Hi, du könntest noch eine Funktion einbauen die entweder nur die vorhanden COM Ports anzeigt oder überprüft welche vorhanden sind. Das wäre zum Beispiel bei USB<>seriell Wandler hilfreich, da ich nie genau weiß auf welchen COM Port sie jetzt angemeldet sind. Damit würde dann man den Umweg über die Systemsteuerung sparen... Ansonsten aber ein schönes Tool :-) Grüße Fabian
Hallo Tobi, gutes und nuetzliches Programm! Trotzdem einige Bemerkungen: 1) Waere schoen wenn man ueber das Help-Menu direkt das mitgelieferte PDF oeffnen koennte. 2) Die Escape-Sequenz "\n" (backslash-n) in meinem C-Code kommt in HTerm als "\f" (backslash-f) raus. 3) Ich hab "CR@" auf "CR+LF" gestellt und lass nur ASCII anzeigen. Da passiert es trotzdem manchmal, das eine CR+LF Sequenz nicht als solche erkannt wird, also als <\r><\f> ausgegeben wird anstatt dass eine neue Zeile begonnen wird. Wenn ich dann das ASCII Knoepfchen aus- und wieder einschalte wir die Anzeige aber berichtigt. Wie gesagt, passiert nur manchmal, so etwa einmal in zwanzig Zeilen oder so. Komisch, nicht? Gruss, Peter
zu 1. Das Problem ist, dass nicht sicher ist, wo sich das PDF befindet. Ich werde aber eine Funktion einbauen, die es öffnet, wenn es sich im gleichen Verzeichnis befindet. zu 2. Das ist zwar ungewohnt aber beabsichtigt, da das \n eigentlich ein \f (line feed, #10) ist. Ich werd aber drüber Nachdenken, ob es nicht besser ist das zu ändern, weil wohl die meisten ein \n erwarten zu 3. Den Fehler habe ich auch schon bemerkt aber bisher leider noch nicht die ursache gefunden Tobi
Es gibt mal wieder etwas neues (v0.5.5): Die neuste Version unterstützt jetzt belibig gemischte Formate in der Eingabezeile. Auch sonst wurden einige Bugs beseitigt und ein paar neue Funktionen hinzugefügt. Details verrät wie immer das Changelog. Falls jemand seine Vorschläge noch nicht wiederfindet: Einiges steht noch auf meiner Todo Liste und wird in den kommenden Versionen berücksichtigt. Weitere Verschläge können natürlich jederzeit gemacht werden. Ich bin für alles offen. http://www.der-hammer.info/terminal/index.htm
Hi Tobi, nettes Tool, dass ich gerade bei meinem aktuelem Projekt einsetzte! Was mich stört, sind die etwas kleinen Buttons ("Clear Output", "Reset",...). Ich arbeite mit einer Auflösung von 1400x1050, da muss ich immer sehr zirkeln mit dem Mauszeiger. Bei meinen Projekten richte ich mich immer nach dem MS GUI Guideline. Da sind solche Sachen geregelt. Bei deinem Tool würde es schon helfen, wenn die Button.Heigh so groß sein würde wie die Höhe der Eingabe- bzw. Auswahlfelder. Andreas
In dem Programm sind noch ein paar (schlimme) Bugs: Ich übertrage ein BMP über den normalen COM Port mit 115,2kBaud, aber das empfangene Bitmap ist total verschoben, da einige kByte vom Programm verschluckt werden. Mit dem Bray Terminal läuft es einwandfrei. Dieser Fehler ist irgendwie Baudratenabhängig: Mit einem FT232 tritt dieser Fehler bei 375kbaud stark auf, bei 750kbaud läuft es aber fehlerfrei, zumindest meinstens, bis plötzlich für einige Sekunden langsam ein paar Daten verschluckt werden, danach läuft es wieder für einige Minuten fehlerfrei. Ein weiterer, aber eher unwichtigerer Bug: Befinden sich im Sendefenster diese bunten Blöcke die die gesenden Daten anzeigen ganz rechts, und man gibt nur Return (ohne ein Zeichen) ein, dann zerstückeln sich die bisher gesendeten Blöcke langsam.
@andreas wer die buttons grösser machen @benedikt der bug scheint mir auch kritisch zu sein? deiner beschreibung nach tritt er beim send file auf. war das auch in der vorherigen version oder nur der neuen? ich bin dabei die ausgabefenster sowieso komplett neu zu schreiben, vondaher weiss ich nicht, ob das jetzt auf die schnelle noch korrigiert wird... muss mal schaun wie kompliziert das ist
Genau, beim Senden einer Datei. Das Problem hatte ich anscheinend schon seit der ersten Version die ich ausprobiert hatte (damals wegen dem FT232). Nur damals konnte ich nicht ausprobieren ob der Fehler am Programm oder meiner Hardware lag, da der FT232 zusammen mit dem Bray Terminal nicht richtig funktioniert. Der Fehler tritt bei der 0.5.3 und der 0.5.5 auf. Vorhergende Versionen habe ich nicht ausprobiert.
Ich habe den Fehler gefunden: Es lag an meiner Software, die ein paar Bytes verliert, wenn kontinuierlich Daten übertragen werden. Das Bray Terminal sendet die Daten nicht kontinuierlich, schafft also bei 115200Baud anderst als dein Programm keine 11,5kBytes/s, sondern nur etwa 10kB/s. Dafür habe ich aber einen anderen Fehler gefunden: Wenn man größere Datenmengen ohne Pause empfängt, dann hängt sich das Programm auf (zumindest lag nach ein paar Minuten die CPU Auslastung immer noch bei 100% und das Programm reagierte nicht mehr).
Gut, ein Fehler weniger zu suchen ;) Hast du vor dem Aufhängen des Programms irgendeine Option betätigt? Bei grossen Datenmengen kann ein Resize des Fensters oder ein Ändern des Ausgabeformats das System für einige Minuten lang komplett auslasten. Wenn du diese riesigen Datenmengen nicht alle sichten musst sondern sie nur speichern willst, kannst du den Wert 'Show last...' auf einen kleinen Wert (z.b 100) setzten. Dadurch bei Resize usw das System entlastet aber die Daten gehen nicht verloren und können noch ganz normal über Save gesichert werden. Falls es das nicht war, um welche Datenmengen handelt es sich bei dir (wieviele MB)?
Hi du solltest die grafische Oberfläche nie durch einen anderen Vorgang blockieren. Irgendeine Hintergrundverarbeitung läßt man lieber einen seperaten Thread machen und zeigt solange auf der GUI einen Hinweis auf eine laufende Verarbeitung an. So bleibt die Oberfläche bediehnbar und die Arbeit wird trotzdem erledigt. Matthias
Ja, ich weiss, dass es besser wäre. Hab mich bisher immer vor Threads gedrückt aber ich glaub ich werd das doch mal machen müssen ;)
Und schon wieder habe ich mich geirrt: Nachdem meine Software jetzt fehlerfrei läuft, habe ich gemerkt dass HTerm doch Daten verschluckt. Nicht immer, sondern nur manchmal. Ich habe ein 512x512 BMP übertragen (263222 Bytes). Davon kamen am zweiten PC 254012 Bytes an. Diesmal bin ich mir absolut sicher, dass der Fehler bei HTerm und nicht bei mir liegt. Soweit ich es überprüft habe, haben bei jedem Fehler immer exakt 10Bytes gefehlt. Die Abstände zwischen den Fehlern sind unregelmäßig.
Die 10Byte sind ein sehr sehr guter Hinweis. Das ist genau die Einheit, die das Programm aufeinmal rüberschickt und danach die Anzeige aktualisiert. Da geht wohl irgendwo entweder eine Schreib- oder Lesefunktion schief. Ich werd mal danach suche, wahrscheinlich fehlt bloss eine Fehlerabfrage irgendwo
Hatte richtig vermutet. Ich konnte das Problem reproduzieren. Alleine über 50 Aussetzer hatte ich in einer 56k Datei. Wird wahrscheinlich heut oder morgen eine neue Version geben, die das behebt
Werden die 10Byte nur für den File Transfer verwendet ? Wäre es möglich diesen Wert auf, sagen wir mal etwa 100 zu vergrößern, oder verträgt sich das nicht, da der UART nur 16Byte FIFO Puffer hat ? Die 10Byte sind vermutlich der Grund, wiso bei Baudraten über etwa 500kBaud die Geschwindigkeit gleich bleibt. Immerhin muss das Programm dann 5000x pro Sekunde neue Daten laden und die Anzeige aktualisieren.
Könnte man vergrössern. Werd ich in der nächsten Version mal machen. Ich hab dir mal ne Mail geschickt mit einer Version, die keine Bytes verschlucken sollte
Ich habe jetzt einige Daten übertragen, und hatte bisher keine Fehler mehr.
Also das Programm ist zu langsam, ich Schicke fast in einer Dauerschleife zeichen an den PC. Hyper-Terminal liest diese problemlos. HTerm freezed solange ein, bis der komplette Buffer leer ist *schnarch und Kaffepause mach*
Hab Dein HTerm eben auch mal getestet und muss sagen, es gefällt mir wirklich gut. Schön einfach und übersichtlich mit (fast) allem, was ich so brauche. ABER Simon K. hat leider recht! Bei hohen Datenraten ist es etwas lahm :-o Schade. Vielleicht könntest Du Dir die Routinen nochmal vornehmen. Vorschlag für neues Feature: Interessant wäre für mich (und evtl. auch für andere?) die Möglichkeit den I2C-Bus zu emulieren, um entsprechende Bausteine vor der Programmierung des uC testen zu können bzw. zur Fehlersuche.
ja, ich weiss das noch einiges zu verbessern ist. Ich werd die Routinen für den comport zugriff mal als nächstes angehen, dann sollte es besser werden. danach ist noch das ausgabefenster dran; dann sind die gröbsten mängel (meiner ansicht nach) beseitigt @thilo dein vorschlag ist sehr interessant aber lässt sich wohl nicht ohne echten hardwarezugriff auf die schnitstelle machen. wäre aber bei gelegenheit eine nette idee für ein neues projekt
Hallo sieht sehr gut aus evtl 2 erweiterungen.. das erste waere eine art History, dass man mit den courser tastan die letzten 10 (oder mehr) gesendeten zeilen wieder aufrufen kann das andere evtl einen button um spezielle Funktionen, wie LF oder TAB in der anzeige untern einzuschalten, dass die zeichen auch etwas formatiert werden koennen Gruss Jens
die history werd ich einbauen. die idee gefällt mir gut die formatierungen mit tab wird nicht gehen allerdings kann man über cr@ beliebige zeichen für zeilenumbrüche setzen. diese options gilt für die obere und untere box gemeinsam. zu den standardzeichenketten kann man per config file beliebige eigene für den zeilenumbruch definieren
das mit dem Tab koenntest du machen... du hast doch pro zeichen immer eine stelle jedes zeichen ist in der schriftart gleich breit und hoch.. also uebertragen wurden 2 zeichen (ein tab ist meinetwegen 10 Zeichen bei dir) dann sprinngst du eben an stelle 1, wenn ein tab gekommen ist evtl ist es auch morglich diesen tab dann als tab in die zwichenablage zu speichern nur eine idee ich weiss, dass es im Br@y Terminal funktioniert gruss Jens
Also sollte ich einfach ein Tab, wenn es Auftritt in eine Lücke von einer bestimmten Anzahl Zeichen umwandeln? Bin mir noch nicht sicher, ob ich das ganz richtig verstanden habe ;) So eine Funktion wäre meines Erachtens nach nur in der Ascii Only Ansicht von Nutzen, in der Mehrformat-Ansicht würde es etwas seltsamer Aussehen...
Hallo, ein sehr schönes Programm. Werde es mal ausgiebig testen. Aber da wir gerade bei der Featuritis sind: Ist es möglich, eine Art von Checksumme zu implementieren? Beispiel: Bei Kommunikation über das MODBUS-Protokoll wird an eine Zeile immer eine zweistellige Checksumme (CRC-16) angehängt. Wenn ich jetzt eine Zeile eingebe und für die Checksumme nur noch auf eine Knopf drücken müsste, wäre cooL ;-) Meines Wissens sind CRC-8, CRC-16 und CRC-32 die gängisgsten Typen. Schöne Grüße, der Wirus!
@Wirus Dann mach es ihm doch nicht so schwer und liefere gleich in den Algorithmus dafür in C-Syntax mit ... Danach wäre es für ihn ein Klacks.
Moin, hast ja recht ;-) anbei ein paar Seiten mit Code und Theorie: http://www.flounder.com/checksum.htm http://www.xilinx.com/xlnx/xweb/xil_publications_display.jsp?sGlobalNavPick=&sSecondaryNavPick=&category=-1209850&iLanguageID=1 speziell für Modbus: http://www.modicon.com/techpubs/crc7.html#0.2..637OJU.KDG87D.4 Schöne Grüße, der Wirus!
@Tobi waere schonmal von vorteil, wenn ich ein Programm ueber die RS232 debugge und nicht immer gleich viele zeichen gesendet werden ist es von vorteil, dass man mit einem TAB die sich zumindest im terminal zurechtsortieren kann.. evtl wenn man den inhalt einfach kopieren will eine funktion dazueinbauen, diese das dann mit dem tab zeichen auch macht Gruss Jens
Danke für die ganzen Vorschläge! Die Checksumme u.ä wird demnächst über einen weiteren Eingabemodus der Eingabezeile hinzugefügt. Dann schreibt man einfach an den Anfang oder ans Ende der Zeile im Modus cmd z.b cr16, dann wird das ganze eingefügt. So sieht zumindest die Planung aus ;) @jens Ich werd die Ausgabeboxen demnächst mal komplett neu schreiben und dann mal schaun, ob man etwas dementsprechendes implementieren kann. Wenn es irgendwie mit annehmbaren Aufwand machbar ist kommt das auf jeden Fall mit rein
Es gibt mal wieder was neues! Zwar noch keine Checksumme aber immerhin eine History Funktion für die Eingabezeile. Lässt sich mit den Hoch/Runter Tasten Auswählen; die aktuelle Position steht in der Statuszeile. Weitere Vorschläge sind natürlich immer willkommen. http://www.der-hammer.info/terminal/index.htm
Hi Tobi! Habe mir das Progr. jetzt mal runtergeladen, getestet und für sehr gut befunden, bis ich die Config speichern wollte. Da gab,gibt es dann ein sehr unschönes Bild.(siehe Anhang) Ist das nur bei mir so oder hat sich da irgendwo ein Fehler eingeschlichen? Achso! Win98se, direkt beim abspeichern der Config egal ob auto oder mit Hand MFG Uwe
Danke für den Hinweis! Der Fehler scheint nicht nur unter Win98 aufzutreten. Ich werd so schnell wie möglich einen patch dafür erstellen Solang sollten alle lieber bei der alten Version bleiben!
Problem sollte jetzt behoben sein. Neue Version steht online
Hi! Ok, .cfg speichern geht jetzt. Aber: 1.Beim Starten des Programms werden alle anderen Schnittstellen totgelegt(auch mein analoges Modem war plötzlich weg) 2.Wenn die Schnittstelle mit vielen Zeichen bombardiert wird(zum Test habe ich eine Mouse drann)verschwinden sackweise Zeichen und das Progr. wird teilweise unbedienbar(das geht bis zum Affengriff) Kann es sein das die Int.-bearbeiteung zu langsam ist?(Ok. Ist auch nur ein K6/III/500, aber auch da sollte es gehen) MFG Uwe
zu 1. Liegt wohl an der automatischen Erkennung der Comports. Werd ich ändern zu 2. das liegt leider an dem prinzipiellen aufbau der darstellung des programms, dass das ganze langsam ist. :/ Das wird erst behoben sein, wenn die ausgabeboxen neu geschrieben sind und das dauert leider noch ein wenig. zur geschwindigkeitssteigung, wenn man z.b nicht die mehrformatausgabe braucht hilft es, nur die ascii ausgabe einzuschalten und im menü unter optionen/default style on ascii zu aktivieren kannst du das programm nocheinmal neu runterladen und probieren, ob das totlegen aller schnittstellen jetzt beseitigt ist?
Hi! Programm geladen und gestartet. Ich bin noch online. Sehr schön! Hmm, nur ASCII geht wirklich schnell, nur wenn ich von HEX+ASCII auf nur ASCII zurückschalte, werden Minutenlang keine Zeichen empfangen. Das hält sogar an wenn das Progr. geschlossen und neu gestartet wird. Ämmm nochwas, .cfg kann ich zwar laden und es wird auch alles eingetragen nur es ist nicht wirksam.(lade .cfg mit nur ASCII-Haken aber es erscheint alles kunterbunt, oder eben andersrumm. Ich hänge es am besten mal an. Vollen Erfolg, Uwe
Hi, finde super dass Du so etwas geschrieben hast! Kann ich das Programm auch nutzen um die Daten die in einem Mikrocontrollerspeicher geschrieben werden (Bsp. Logbuchdaten) am PC auszugeben und löschen? Gruß, Boris
Ja, die Kommunikation musst du jedoch selber auf dem MC implementieren.
Tolles Programm, ich würde mir noch eine Terminal Emulation wünschen z.B VT100 oder ähnlich. Da ich eine formatierte Ausgabe als Daten-Monitor benutze.
Wo finden sich Infos dazu, wie so etwas umzusetzen wäre. Hab noch nie mit Terminalemulation gearbeitet. Im Moment dauerts auch noch etwas, bis ich wieder was mehr am Programm machen kann. Leider kaum Zeit :/
Seit kurzem gehen bei Datenübertragungen mit alter (DOS-)Software Daten verloren. Es werden beim Senden einfach ein paar Bytes weggelassen. Nach 2 Tagen hatte ich den Grund gefunden: HTerm Irgendwie verstellt das Programm die serielle Schnittstellen. Wenn ich das Bray Terminal verwende, dann funktionieren danach die DOS Programme problemlos, verwende ich dagegen HTerm gehen danach mit etwa 30% Warscheinlichkeit diese Programme nicht mehr.
Das hört sich nicht gut an... Ich bin im Moment schon dabei, die komplette Ansteuerung der Schnitstelle neu zu schreiben, da da an einigen Ecken und enden Murks war. Damit sollte dann einiges besser werden. Hast du denn die neuste Version? Zwischenzeichtlich gab es eine Version, die wohl anderen Programmen die Schnittstelle gekillt hat. Dafür gabs aber keine neue Versionsnummer. Also falls deine Version schon von irgendwann Mitte/Anfang des letzten Monats ist nochmal die neuste ausprobieren. Ansonsten kommt, wie gesagt, demnächst eine komplett überabreitete Version raus.
Noch was: Falls du das Programm ohne cfg's benutzt, kannst du mal ausprobieren, ob der Fehler auch auftritt, wenn du eine config zum laden angibst? Ich Vermute die automatische Erkennung der Comports immer noch als Schuldigen..
Ich habe mir gestern die neueste Version runtergeladen. Das mit der cfg werde ich ausprobieren. Öffne ich mit einem anderen Programm den COM Port, dann funktionieren die DOS Programme wieder, zumindest kurzzeitig.
Auch mit der cfg tritt das Problem auf. Zwar nicht immer, sondern nur manchmal, aber er stört trotzdem...
Ok, die Chancen stehen aber ganz gut, dass das mit der neuen Version beseitigt ist. Das neue Interface für die Serielle ist mitlerweile fertig (mit threads und alles non-blocking) und von den wichtigen Funktionen fehlt nur noch SendFile, dann kann ich dir mal eine Vorab-Version zuschicken.
Es gibt mal wieder nach langem eine neue Version! (v0.5.8) Die kompletten Interface-Routinen für die Serielle sind neu, dadurch ist das Programm beim Senden von grossen Datenmengen (via SendFile) nun wesentlich schneller. Ausserdem gibts keine Probleme mehr damit, dass andere Anwendungen in irgendeiner Weise blockiert werden. Weiteres im Changelog. Download wie immer hier: http://www.der-hammer.info/terminal/
Wie wärs mit einem Refresh-Button für die Auflistung der verfügbaren COM-Ports? Ich denke dabei an USB-Serial-Converter, die sich als COM-Port einblenden.
kleiner bug: Ich habe ein Config gespeichert in dem unter anderem das Format zum Senden auf dezimal gesetzt ist. Wenn ich diese Config lade, dann zeigt er mir auch DEC an, schicke ich jedoch ein Datum mittels Enter-Taste ab, dann verschickt er es als ASCII und schaltet die Anzeige auf ASC um. Wenn ich dann per Hand auf DEC zurückgehe, dann ist alles OK. Meine Vermutung: Du lädst nur das Label zurück, aber übermittelst nicht das Zahlenformat an die Software? Gruß faust
Da hat sich wohl ein Fehler eingeschlichen. Deine Vermutung ist korrekt. Ich werd das korrigieren, danke für den Hinweis.
Ein kleiner Ausblick auf die kommende Version: Die neuen Ausgabe-Boxen verarbeiten bis zu (getesteten) 500mb(!) an Daten. Bei Datenmengen bis zu mehreren dutzend MB geht ein Ändern der Fenstergrösse oder Umschalten der Ausgabeformate innerhalb von wenigen Millisekunden bis Sekunden. Auch in der Ansicht mit allen Formaten ist die Ausgabe dann nicht mehr langsamer. Damit wäre dann das letzte grosse Defizit beseitigt. Es wird noch ein bisschen dauern aber ich hoffe, dass, wenn es so weit ist, sich viele interessenten finden ;)
Version 0.6 ist fertig - mit vielen, vielen Neuerungen! Wie schon erwähnt sind die Ausgabefenster komplett neu geschrieben. Dadurch gibts eine ganze Reihe an Verbesserungen: - Die Ausgabeboxen können jetzt problemlos mehrere Dutzend MB Daten verarbeiten, ohne spürbare Verzögerung beim Ändern des Ausgabeformats oder der Grösse. Ausserdem gibt es eine verbesserte Kopier-Möglichkeit - Bei grossen Datenmengen wird das Programm nicht mehr ausgebremst. Die oben erwähnten Kaffepausen gehören damit der Vergangenheit an - Die eingehenden Daten können jetzt auf Parity- und Frame-Fehler geprüft werden. Diese werden dann rot hervorgehoben - Mit der neuen Autoscroll Option kann das Scrollen beim Empfangen jetzt individuell aktiviert oder deaktiviert werden Sonstige kleinere Neuerungen: Refresh Button für die Comports, Ausmaskieren der oberen Bits im Ausgabefenster und einiges an Bugs behoben. Genaueres wie immer im Changelog. Download gibts hier: http://www.der-hammer.info/terminal/ Fehlermeldungen oder Vorschläge sind auch weiterhin gern gesehen, hier oder auch per Mail. Im Anhang ein Bild mit dem aktuellen 'Look'
Gibt mal wieder ein kleines Update auf v0.6.1. Neu ist ein Lineal, Zeilenumbrüche nach x Zeichen und versteckbare Toolleisten.
Hi, echt ein sehr gelungenes Terminal. Toll wäre noch wenn man den Output mitloggen könnte. Zur Zeit ist es ja nur möglich den Output in Ascii-Format abzuspeichern. Ich zB würde eine .log Datei mit zB wahlweise Hex oder Ascii oder Bin oder ... Werten sehr begrüßen. Think about it.
Moin, hab noch einen kleinen Vorschlag zu deinem Programm, das mir ansonsten sehr gut gefällt. Du speicherst zwar die Fenstergröße, aber leider nicht die Aufteilung. Das Outputfenster nimmt immer den gleichen Platz ein, während der Input den REst bekommt. Schön wäre es, wenn die Aufteilung beim Start auc hin der Inidatei abgelegt wird. Mike
Sorry für die späte Antwort. Gab kleine Probleme mit meinem Inet-Anschluss @Kurt Sowas wird noch kommen. Als Workaround könnte man den gesamten Fensterinhalt markieren (Ctrl-A) und dann per Rechtklick im gewünschten Format kopieren und in eine beliebige Datei einfügen. @Mike Guter Vorschlag. Wird gemacht
Könntest du beim nächsten Update noch eine Unterstützung für ein paar Handshakes einbauen ? Vor allem CTS wäre hilfreich, denn das wird ab und zu genutzt um den Datentransfer abzubremsen.
hi tobi, danke für deine mühen, sieht wirklich gut aus - lassen sich CTS & Co auch manuell ein/ausschalten? Ich habe eine kleine parasitäre Schaltung, bei der sowas zum einstellen außerordentlich hilfreich wäre. die leds finde ich persönlich nicht so schick, ein einfacher kreis der aufleuchtet passt evtl. besser zum rest des interfaces..geschmackssache und lässt sich das programm dank wxwidgets eigentlich einfach auf linux portieren (würde auch gerne was damit machen, blicke aber durch die möglichkeiten nicht durch)? In about.. critics bedeutet kritiker, ich glaube du meinst criticism oder allgemein suggestions ;-)
@benedikt Wird gemacht. Steht auch schon länger auf meiner todo Liste aber bisher hatte noch niemand gefragt ;) @leif CTS und Co sind eingehende Signale, diese können nur von der anderen Seite beeinflusst werden. Von dem PC aus, auf dem das Terminal läuft kann nur DTR und RTS gesteuert werden. ich werd mal ausprobieren, wie ein schwarz/grauer Kreis aussieht. Ich habe zwar wx benutzt aber leider gibt es dort keine Unterstützung für die serielle Schnittstelle (man hätte die ctb-lib nehmen können...), so dass alle diese Routinen extra portiert werden müssten. Das ganze GUI liesse sich aber Problemlos ohne Änderung auf Linux/Mac kompilieren. Die Schreibfehler werd ich ganz schnell beseitigen :)
Hallo Tobi! Auch von mir: herzlichen Glückwunsch zu dem sehr gelungenen Wurf für Controllerprogrammierer! 2 Sachen sind meiner Meinung nach noch leicht zu ergänzen: - Autoload Config on Start, & - Autoload inkl. Auto Load Output Vielleicht jeweils als Option, daß man bei Schwierigkeiten wieder abwählen kann. Schöne Grüße NR
Jo ich verwend dein Programm auch sehr häufig. Ein Autoload von ner Konfiguration bei Start wär echt sehr hilfreich.
Achja ... noch eine Frage, Tobi ... im Abschnitt "Rechtliches" steht es etwas uneindeutig über die gewerbliche Nutzung deiner Software: "... solange nicht mit dem Programm selber Geld zu verdienen". Wie ist der Abschnitt zu verstehen? Wird nur der "Weiterverkauf" des Programms untersagt? ... was ja mehr als verständlich ist! ... oder auch jeglichen gewerblichen Einsatz? ... Das wäre ja schade! ;)
Was meint ihr eignetlich mit einem Autoload? Eine erstellte Config Datei läßt sich beim Start automatisch laden, einfach als Parameter übergeben. Oder ist damit noch etwas anderes gemeint? Mike
@Mike: Ja, genau diese Funktionaltät! Nur, daß es beim Start die zuletzt abgespeicherte Config-Datei automatisch laden soll, ohne die Command Line Option benutzen zu müssen.
@NetRunner Von einem automatischen Laden habe ich bisher abgesehen, da dafür irgendwo Informationen gespeichert sein müssten, welche Datei geladen werden. Bisher habe ich immer versucht, ohne weitere immer benötigte Dateies auszukommen. Ich könnte es allerdings einbauen, dass eine Cfg-Datei mit einem bestimmten Namen immer geladen wird, wenn sie denn vorhanden ist (z.b hterm.cfg o.ä). Was genau stellst du dir unter Auto Load Output vor? Nur der Weiterverkauf bzw überhaupt der Verkauf des Programms ist untersagt, der gewerbliche Nutzung steht absolut nichts im Weg. Ich würde mich sogar sehr darüber freuen, wenn das Programm nicht nur Hobby-Bastlern zugute kommt. Ich werd den Text noch mal ein wenig überarbeiten, damit es deutlicher wird.
@Tobi - Auto Load Config: das kannst ja mit einer Art "ifdef" lösen: falls es eine cfg-Datei existiert, wird sie automatisch geladen. Wenn nicht, alles Defaultwerte. Somit ginge auch alles ohne Extrafiles. - Auto Load Output: der zuletzt abgespeicherte Output-Inhalt wird beim Start automatisch geladen, sodaß man leicht die neuen Daten mit den der letzten Sitzung vergleichen kann. Der Windows-eigene HyperTerminal arbeitet beispielsweise so. Und zwar mit einem Auto Save Output zusammen, was hier natürlich auch als optionales Feature wünschenswert wäre. :-) - Rechtliches: sehr schön, dann kann es dir sicher sein, daß wenigstens schon ein gewerblicher Nutzer unter den Fans ist! ;)
Nachtrag: solche Pfad/Dateinamen-Geschichten werden oft mit der Registry gelöst ... was zwar nicht unbedingt portierungsfreundlich ist, aber nur aus wenigen Angaben besteht.
Ich bin kein grosser Freund der Registry und hab deshalb bisher so gut wie möglich versucht drumherumzukommen ;) Die Lösung mit der default-Datei, die geladen wird, wenn vorhanden gefällt mir aber gut. Werd ich in den nächsten Tagen einbauen. Der Rest kann noch ein wenig länger dauern. Wofür benutzt du denn das Programm im gewerblichen Bereich?
Hehe ... das mit der Registry habe ich schon gemerkt ;) Das kann man dir nicht verübeln. Wo damals die Registry doch ins Rennen geschickt worden, um das ganz große Wirrwarr im Windowsverzeichnis zu lösen. Daraus entstanden ist ein noch größeres Wirrwarr und dazu noch weniger Portierungsfreundlichkeit. Vielen Dank für Dein Arbeit! :-) Ich arbeite an Embedded Controllers im FPGA.
komplement, ist ne saubere zweckmässige sache... leider keine fehler gefunden die ich dir mitteilen könnte :-)
"leider keine fehler gefunden die ich dir mitteilen könnte :-)" Das ist aber schade (-; Überigens wird die nächste Version Daten direkt als CSV speichern können
darf ich noch einen kleinen wunsch äußern? ;-) eine möglichkeit zur einstellung der fonts im output- und inputfenster wäre auch sehr hilfsreich für die leserlichkeit bei individuellen bildschirmauflösungen der nutzer. :-) schöne grüße NR
Darfst du ;) Das Einstellen von Fonts kann ich leider kaum einbauen, da die ganze Darstellung darauf beruht, dass nur Fonts fester Breite verwendet werden. Die Grösse sollte aber irgendwie machbar sein, werd ich mich demnächst mal durchwurschteln
soweit es mir bekannt ist, unterscheiden sich auch unter den truetype-fonts zwischen proportionalschrift und fix width fonts. aber die einstellung der schriftgröße sollte fürs erste völlig ausreichen :-) vielen dank für deine arbeiten! :)
achja ... noch was ... sehr hilfreich wäre noch, daß das scrollrad der maus im output-bereich scrollen könnte.
Hm.. bei mir klappt das. Werde mal auf einem anderen System mit anderen Mäusen probieren
ok ... ich arbeite hier noch unter Win2k. die maus hat einen ganz normalen logitech-treiber. hier läuft noch etwas anderes außerplanmäßig: obwohl ich bei "CR" nur "CR" ausgewählt habe und nicht "CR+LF", läuft die ausgabe weiter nach unten in immer neuen zeilen. hyperterminal macht es aber richtig bei der gleichen gelegenheit.
Hi Tobi, ich hab mir dein Programm runtergeladen. Das ist wirklich Super und hat mir weitergeholfen :o)) DANKE! Ein Fehler ist mir aufgefallen. Ich wollte manuell die Baudrate ändern, weil ich mal einen krummen Wert zum testen eingeben wollte, da ist das Programm abgeschmiert. Wäre so etwas möglich? Etwas spezielles könnte ich noch gebrauchen, aber das passt wohl nicht so gut in das Programm. Zum Bsp. ein paar Tasten die man mit einer bestimmten Sequenz belegen kann die bei Druck gesendet wird. Gibt es so etwas, oder siehst Du da eine Möglichkeit?
Kannst den den Absturz reproduzieren, bzw tritt er nur bei einer bestimmten Eingabe auf? Bei mir lief mit ein paar zufälligen Zahlen alles glatt. Solch eine Funktion ist für das Senden von Zeichenketten ist geplant, kann aber noch einiges dauern, da mir im Moment leider die Zeit dazu fehlt.
Hi Tobi, ich Denke das ist nicht so schlimm. Der Port war verbunden, als ich einen Wert eingeben wollte. Wenn ich zum BSP. 9605 Baud eingebe, kann ich nicht verbinden, aber das funktioniert wohl eh nicht. So gut kenne ich mich damit leider nicht aus. Ich wollte nur Prüfen, in wie weit mein Programm mit Tolleranzen zurecht kommt. Gruß Mario
in der aboutbox steht was von "non commercial use". Was soll ich jetzt darunter verstehen? Darf ich das Ding benutzen um Commercial Anwendungen zu entwickeln oder nicht??
Ja, darfst du. Ist noch etwas missverständlich formuliert. Das Einzige, das verboten ist, ist der Verkauf der Software als Einzelnes oder als Bestandteil eines Pakets. Der Text für die nächste Version ist schon entsprechend korrigiert, damit das deutlicher wird.
Hi Tobi, klasse Tool, ich möchte es zum auslesen eines Messgerätes (langzeit Messung) benutzen, und bräuchte somit die möglichkeit zeitgesteuert (alle x sekunden)ein zeichen zu senden um den Meßwert zu bekommen. hoffe du kannst da was machen. Gruß MrFrost
Eine richtige Sciptsteuerung ist vorerst nicht in Planung, aber das kontinuierliche Senden einer Datei (alle x Sekunden) werde ich demnächst versuchen einzubauen.
Hallo Tobi, hab mich wohl etwas undeutlich ausgedrückt. Ich will nicht eine datei senden sondern nur ein zeichen senden, dann sendet mein Messgerät den gemessen wert zurück. Hoffe es ist nun deutlich. Gruß MrFrost
Hi, was ist den daran so schlimm in der datei nur das eine zeichen zuspeichern? Gruß, Dirk
Stimmt kann man auch machen, hab ich nicht drann gedacht. Gruß, MrFrost
Hi Tobi, danke für Dein nettes Programm. Es wäre schön, wenn die Eingabezeile auch Focus behielte, wenn man auf Buttons klickt.
Gute Idee und danke für den Hinweis. Ab in die Todo-Liste damit ;)
Hallo, eine graphische Ausgabe der Empfangenen Werte wäre nett, wobei man hier bestimmte Bytefolgen rausfiltern könnte (Steuerzeichen etc.)
Was genau meinst du mit grafischer Ausgabe? Ich kann mir da so direkt nichts drunter vorstellen.
Hi, wenn ich zum Beispiel einen 8-Bit Wert von einem Mikrokontroller über die serielle hereinbekomme, könnte man die eintrudelnden Meßwerte in einem Graphen darstellen. Eben punkte in abhängigkeit der Wertigkeit auf einem Koordinatenkreus zeichnen. Das kann man bestimmt noch verfeinern, aber so hätte man eine Graphische Ansicht. Es gibt ein Proggie das soetwas macht. Ich gebe hier ma den Link an: http://bray.velenje.cx/avr/terminal/
Ja, die grafische Anzeige wäre super. Wenn man dann noch eine Bytesequenz einstellen könnte, die die Zeichenlinie wieder an den Beginn des Bildes setzen würde (quasi eine Synchronisation), dann wäre das ganze perfekt.
Endlich ein Programm in dem man alle Baudraten einstellen kann und auch den Status der Leitungen angezeigt bekommt! Ideal zur Mikrocontrollerentwicklung. Ok. jetzt kommt die Wunschliste ;-) Mit USB seriell Wandlern kann man auch 1 Mbit einstellen (Kann man auch im Programm) Die Anzeige ist aber um eine Stelle zu klein. Sehr nützlich wäre auch eine Unterstützung der Handshaking Protokolle RTS/CTS. Insbesondere bei höheren Baudraten sollte ein Mikrocontroller auch zum PC sagen können Stop jetzt erstmal. (CTS Leitung aktivieren) Ich weiss nicht wie ihr sowas debuggt. Ich nehme vorgefertigte Pakete in Dateien ,sende diese und schaue mir den Output an. Praktisch fände ich wenn der Status der CTS Leitung bei der Unterstützung des RTS/CTS Handshakings mit auftaucht evt. mit Zeit die die CTS Leitung das Senden verboten hat. Da bekommt man eine Ahnung wo es kritisch wird und wann man seine internen Puffer vergrößern sollte.
Hallo, oh ja mir fällt auch so viel ein,.... Hier noch eine Spnnerei von mir: Ich sende oft einzelne bytes über die serielle, mit der ein PWM Kanal gesteuert wird. Schön wäre es zum Beispiel, wenn man einen Schieber hätte, der entsprechend seiner Stellung ein oder mehrere Bytes schickt. Also schieber einstellen, druck auf einen Button, und der Wert wird gesendet. Oder mit rechter Maustaste schieben, und beim loslassen senden.
es wird wirklich zeit für eine skriptimplementation hier ;) aber ich glaube, wir versuchen gerade den tobi restlos zu überlasten ;)
Überlasten noch nicht, aber auslasten ganz sicher :) Danke erstmal an alle für die Vorschläge, die meisten sollten sich umsetzen lassen. Über eine Scriptsprache denke ich auch schon einige Zeit nach (die Thematik interessiert mich auch so), vondaher werde ich, wenn das nächste Update raus ist auch mal ein wenig damit experimentieren. Ob das aber was wird kann ich bisher nicht sagen, ich wälze gerade erst einmal die flex und bison manuels durch
Hallo zusammen, gibt es eigentlich so ein Progrämmle auch für eine Ehternetkommunikation? Ich versuche verzeifelt mit einem Gerät zu kommunizieren, was über TCP/IP binär (CoLa B) angesprochen werden will... Das Programm werde ich aber auf jeden Fall mal mit einer seriellen Kommunikation testen.
schon getestet, aber wie stelle ich dar binäre oder hex-werte da?
Hi Tobi, falls Du noch Anregungen brauchst: - fortlaufende Nummerierung der Empfangszeilen (und Sende~?) - führende Leerstellen bei empfangenen Zeichen anzeigen ( macht nur Sinn, wenn Werte Dezimal als ASCII übertragen werden; aber in dem Fall ist eine rechtsbündige Anzeige vielleicht sinnvoll, sonst bringt ein Wert mit +- einer Stelle alles durcheinander). Danke für's Programm!
Die Zeilennummerierung haben schon mehrere vorgeschlagen, aber bisher habe ich noch keinen Weg gefunden, auch längere Zahlen vor die Zeilen zu schreiben. Bei mehreren Ausgabeformaten geht das ja noch, aber bei z.B nur Ascii wird es doch arg schnell eng. Was meinst du genau mit führende Leerstellen anzeigen? Wird bisher irgendetwas nicht korrekt angezeigt? Rechtsbündig wäre nur für einen sehr sehr eingeschränken Bereich sinnvoll, vondaher hat das erstmal keine so hohe Prioriät. Trotzdem Danke für die Vorschläge, ich bin immer für gute Ideen zu haben :)
Hi Tobi, vergiß das zweite, dafür kann man schließlich CR senden. Ich hatte eine Reihe von Werten mit dem Umbruch-Feature untereinander aufgelistet, aber das ist natürlich bei einem Wert mit abweichender Stellen-Zahl heillos durcheinandergeraten.. Das erste ist mir auch nur aufgefallen, weil mir das Autoscrollen mal nicht aufgefallen ist, und ich dachte, der Wert hätte sich nicht geändert. Vielleicht geht auch ein Farbverlauf, oder statt Zeilennummer eine Farbklecks links, die dann mitscrollen.. Benutzt Du eigentlich die ctb Lib mit wxWidgets? Ich will demnächst ein Steuerprogramm für eine µC-Schaltung schreiben, und muß mir noch eine Plattform suchen. Qual. Es soll vor allem unter Linux laufen, aber das angeeignete Können soll auch unter Win zu was nütze sein. Naja, mal sehen.
Nein, die ctb-Lib verwende ich nicht. Ich habe mir den Code aber vorher eingehend angeschaut, weil dort alles sehr schön ausführlich und gut dokumentiert ist. Ich brauchte aber eine Klasse, die ereignisorientiert und blockierend arbeitet (da in einem Thread). Deshalb war die ctb sonderlich gut geeignet. Sonst hab ich aber bisher nur gutes von der Lib gehört, scheint also empfehlenswert zu sein. Wegen dem schlecht sichtbaren scrollen habe ich schon eine Lösung. Wenn man die Maus über ein Zeichen hält wird seine Position (im Puffer) angezeigt, und wenn diese sich ändert sieht man ja dann, dass das ganze scrollt. Werd nachher oder morgen mal einen Screenshot von der neuen version einstellen
Alles klar, danke. Ich könnte gerade gut gebrauchen, daß die Steuerzeichen-Optionen (send-on-enter) als Checkboxen oder als Buttons zum Einzelversand vorhanden wären. brauchst nicht zu antworten.
Hier mal eine kleine Vorschau Die wichtigsten Neuerungen: - Neue Optionen beim Speichern - komplett neue Eingabezeile mit einigen neuen Hotkeys - neues Autosend für Dateien und die Eingabezeile (löst Sendfile ab)
Hiho, erstmal, tolles Programm. und nun ein kleiner Verbesserungsvorschlag; ich würde eine Art timestamp am Anfang der Zeile toll finden. Entweder als absolute Zeit oder, imho noch besser, als Zeit seit dem letzten Paket. Matthias
Könntest du noch Schaltflächen hinzufügen mit denen man die Ausgangspins direkt steuern kann?
Die beiden ausgehenden Statusleitungen lassen sich mit DTR und RTS unter Input Options direkt ansteuern. Für den TxD-Pin ist das leider prinzipiell nicht möglich.
wir waers hiermit: if(TxD_Pin) EscapeCommFunction(com_h, SETBREAK); // TxD_set else EscapeCommFunction(com_h, CLRBREAK); // TxD_reset hiermit kannst du TxD setzen ps. Super Programm hat mir schon einige Arbeit erleichtert
Aber Achtung: Wenn man sendet während Break an ist kommt die WriteFile-Funktion nicht mehr zurück.
So etwas hatte ich mir schon fast gedacht. Dann werde ich genau kontrollieren müssen, ob wirklich alles gesendet wurde bevor break ran darf. Ich wusste bisher garnicht, dass das setzten von TxD mit Break geht. Steht in der MS-Hilfe garnicht drin :|
bin mal auf deine neuesten versionen gespannt :) ach ja für bitbanging ist das allerdings weniger geeignet seehr langsam 1,4 MB über SPI(-over-RS232) machen definitiv KEINEN Spaß (Kein/e Sarkassmus/Ironie: Bau noch ne routine für lpt ein und wir nennen dich nicht mehr gott, sondern root und verneigen uns in Ehrfurcht)
Hab ein Fehlerchen gefunden (0.6.1beta): - RTS reindrücken - Parity oder eine andere Option verstellen -> RTS geht am Kabel aus obwohl der Knopf noch reingedrückt ist
Ist behoben. Das Schreiben des DCB killt äußerst sorgfältig alle Einstellungen. @sonst wer Nein, für bitbang ist das sicherlich schlecht geeignet, dafür wird es bei HTerm auch nie zu gbrauchen sein, es sei denn jmd hat Spaß an BitBang per Button. Bin auch mal gespannt auf die nächste Version, überigens Gott reicht mir voll und ganz (-:
noch ein Vorschlag zur Verbesserung: - Ein Button mit dem man das Autoscrollen des Outputfensters anhalten/fortsetzen kann - Eine Funktion zum speichern der aktuellen Einstellungen - Ändern des Output-Font zulassen, min. schriftgröße ändern lassen
es lohnt sich bald, für HTerm einen Wiki einzurichten. die feature requirements fangen langsam an, sich zu wiederholen. ;)
"- Ein Button mit dem man das Autoscrollen des Outputfensters anhalten/fortsetzen kann" Dieser Button heisst 'Autoscroll' und befindet sich in den Output options neben den Statusleitungen-Anzeigen. "- Eine Funktion zum speichern der aktuellen Einstellungen" Im Menu File/Save config as. Wenn du diese Datei unter dem Namen 'hterm.cfg' im gleichen Verzeichnis speicherst, in dem die .exe-Datei liegt, wird sie jedes mal beim Start automatisch geladen. Ein Ändern der Fontgrösse fehlt bisher noch. Ist leider etwas komplizierter Einzubauen, deshalb kann ich nicht sagen, wann das etwas wird. "es lohnt sich bald, für HTerm einen Wiki einzurichten." Hier im mc.net-Wiki könnte man wirklich mal eine Seite dazu machen. Vllt auch mit ein paar weiteren Erklärungen zur Bedienung. Oft ist ja alles da, nur hab ich es wohl so konfus benannt, dass es keiner findet.. (-:
Bitte zur Kenntnis nehmen: ! "sonst_wer" ungleich "sonst wer" ! @sonst_wer: lies dir bitte mal ne die (ausführliche) Anleitung durch
Hi Tobi! Gibt es vielleicht inzwischen eine aktuelle "Nightly Build"? ;) Wenn ja, magst Du sie vielleicht mal hochladen? :) schöne Grüße NR
Hey, Dein Terminal-prog gefällt mir sehr gut! Hat mir aber gerade einige Schwierigkeiten mit den AT-Kommandos für mein Handy bereitet: es fehlt die Möglichkeit z.B. ctrl+Z zu senden... Also statt CR, LF Space... Gäbe es nicht die Möglichkeit das in dein INI-File aufzunehmen wie beim CR@ ? das Wäre Opti ! Thx!
Nach langer langer Zeit gibts mal wieder eine neue Version (0.6.3): Neben einigen Detailsverbesserungen gibts jetzt eine Funktion zum automatischen wiederholten Senden von Dateien oder der Eingabezeile. Ausserdem ist das speichern in unterschiedlichen Formaten jetzt möglich. Eine Funktion, um einen selbstdefinierten Text bei 'Send on enter' anzugeben gibts jetzt auch. Dabei kann man einen String angeben, der vor die Eingabezeile gehöngt wird, und einen, der dahin angehängt wird. Bisher allerdings nur per cfg-Datei konfigurierbar. Alles weiter verrät die Hilfe (Stichwort: custom_prefix/postfix) Da recht viel verändert wurde können sich auch gut ein paar Fehler eingeschlichen haben, trotz sorgfältigem Testen (das passiert ja sogar den grössten Softwareanbietern ;). Wer etwas findet, bitte hier oder mit per Mail schreiben, damit ich das schnellstmöglich korrigieren kann. Ausserdem ist jetzt eine Datei License.txt mit im zip, in der hoffentlich jetzt etwas eindeutiger steht, was mit dem Programm erlaubt ist, und was nicht (und, dass ich nix dafür kann, wenn das Programm irgendetwas kaputt macht :) Viel Spass beim testen! http://www.der-hammer.info/terminal/index.htm Tobi
Output wie in der Anzeige speichern (alle gewählten Formate, mit Umbrüchen)
"Typkonvertierung bei Eingabe 512 -> 02 00" Das passiert bei dezimaler Eingabe schon. Bei allen anderen Eingabemodi bringt eine solche Konvertierung keinen Vorteil. Dass eine dezimale Zahl als 2 Byte interpretiert wird erkennt man an dem etwas dunkleren Rotton "Output wie in der Anzeige speichern (alle gewählten Formate, mit Umbrüchen)" Etwas mehr Arbeit aber werd ich auch mal versuchen
Hallo Leute, Ich habe mal eine Frage zur Verwendung des Mausrades: Funktioniert das scrollen mittels Mausrad nur bei mir nicht oder gibt es damit ein echtes Problem ? P.S. währe echt super wenn man mit auch mit der Maus scrollen könnte, wenn man nicht direkt auf dem Ausgabe-/Programmfenster ist. Wie siehts eigentlich mit nem veränderlichen Font aus ? (Größe, Schriftart, Farbe[Schrift- und Hintergrund-])
Hi Bastler! Das Problem mit dem Mausrad habe ich schonmal angesprochen. Es ist in der neuen v0.6.3 leider geblieben. Sowohl unter Win2k SP4 als auch unter WinXP Pro SP2 und unabhängig davon, ob ich ins Input/Output-Bereich geklickt habe, kann ich die Inhalte in beiden Bereichen nicht mit dem Mausrad scrollen. Auf beiden Systemen bei mir ist ein Logitech-Maustreiber installiert. In anderen Programmen habe ich dieses Problem allerdings nicht. Auch das mit der Fonteinstellung habe ich vor ein paar Monaten hier angesprochen. Ich denke, Tobi arbeitet schon dran. Ein Frühlingsgruß an alle Bastler unter uns! ;) P.S. der Wiki-Bedarf hier wird immer dringender! ;)
Ob das scollen funktioniert liegt wohl an der verwendeten Maus (bzw dem Treiber). Bei einigen wird das Drehen des Mausrades wohl automatisch in scrollen umgesetzt, bei einigen nicht. Ich werd versuchen, dass so umzuändern, dass es nicht mehr vom Treiber abhängig ist.
Alle, die Probleme mit dem Scrollen hatten, die Datei noch einmal herunter laden. Das sollte jetzt bei jedem klappen. Allerdings muss dafür das Fenster markiert sein (blauer Rand). Die Versionsnummer ist gleich geblieben, sonst sollte sich auch nichts geändert haben.
Vielen Dank, Tobi! :-) Auch für die anderen neuen Funktionen in der v0.6.3! hehe ... auf die Gefahr hin, daß ich Dich wieder damit nerve ... ;-) Kannst Du die Scrollgeschwindigkeit vielleicht auch vom System übernehmen? Es scheint momentan so zu sein, daß sie im Output-Fenster bei HTerm fest eingestellt ist bei genau einer Zeile pro Mausrad-Schritt, egal ob ich 6, 10 Zeilen oder eine ganze Seite per TweakUI einstelle. Schöne Grüße :-) NR
ist es eigentlich auch irgendwie möglich mit dem Programm nur zu lauschen, also den Datenverkehr eines COM Ports mitzuschneiden? Sobald ich mich mit einem Port verbinde ist der ja für andere Anwendungen nicht mehr verfügbar. Ansonsten: Tolles Programm
Das ist so ohne weiteres nicht möglich, da Windows standardmässig nur den exklusiven Zugriff zulässt. Die Anwendungen, die ich bisher zum belauschen gesehen habe umgehen das, indem sie einen eigenen Comport-Treiber dazwischen hängen. Davon hab ich allerdings bisher keinen blassen Schimmer ;) Bei Sysinternels gibt es aber eine kostenloses Programm zum mitschneiden @NetRunner Sollte möglich sein, ich werd mich mal schlau machen. Bisher ist das auch alles hardcoded.
Hi Tobi, oft und gerne arbeite ich mit Deinem Programm. Nun habe ich mal aus Versehen den "Show errors" Haken gesetzt und - siehe da, meine ganzen Datensätze, die ich vom Controller sende, sind rot. Trotzdem stimmen die Daten ausnahmslos. Hin und wieder erscheint im Datenstrom auch mal ein grünes Byte, aber eben nur manchmal. Worauf gründet sich die Error-Anzeige bzw. wann wird ein Byte rot markiert, obwohl es eigentlich korrekt gelesen wurde? Schöne Grüße! TravelRec.
Die Funktion leitet direkt die Fehler weiter, die bei SetCommMask ein EV_ERR auslösen. Das sind CE_FRAME - framing error CE_OVERRUN - rx buffer overrun CE_RXPARITY - parity fehler beim empfang Irgendeine dieser Bedingungen tritt wohl immer auf. Ich kann nächste Woche mal eine Debug-Version fertig machen und dir schicken, die genauer ausgibt, was für ein Fehler aufgetreten ist. Noch eine Sache ist wichtig: Da man nicht genau feststellen kann, welches Byte in einem kompletten Block eingelesener Daten falsch ist, wird immer der ganze Block als falsch markiert. Dadurch kann bei schneller Übertragung (=grössere Blöcke) auch bei vereinzelten Fehlern recht viel Rot werden.
Das wäre sehr schön, wenn man den Fehler genau sehen könnte. Vielen Dank für Deine Mühe! eMail: info@travelrec.de Schönes Wochenende! TravelRec.
Hi Tobi nochmal, Asche auf mein Haupt, Dein Programm macht alles richtig, mein USART war falsch initialisiert (ein Bit verrutscht in UCSRB, dadurch ein Framebit zu viel :-\ nicht gesehen in der Aufregung...). Mit der neuen Init klappt dann wieder alles wie gewohnt. Trotzdem schönes Wochenende! TravelRec.
Gut, dann hat die Fehleranzeige doch schon einmal was gebracht:) Auch ein schönes WE
Eine sehr geniale Debugginghilfe ist die neue TimeStamp-Funktion im Output. Ich schätze mal, sie basiert auf die Systemticks der Rechneruhr. Die aktuelle Lösung rechnet die Zeit auf Millisekunde genau um. Wäre es möglich, die Genauigkeit noch eine oder 2 Stellen, oder gleich auf Mikrosekunde weiter zu erhöhen? Schöne Grüße NR :)
Intern wird die Zeit auf 100ns genau gemessen, allerdings dann auf Millisekunden heruntergerechnet um Speicherplatz zu sparen. So kommt man mit 32bit aus, ohne das es sonderlich oft/schnell einen Überlauf gibt. Für höhere Genauigkeit müsste ich 64bit Speichern, dass wird bei einigen MB im Ausgabefenster schon einiges mehr. Ich werd aber mal schaun, ob sich noch ein oder zwei Stellen machen lassen.
hehe ... alles klar ... vielen dank! :) die kleinsten zeitabstände bei mir sind im einstelligen mikrosekundenbereich. allerdings käme ich schon mit 2 stelligen µs angaben sehr gut klar! das mit einigen MB im ausgabefenster in der embedded-entwicklung würde aber auch schon nach zwischenspeicherungen schreien! ;) außer ... man versucht mit HTerm den download von WinXP SP2 vom m$-server mitzuschneiden :D schöne grüße NR :)
Wie sinnvoll sind solche kleinen Zeitangaben eigentlich? Bis die Daten vom UART durch den Windows-Kernel zum Anwendungsprogramm kommen geht ja einiges ab im System.
Ich bin gerade über einen Fehler in Version 0.6.1 gestolpert. Ich arbeite mit einem USB-seriell Adapter am MC. Wenn ich Connect mache und zwischenzeitlich den Strom wegnehme wird der COM Port gelöscht und wenn er der Strom wieder angeschaltet wird ist er wieder an dem gleichen COM Port. Wenn wieder aus dem Terminal gesendet wird ohne erneuten Connect geht ein warte Sendefenster auf. das nicht beendet wird. Ist ja auch klar da er zwar auf den gleichen COM Port zugreift aber auf ein ungültiges Handle. Ich weiss nicht ob es inzwischen behoben wurde, ich vermute nicht. Für ein normales Terminalproggi ist die Situation vielleicht etwas weit hergeholt, aber Hterm ist ein hervorragend geeignetes Programm zum seriellen debuggen mit MC insbesondere mit USB-Seriell Adaptern und da kommt sowas öfters vor.
Ich habe die Situation mal nachgestellt. USB-seriell dran, connect, abziehen und wieder neu anstecken. Sollte den gleichen Effekt haben wie das von dir beschriebene. Senden funktioniert danach natürlich nicht mehr, aber was für ein warte-Sendefenster meinst du? Was hast du genau gemacht, damit es kam, oder kannst du einen Screenshot anhängen?
>Sollte den gleichen Effekt haben wie das von dir beschriebene
genauso und es muss der gleiche COM-Port sein auf den erneut gesendet
wird. Dann kommt dieses Fenster
Ok, das Datei senden war der Schritt, der mir noch fehlte. Ich hab schonmal was gesucht und ich denke es sollte machbar sein, dass, wenn der Port nicht mehr vorhanden ist, automatisch disconnected wird. Das werd ich mal einbauen müssen. Danke für den Hinweis!
Hallo Tobi, Has du evtl vor in deinem Programm XYZ-Modem zu implementieren? Gruß Flow
Eigentlich sollte der Zugriff auf die Schnittstelle einen Fehler liefern. Ich würde sowas wie ERROR_INVALID_HANDLE The handle is invalid. 6 (aus winbase.h) bei GetLastError erwarten. Insoweit würde ich auch erst bei einem erneuten Zugriff prüfen ob die Schnittstelle geschlossen wurde falls WriteFile keinen Fehler liefert. Denn wenn du auf einen Disconnect prüfst schaffst du Dir ein Problem da du ständig pollen müsstest und das Abziehen und Wiederanstecken oder (Stromlos machen) kann sehr schnell gehen und dann ist der Port ja wieder da aber du hast kein gültiges Handle mehr.
Das Pollen der Ports ist nicht nötig. Windows verschickt Nachrichten, wenn sich die Konfiguration ändert. Abonnieren lassen sich die Messages per RegisterDeviceNotification (DBT_DEVTYP_DEVICEINTERFACE), aufkündigen lässt sich das Abo per UnregisterDeviceNotification. Das Interface, das es zu überwachen gilt, hört auf den Namen GUID_DEVINTERFACE_COMPORT (siehe WinIoCtl.h).
@Florian Von XYZ-Modem habe ich bisher noch nichts gehört. Wenn du eine gute Seite mit Infos dazu hast werd ich mir das mal anschaun. @Wolfram / Rene Ich hab gerade mal ausprobiert ob WriteFile einen Fehler meldet, aber da kommt leider garnichts bei raus. Die Funktion bleibt nur kommentarlos hängen. Ich hatte die 'FindFirstChangeNotification' u.ä Funktionen gefunden, mit denen man erkennen könnte, ob die Schnittstelle nicht mehr vorhanden ist/sich verändert hat. RegisterDeviceNotification sieht auch sehr interessant aus, da werd ich mal etwas zu suchen. Damit sollte es auch möglich sein, automatisch die Comport-Liste zu aktualisieren, wenn sich etwas verändert hat. Könnte man nicht mit DBT_DEVTYP_PORT einfacher einen bestimmten Port überwachen? Soweit ich das verstanden habe, informiert micht DBT_DEVTYP_DEVICEINTERFACE über Änderungen an jedem Port. Ich rätsel auch gerade noch, wie ich dann bei einer WM_DEVICECHANGE Message herausfinde, welcher Port genau gemeint ist.
>Ich hab gerade mal ausprobiert ob WriteFile einen Fehler meldet, aber >da kommt leider garnichts bei raus. Die Funktion bleibt nur >kommentarlos hängen Auch wenn du einen Timeout gesetzt hast?
Writefile geht auch ohne Timeouts, hatte einen Denkfehler. Da ich Overlapped IO benutz kommt immer ein Fehlercode, da hatte ich nicht dran gedacht mal auf den Fehlertyp zu checken. Writefile liefert korrekt ERROR_ACCESS_DENIED zurück. Da werd ich mal etwas basteln.
> Ich rätsel auch gerade noch, wie ich dann bei einer WM_DEVICECHANGE > Message herausfinde, welcher Port genau gemeint ist. In dbcc_name der DEV_BROADCAST_DEVICEINTERFACE Struktur steht der Name.
Hi Tobi, Hier steht ein bischen was drüber: http://en.wikipedia.org/wiki/XMODEM oder mit genauen Ablauf (sogar in deutsch g): http://www.embedded-os.de/index.html?proto-xmdm.htm ich kämpf momentan damit Anständige c-files für XModem für eine Embedded-Anwendung auf einem MSP430F449 zu bekommen. Gar nicht so einfach. (Falls jemand zufällig da was hat oder drüber weiß bin ich auch offen für Tipps) Und zum testen währe so ein Terminal mit Unterstützung dieser Protokolle eine feine Sache. PS:Falls du noch Infos brauchst kann ich dir evtl. noch weiterhelfen. Gruß Florian
Hi Tobi, wenn´s gerade um Anregungen geht:eine Flußkontrolle via RTS/CTS wäre eine sehr geniale Sache - es ist schon sehr hilfreich, wenn angeschlossene Hardware das Senden vom PC aussetzen kann, wenn sie gerade viel zu tun hat. Der PC ist ja eigenlich schnell genug durch das FIFO, auf dessen Sete sollte es eher selten Probleme geben... Ich glaube, das wurde weiter oben schon mal angefragt. Einen schönen Tag noch! TravelRec.
Also zumindest zuschaltbare CTS Flusskontrolle wäre sehr wichtig, ich benutze USB/Seriell mit 500KBit und wenn der interne Empfangspuffer des Mikrocontrollers voll ist setze ich CTS. Daran scheitert es im Moment noch mit HTerm, das zu Debuggen. Ist eigentlich nur eine Änderung in der DCB(fOutxCtsFlow). Als Erweiterung könnte man darüber Nachdenken die Sendezeiten zwischen den einzelnen Bytes anzugeben, da man dann sehr schnell sieht wie schnell der Mikrocontroller Blöcke verarbeitet und wie gross sein Inputbuffer ist.
@Florian Danke, ich werd mir das mal durchlesen. @Wolfram & TravelRec RTS/CTS kommt auf jeden Fall rein. Was meint ihr, sollte der User die Möglichkeit haben RTS per Hand zu beeinflussen, wenn Flusskontrolle aktiviert ist oder sollte RTS fest aktiviert sein? Die Zeit zwischen bytes zu setzen geht glaub ich nicht ganz so einfach, aber muss ich mal überlegen ob das machbar ist. Als nächstes kommt an grösseren Änderungen erstmal Flow-Control und die automatische Erkennung rein, ob der Port abhanden gekommen ist.
das klingt schon nach einer logic-analyzer-funktion mit triggerbedingung für die RTS-aktivierung ;)
>RTS/CTS kommt auf jeden Fall rein. Anwählbar >Was meint ihr, sollte der User die Möglichkeit haben RTS per Hand zu >beeinflussen, wenn Flusskontrolle aktiviert ist oder sollte RTS fest >aktiviert sein? Von Hand aktivierbar, allerdings würde ich RTS nicht unbedingt fest in die Flusskontrolle einbinden. Ok man kann prüfen ob ein Gerät vorhanden ist, allerdings habe ich dies auf Mikrocontrollerseite bisher noch nie gemacht. Auf Mikrocontrollerseite damit zu rechnen das der PC sagt "nein ich will jetzt keine Daten" damit würde ich nicht rechnen. Nur wenn man die Kommunikation zwischen 2 Mikrocontrollern simulieren will. Insoweit ist es wahrscheinlich besser die RTS/CTS Flusskontrolle jeweils einzeln zu behandeln/zuschaltbar zu machen. Vom DCB steht da ja auch nichts entgegen. >Die Zeit zwischen bytes zu setzen geht glaub ich nicht ganz so >einfach,aber muss ich mal überlegen ob das machbar ist. Zwischen den einzelnen Bytes ist es eigentlich nicht so interessant, nur zwischen den Blöcken. Vielleicht gibt es eine Möglichkeit beim Wechsel der Signalleitungen nachzuschauen wieviel des seriellen Puffers schon übertragen wurde. >Als nächstes kommt an grösseren Änderungen erstmal Flow-Control und >die automatische Erkennung rein, ob der Port abhanden gekommen ist Ich freu mich schon auf die nächste Version...
>>Ich freu mich schon auf die nächste Version...
Ich auch!!! ;-)
Hi Tobi, ein super Tool, DANKE! Frage: Warum erfolgt die Trennung bei der DEC-Eingabe nicht bei 8 bit?
Das ist absichtlich, denn es besteht die Möglichkeit auch 16bit Werte einzugeben. Ob eine Zahl als 8 oder 16bit interpretiert wird erkennt man an dem dunkleren Rotton. Die beiden Bytes werden einfach hintereinander gesendet. @all Wenn jemand Probleme wegen einer fehlenden MSVCRTxyz.DLL hatte, bitte noch einmal das Programm neu herunterladen. Der Fehler sollte behoben sein.
Hi Tobias, ich hab mir dein Prog gerade runtergeladen und mal angeschaut, macht wirklich einen guten Eindruck. Ich hätte auch gleich mal ne Frage dazu: Gibt es eine Möglichkeit, zwischen einzelnen Zeichen bzw. Zeilen (die vielleicht über einen einstellbaren "Separator" definiert werden) eine Wartezeit einzufügen? Ralf
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.