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
Doch, du kannst dir Makros definieren und die wiederrum können Hex-Werte enthalten. (guckst du in der Hilfe...)
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
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 :)
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
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.
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!
"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!
".. 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
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
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 ;-)
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
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.
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
@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)
@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
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 :)
Die CTb ist wirklich zu empfehlen. Wer sich ein wenig mit wxWidgets befasst, hat all seine Probleme im Bereich Applikationsprogrammierung gelöst.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.