Hallo geschätztes Forum, ein DCF77-Modul (ELV 40-09 16 10, 9,95 €) liefert die Zustände "Signal nicht vorhanden" bzw. "Signal vorhanden" an den Mikrocontroller (µC). Dieser sendet den Code für "0" = CHR(048) bzw. "1" = CHR(049) an die serielle Schnittstelle COM1 eines PC. COM1-Einstellungen: 38400,8,Keine,1,Keine Programm für den µC: \DCF77\DCF77 ATMEGA8\DCF77_Interrupt.hex Zur Pegel- und Logikanpassung dient ein IC MAX232. Das Programm für den µC ist in Assembler geschrieben. Es läuft in Studio 4 Das Programm für den PC wurde in Visual Basic 6.0 Prof. geschrieben. Beide Source Codes sind beigefügt, ebenso die Schaltpläne. Das Programm für den PC muss evtl. installiert werden, weil sonst die serielle Schnittstelle nicht erkannt wird: \DCF77\DCF77 VB6\Paket\setup.exe. Vor der Installation kann aber versucht werden, ob es mittels Doppelklick auf die EXE-Datei funktioniert: \DCF77\DCF77 VB6\DCF77.exe Damit es überhaupt geht, muss unbedingt sichergestellt sein, dass kein anderes Programm auf COM1 zugreift! Das tun z.B. Programme für PDAs gerne. Bilder, Schaltpläne und das Programmlisting für den µC befinden sich in der Datei \DCF77\DCF77 PDF\DCF77.pdf. Auf Seite 6 dieser Datei sind die Funktionen genau beschrieben. Solange ein Signal empfangen wird, sendet der µC eine "1". Sobald das PC-Programm diese "1" sieht, speichert es die Zeit0. Sobald eine "0" erkannt wird, wird die Zeit1 gespeichert. Die Zeitdifferenz Zeit1 minus Zeit0 ist ein Maß für die Impulsdauer. Theoretisch beträgt die Impulsdauer entweder 100 ms oder 200 ms. Das PC-Programm wertet die Impulse aus. Das Bild \DCF77\DCF77 PDF\DCF77.pdf, Seite 2 erklärt eine solche Auswertung ganz gut, glaube ich. Seite 1 derselben Datei: Wenn das DCF77 Empfangsmodul und die Ferritantenne so angeordnet sind, wie im Bild dargestellt, dann muss man den ganzen Aufbau in eine Position bringen, in der das Signal auch tatsächlich in ausreichender Qualität empfangen wird, und das ist ziemlich unpraktisch. Um nicht das Modul wieder auszulöten, habe ich die Antenne mittels eines 1-polig abgeschirmten Kabels von 2 m Länge angeschlossen, Schirm an GND. Das funktioniert einwandfrei. Damit lassen sich dann auch Versuche zu Störeinflüssen machen: Bringt man eine sog. Energiesparlampe in die Nähe des Kabels, oder das Kabel in die Nähe eines Computer-Monitors, dann erkennt man leicht, wie die Störungen mit zunehmender Annäherung größer werden. Viel Spaß
:
Gesperrt durch Moderator
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Klaus, hab soeben die VBA-exe gestartet.... sogar mit Erfolg auf meinem XP-Rechner :-) Wie kann man - COM-Port - Baudrate - DTR und RTS ändern ? Wenn's keine Umstände macht, könntest Du den Formular-Rahmen auf veränderbar umschalten, ich komme mit der Maus nicht in den unteren Teil des Formulars, um die Buttons zu drücken. Wenn ich's richtig verstanden habe, sendet der µC eine Byte, wenn eine Pegeländerung am DCF-PIN festgestellt wird, also keinen kontinuierlichen Datenstrom, wo ununterbrochen der Pinzustand (HIGH/LOW) gesendet wird? Die Messung der Impulslänge (100/200ms) erfolgt dann durch den PC? Wie hoch sind die Messabweichungen, da der COM-Port ev. verzögert die einzelnen Bytes an das Windows-System weiter gibt? Gruß Bernhard
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Heidewitzka, wie die Zeit vergeht! Als ich deinen Post gesehen habe, war ich mir sicher es wäre noch 1998! Aber tatsächlich ist es schon 2013, Visual Basic 6 gibt es praktisch schon lange nicht mehr und Bunte Oberflächen baut kein Mensch mehr. :) SCNR
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Ist ja mal was ganz anderes. Üblicher Weise macht alles der MC selber und langweilt sich immer noch sehr. Und bei Störungen läßt er die Uhrzeit mit seinem eigenen Quarz einfach weiter laufen. Und wenn man es schön machen will, korrigiert er die Gangabweichung seines Quarzes mit dem DCF77-Signal. Stellt Dein VB-Programm auch die PC-Uhr mit?
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Bernhard, >hab soeben die VBA-exe gestartet.... sogar mit Erfolg auf meinem XP-Rechner :-) Dass sich die Datei starten lässt bedeutet noch nicht, dass sie auch das COM1 Deines Rechners erkennt. In den allermeisten Fällen muss leider die Setup.exe ausgeführt werden. >Wie kann man > >- COM-Port >- Baudrate >- DTR und RTS > >ändern ? 1. COM-Port: Der oder die Hardware-COMs können, soweit ich weiß, nicht umbenannt werden. Falls ein Rechner über 2 oder mehr COMs verfügt, dann kann man sie vermutlich vertauschen, indem man die Stecker auf dem Motherboard umsteckt, so ähnlich, wie bei den Festplatten. Falls man einen COM2 besitzt und diesen benutzen möchte, dann muß man ins VB6-Programm statt <MSComm1.CommPort = 1> <MSComm1.CommPort = 2> eingeben. 2. Baudrate: Diese muß dem Rechner mitgeteilt werden, in WINXP (deutsch) wie folgt: Start Einstellungen Systemsteuerung System Hardware Geräte-Manager Anschlüsse (COM und LPT) Anschlusseinstellungen Bit pro Sekunde 38400 Datenbits 8 Parität Keine Stoppbits 1 Flusssteuerung Keine 3. DTR und RTS Diese sind nicht änderbar. Falls sie überhaupt verdrahtet sind, was in diesem Projekt nicht der Fall ist, dann können sie von der Software oder auch von der Hardware auf 0 oder 1 gesetzt bzw. abgefragt werden. Geräte (z.B. Rechner und Modem) teilen sich mittels dieser Zustände mit, ob sie sende- bzw. empfangsbereit sind oder nicht. >Wenn's keine Umstände macht, könntest Du den Formular-Rahmen auf veränderbar umschalten, ich komme mit der Maus nicht in den unteren Teil des Formulars, um die Buttons zu drücken. Ich bezweifele, dass das hilfreich wäre. Man müsste dann in der Lage sein, die Form über den oberen Bildschirmrand hinaus zu schieben, und das geht nur sehr begrenzt. Die hier angehängte Datei DCF77_ZIP_2.rar enthält deshalb eine in der Vertikalen veringerte Form. Außerdem habe ich der Form noch 2 Scroll-Bars hinzugefügt, mit denen man sie sowohl horizontal wie vertikal um je plus und minus 3000 Pixel verschieben kann. Trotzdem beträgt die minimale Bildschirmauflösung 1024 x 768 Pixel. Wunschgemäß habe ich aber auch einen veränderbaren Rahmen hinzugefügt. Die Werte für Form.Left und Form.Top werden in je einem Textfenster angezeigt. Damit das beim Verschieben mittels des Rahmens geschieht, muß man den Mauscursor über die Form bewegen (nach der Verschiebung). Als kleinste Bildschirmauflösung kann ich 800 x 600 Pixel einstellen. Wenn ich das tue, dann werden von der Form rechts und unten Teile abgeschnitten. Diese Teile bleiben auch dann verschwunden, wenn dann wieder eine größere Auflösung eingestellt wird. Leider kann ich nicht feststellen, ob sich das auch dann so verhält, wenn ein Bildschirm benutzt wird, der genuin eine so kleine Auflösung hat. Da mich dieses Verhalten überrascht hat, wäre ich an einer Info darüber dankbar. >Wenn ich's richtig verstanden habe, sendet der µC eine Byte, wenn eine Pegeländerung am DCF-PIN festgestellt wird, also keinen kontinuierlichen Datenstrom, wo ununterbrochen der Pinzustand (HIGH/LOW) gesendet wird? Der µC sendet ASCII(48)="0" immer wieder mit 38400 Baud und je einer Pause von 10 ms, wenn vom DCF77-Modul kein Signal kommt. Kommt ein Signal, egal ob es sich um ein 100 ms oder ein 200 ms Signal handelt, dann wird ein ASCII(49)="1" immer wieder mit 38400 Baud und 10 ms Pausen gesendet. >Die Messung der Impulslänge (100/200ms) erfolgt dann durch den PC? Ja >Wie hoch sind die Messabweichungen, da der COM-Port ev. verzögert die einzelnen Bytes an das Windows-System weiter gibt? Ca. plus/minus 20%, d.h. 80 bis 120 ms bei einem 100 ms Signal und 160 bis 240 ms bei einem 200 ms Signal. Voraussetzung: Starkes und nicht gestörtes Signal. Wenn ich die DCF77.exe oder auch die DCF77.vbp (im Programmiermodus) laufen lasse, dann tendieren die Abweichungen stärker nach Plus, bei der mittels Setup.exe erstellten DCF77 tendieren die Abweichungen ins Minus. Keina Ahnung, warum. Hallo Marius, >Heidewitzka, wie die Zeit vergeht! Als ich deinen Post gesehen habe, war ich mir sicher es wäre noch 1998! Aber tatsächlich ist es schon 2013, Visual Basic 6 gibt es praktisch schon lange nicht mehr und Bunte Oberflächen baut kein Mensch mehr. :) Um Deinen Frust noch zu vergrößern: Betriessystem ist Windows XP SP3 Prof. 32 Bit. Versuche mit Windows 8 sind aber geplant. Ob VB6 darunter noch läuft, wird sich zeigen. Bezgl. "Bunte Oberflächen": Soll ich lieber alles in verschiedenen Grau-Schattierungen anlegen? Übrigens scheint VB6 noch eine rege Fangemeinde zu haben, wie die Foren zeigen. M.E. hat das sehr gute Gründe, s. z.B. die Bücher von Markt und Technik "Kompendium", Autor: Peter Monadjemi. Ausser für VB2 hat er jeweils ein Buch zur neuen Version geschrieben, auch zur ersten Version von VB DOT NET. Das war aber auch sein letztes. Warum wohl? Hallo Peter, >Ist ja mal was ganz anderes. Üblicher Weise macht alles der MC selber und langweilt sich immer noch sehr. Und bei Störungen läßt er die Uhrzeit mit seinem eigenen Quarz einfach weiter laufen. Und wenn man es schön machen will, korrigiert er die Gangabweichung seines Quarzes mit dem DCF77-Signal. Stellt Dein VB-Programm auch die PC-Uhr mit? Jahre bevor ich angefangen habe, mich mit Mikroprozessoren zu beschäftigen, habe ich wissen wollen, wie die DCF77 Wecker funktionieren. Um mir selbst zu beweisen, dass ich das Protokoll begriffen hatte, habe ich eine VB6 Version zur Entschlüsselung geschrieben. Diese wurde noch rein durch Hardware am COM1 betrieben. Irgendwann, auch vor mehreren Jahren, habe ich mir ein Einsteigersystem für µC zugelegt. Im Lehrbuch dazu wird auch auf die RS232 eingegangen. Auch hier wollte ich wissen, ob ich es verstanden habe. Dazu habe ich ein Programm in VB6 und eins in ASM geschrieben. Beide Programme können die ASCII Bytes 0 bis 255 sowohl senden wie auch empfangen. Bei dem hier vorgestellten kleinen Projekt handelt es sich um jeweils zweckdienlich angepasste Versionen der Programme in VB6 und ASM. Da ich, zumindest auf dem Gebiet der µC, ein absoluter Anfänger bin, müssen Dir meine unreifen Machwerke als genau das erscheinen, was sie sind, nämlich unreife Machwerke. Es geht mir als Anfänger noch immer und ganz sicher auch noch längere Zeit um das Verstehen der Grundlagen und nicht um Herstellung marktreifer Erzeugnisse. Ich könnte mir vorstellen, dass es noch mehr Menschen wie mich gibt, die mittels sehr simpler Beispiele erstmal lernen wollen. Das VB6 Programm stellt das Datum und die Uhrzeit des PC nicht ein. Die Idee finde ich aber gut und werde sie gleich umsetzen. VB6 liefert dazu sehr simple Befehle. Mit Dank für Eure Beiträge Beste Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Klaus, ich vermute, Du verwendest ein VBA-Steuerelement, um die COM-Ports anzusteuern, z.B. "mscomm" ? Dieses Steuerelement lässt sich sehr schön auf den gewünschten COM-Port umschalten mit z.B. "mscomm.comport=12". Man könnte sogar beim ersten Programmstart die noch verfügbaren COM-Ports abfragen und den Benutzer die noch verfügbaren anbieten. Hat er sich für einen entschieden, wird die Einstellung gespeichert und beim nächsten Mal mit verwendet. Leider kann ich Dein Programm nicht auf einen anderen COM-Port umkonfigurieren, denn meine USB-COM-ports tummeln sich sonst wo rum :-( Übrigens; Die Baudrate lässt sich auch mit einer Eigenschaft von "mscomm" ändern. Versuch mal bitte DTR und RTS aktivierbar zu machen, ich nutze gern diese Leitungen, um den µC zu bestromen, erspart ein separates Netzteil. Mit Deiner neuen VBA-Version komme ich mit viel Geduld ganz knapp auf die unteren Buttons, mein Display (1440x900) schneidet unten zuviel ab :-( Mir fällt gerade ein, man könnte sogar auf den µC verzichten, wenn man die Leitung CTS abfragt. D.h. DCF Empfänger direkt (ev. mit einer Interface-Schaltung) an die CTS-Leitung und VBA wertet die Pegeländerungen aus, was hältst Du von dieser einfachen Variante? Die 20% Messabweichungen könntest Du auf ein Minimum reduzieren, indem der µC die Zeiten misst und das Resultat der Messung per RS232 überträgt (z.B. LOW_ZEIT=100ms. HIGH_ZEIT=900ms, die Baudrate wäre dann nahezu egal. Kleine Anmerkung, soll kein meckern sein, den die Projekt-Idee ist gut! Versuch mal bitte nicht jedes einzelne Verzeichnis zu komprimieren... hat jetzt 'ne Weile gedauert, bis ich alles entpackt habe. Gruß Bernhard
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Bernhard, gönnst Du einem armen, alten Rentner seinen wohlverdienten Ruhestand nicht? OK, auf zur Arbeit. Vielleicht hält es ja wenigsten das Gehirn am laufen. >ich vermute, Du verwendest ein VBA-Steuerelement, um die COM-Ports >anzusteuern, z.B. "mscomm" ? Ja >Dieses Steuerelement lässt sich sehr schön auf den gewünschten COM-Port >umschalten mit z.B. "mscomm.comport=12". Ist geschehen. Die beigefügte DCF77.exe enthält jetzt ein Eingabefenster, in welches die Nummer des CommPorts eingetragen werden kann. >Man könnte sogar beim ersten Programmstart die noch verfügbaren >COM-Ports abfragen und den Benutzer die noch verfügbaren anbieten. Hat >er sich für einen entschieden, wird die Einstellung gespeichert und beim >nächsten Mal mit verwendet. Das könnte gehen. Evtl. versucht man mittels des Programms auf die CommPorts #1 bis #15 zuzugreifen und anhand der jeweiligen Fehlermeldung entsprechend zu reagieren. Für bessere Vorschläge wäre ich dankbar. >Leider kann ich Dein Programm nicht auf einen anderen COM-Port >umkonfigurieren, denn meine USB-COM-ports tummeln sich sonst wo rum :-( Geht jetzt, s. oben. Ich habe heute so ein Kabel USB --> COMx benutzt. Im Geräte-Manager meldet es sich als COM4. Es ist nichts weiter nötig, als die CommPort Nr., in diesem Fall also die 4, einzugeben und schon funktionierts. >Übrigens; Die Baudrate lässt sich auch mit einer Eigenschaft von >"mscomm" ändern. Das tut das Programm auch. Hier die entsprechenden Programmzeilen: If MSComm1.PortOpen = True Then MSComm1.PortOpen = False MSComm1.CommPort = txtComPort MSComm1.Settings = "38400,N,8,1" MSComm1.InputLen = 1 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True Das Textfenster zur Eingabe der CommPort No. hat den Namen txtCommPort. >Versuch mal bitte DTR und RTS aktivierbar zu machen, ich nutze gern >diese Leitungen, um den µC zu bestromen, erspart ein separates Netzteil. Hiermit beschäftige ich mich evtl. morgen. Ich bitte um Geduld. >Mit Deiner neuen VBA-Version komme ich mit viel Geduld ganz knapp auf >die unteren Buttons, mein Display (1440x900) schneidet unten zuviel ab >:-( Mein Monitor läßt sich auf folgende Auflösungen einstellen: 800 x 600 1024 x 768 1280 x 960 1280 x 1024 1600 x 900 1600 x 1200 1680 x 1050 1920 x 1080 1920 x 1200 Deine Bildschirmauflösung kann ich also leider nicht direkt testen. Außer bei 800 x 600 funktionieren alle bei mir, s. die beiden Bilder. Die Form hat die Eigenschaften Width = 15390 und Height = 11370. Hiermit ergeben sich folgende Verhältnisse zwischen Form und Monitor: 1024x768: Width : 15390/1024 = 15,02929688 Heihgt: 11370/ 768 = 14,8046875 1920x1200: Width : 15390/1920 = 8,015625 Height: 11370/1200 = 9,475 Ich denke, dass man diese Verhältnisse beeinflussen müßte, damit Dein Monitor mit 1440x900 die Form vollständig anzeigt. Ob und wie das geht? Keine Ahnung. Hilfe würde sehr dankbar begrüßt. >Mir fällt gerade ein, man könnte sogar auf den µC verzichten, wenn man >die Leitung CTS abfragt. D.h. DCF Empfänger direkt (ev. mit einer >Interface-Schaltung) an die CTS-Leitung und VBA wertet die >Pegeländerungen aus, was hältst Du von dieser einfachen Variante? Genau das war die ursprüngliche Ausführung. Lies bitte mal meinen Text zu Peter Danneggers Kommentar. Evtl. krame ich das noch mal raus und stelle es hier ins Netz. Es passt zwar eigentlich nicht in die Codesammlung, würde aber den Gesamtzusammenhang ergänzen. >Die 20% Messabweichungen könntest Du auf ein Minimum reduzieren, indem >der µC die Zeiten misst und das Resultat der Messung per RS232 überträgt >(z.B. LOW_ZEIT=100ms. HIGH_ZEIT=900ms, die Baudrate wäre dann nahezu >egal. Das ist natürlich technisch korrekt, würde aber dem "geschichtlichen" Zusammenhang nicht entsprechen. Wie gesagt, der Ursprung war eine reine Hardwarelösung, nur mit PC und ohne µC. >Kleine Anmerkung, soll kein meckern sein, den die Projekt-Idee ist gut! >Versuch mal bitte nicht jedes einzelne Verzeichnis zu komprimieren... >hat jetzt 'ne Weile gedauert, bis ich alles entpackt habe. Das kann ich nicht nachvollziehen. Habe es eben noch mal probiert und benötige, einschließlich der Anlage der Pfade, nicht mal 30 Sekunden mittels des Rechtsklick-Dropdown Befehls "Hier entpacken". Den fügt WINRAR ein, weshalb ich dieses gern benutze. Die beigefügte Datei DCF77.exe ist aber nicht gepackt und entspricht hoffentlich Deinem Wunsch. 1. Anmerkung: Die wesentlichen VB6-Dateien lassen sich mittels Editor öffnen. Der Inhalt erscheint in leicht verständlichem Klartext. Da Du selbst in VBA5 programmierst, wirst Du alles sofort verstehen. Die Programmzeilen (weiter oben in diesem Text) befinden sich in der Datei frmDCF77.frm, ziemlich weit unten unter dem Label "Beginn". Ich habe zunächst sogar die CommPort Nr. "4" auf diese Weise eingegeben und damit die Funktion des USB-RS232 Kabels gestestet. Man kann also auf diese Weise sogar kleine Programmänderungen machen, ohne VB6 besitzen zu müssen. 2. Anmerkung: In die Textfenster, welche Form.Left und Form.Top anzeigen, kannst Du die gewünschten Werte auch direkt eingeben. Die Form folgt sofort jeder Änderung. Gib doch mal z.B. -5000 in das Textfenster für Form.Top ein. Evtl. ist das hilfreich. Falls Du dann nicht mehr ans Button "Exit" rankommst, kann das Programm mittels Task Manager beendet werden. Gibst Du in beide Fenster je eine 0 (Null) ein, dann schmiegt sich die Form an den oberen und den linken Bildschirmrand. Beste Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Bernhard, mir ist noch eingefallen, dass die soeben gelieferte Datei DCF77.exe wahrscheinlich den gewählten (sowie jeden anderen) ComPort nicht erkennt. Wenn das so ist, dann muß ich noch eine Setup.exe erstellen. Sollte es bei Dir aber doch funktionieren, dann gib mir bitte Bescheid. Wenn Du den gewünschten ComPort nicht eingeben kannst, weil der untere Teil der Form abgeschnitten wird, dann muß ich mir auch noch was einfallen lassen. Auch hierzu wäre Deine Info nützlich. Ich hoffe im Moment noch, dass sich die Verschiebung der Form nach oben durch Eingabe einer negativen Zahl ins Feld neben "Top" positiv auswirkt. Wenn nicht, dann schicke mir doch bitte einen Screen Dump, damit ich mir ein besseres Bild machen kann. Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Bernhard, durch Weglassen der Überschrift sowie des Rahmens habe ich die Form in der Senkrechten nochmals kleiner gemacht. Ausserdem wurde die vermutlich notwendige Setup.exe erstellt: \DCF77\DCF77 VB6\Paket\setup.exe Die Textfelder für Left, Top und ComPort No akzeptieren übrigens jede Eingabe, d.h. sie sind gegen Fehleingaben nicht abgesichert. Das Schlimmste, was passieren kann, ist eine Fehlermeldung mit Beendigung des Programms. Ich hoffe, dass die Form jetzt vollständig auf Deinen Bildschirm passt. Unbefriedigend bleibt, dass wir nicht wissen, warum die letzte Form bei mir bei der Auflösung von 1024 x 768 vollständig passte, bei Deiner Auflösung von 1440 x 900 aber nicht. Evtl. hat es etwas damit zu tun, dass meine native Auflösung 1920 x 1200 beträgt und ich die 1024 x 768 "künstlich" über Eigenschaften \ Einstellungen quasi simuliere. Ist 1440 x 900 eigentlich die native Auflösung Deines Monitors? Viele Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Klaus, so schaut mein Hardcoppy auf meinem Laptop aus mit relativ kleinem Display. Vor vielen Jahren hatten meine meine Programme (Formulare) noch eine Größe von 640x480, die Monitore gaben nicht mehr her. Starte ich heute diese Programme, sieht's etwas winzig und witzig aus. Übrigens, die Setup.exe benötigt man theoretisch nur ein einziges Mal, um die benötigten Systemdateien zu installieren. Bei den Updates, könnte man nur die geänderten Dateien ersetzen, damit würde die Datenmenge der Updates stark reduziert. >gönnst Du einem armen, alten Rentner seinen wohlverdienten Ruhestand >nicht? Nein, da sind wir gnadenlos :-) Den berühmten Satz von Goethe kennst Du ja bestimmt: Die ich rief, die Geister, werd ich nun nicht los. Kannst Du Dich mal bitte, mit der CTS-Leitung beschäftigen. Leg einfach mal ein 10Hz Signal an, und untersuche wie Windows damit zurechtkommt? Gruß Bernhard
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Marius S. schrieb: > Heidewitzka, wie die Zeit vergeht! > Als ich deinen Post gesehen habe, war ich mir sicher es wäre noch 1998! > Aber tatsächlich ist es schon 2013, Visual Basic 6 gibt es praktisch > schon lange nicht mehr und Bunte Oberflächen baut kein Mensch mehr. :) > > SCNR Ja, Du hast recht. Man waren das schöne Zeiten, als man die einfachsten Problemstellungen in VB6 binnen 5 Minuten lösen konnte. Aber leider gibts das heute schon lange nicht mehr :(
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Klaus D. schrieb: > Ausser für VB2 hat er > jeweils ein Buch zur neuen Version geschrieben, auch zur ersten Version > von VB DOT NET. Das war aber auch sein letztes. Warum wohl? Kann ich mir vorstellen, ich wollte damals als VB.Net raus kam auch einfach mal umsteigen... Hab es dann nach kurzer Zeit seien lassen. Dieser ganze .Net kram ist mir nicht ganz geheuer. Für Informatiker aber sicherlich genau der richtige Weg :-) Mein Kommentar war auch nicht ernst gemeint. Ich code selbst ab und zu mal kleine Tools in VB6 und zwar... Martin Schwaikert schrieb: > Man waren das schöne Zeiten, als man die einfachsten > Problemstellungen in VB6 binnen 5 Minuten lösen konnte. ... genau deswegen :-) Auch komplexe Problemstellungen waren in VB6 kein Problem. Es gab ja sogar Tricks um Sachen wie Inline-Assembler oder Pointer zu nutzen :-) Hab ich damals alles genutzt und die Grenzen von VB6 ausgereizt... Microsoft hätte VB6 ruhig mal weiter entwickeln sollen.
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo geehrtes Forum, Hallo Bernhard, >Versuch mal bitte DTR und RTS aktivierbar zu machen, ich nutze gern >diese Leitungen, um den µC zu bestromen, erspart ein separates Netzteil. Habe ich gemacht, s. Bild. Syntax in VB6: 1. MSComm1.DTREnable = True 2. MSComm1.DTREnable = False 3. MSComm1.RTSEnable = True 4. MSComm1.RTSEnable = False Gemessene Spannungen, keine Last: COM1 (RS232 des Rechners): DTR = Pin 4, zu 1.: +11.508 VDC zu 2.: -11.341 VDC RTS = Pin 7, zu 3.: +11.513 VDC zu 4.: -11.334 VDC COM4 (USB - RS232 Converter): DTR = Pin 4, zu 1.: - 6.378 VDC zu 2.: - 6.378 VDC RTS = Pin 7, zu 3.: - 6.387 VDC zu 4.: - 6.387 VDC Mit einem "echten" Com Port könnte man also eine der Leitungen DTR oder/und RTS zur µC Versorgen, falls die genügend Strom liefern. Falls jemand weiß, wie man den USB - RS232 Converter zu einem vergleichbaren Verhalten bringen kann: Für Infos ganz großen Dank! Mit dem Converter USB - RS232 ginge es auch, z.B. mit einem DC-DC Converter der die negative in eine positive Spannung passender Spannung wandelt. Hier gehts aber viel einfacher: Der USB-Anschluss bietet doch schon selbst eine +5 VDC Spannung. Falls kein freier USB Sockel mehr existiert helfen ein Taschenmesser und ein Lötkolben beim Anzapfen der Leitungen. >so schaut mein Hardcoppy auf meinem Laptop aus mit relativ kleinem >Display. Das passt ja offensichtlich auf Deinen Monitor, zeigt aber immer noch kleine Fehler. Deshalb und um die Option Buttons für DTR und RTS eizufügen, kommt hier schon wieder eine neue Version. Falls auch diese fehlerbehaftet sein sollte, schick mir doch bitte wieder einen Screen Dump. Damit lassen sich solche Probleme ohne jede zusätzliche Erklärung leicht erkennen. >Kannst Du Dich mal bitte, mit der CTS-Leitung beschäftigen. >Leg einfach mal ein 10Hz Signal an, und untersuche wie Windows damit >zurechtkommt? Verstehe ich nicht. Windows selbst reagiert sicher nicht, zumindest nicht so, dass der Nutzer es erkennen könnte. Natürlich könnte man ein Programm schreiben, welches die CTS-Leitung in einer Schleife ausliest und den gerade anstehenden Zustand anzeigt. Nur wozu? Ich weiß doch im Voraus was dabei herauskommt. Hierzu benötige ich also mehr Info zu Deinen Gedankengängen. >Bei den Updates, könnte man nur die geänderten Dateien ersetzen, damit >würde die Datenmenge der Updates stark reduziert. Das stimmt natürlich. Ich finde aber die Handhabung so viel einfacher: einfach die alten Dateien komplett in den Papierkorb und die neuen kopiert. Das erspart unnötige Suche danach, welche Dateien nun wirklich ausgetauscht werden müssen. Ausserdem erspart es mir Erklärungsarbeit. Hallo Matin, >Ja, Du hast recht. Man waren das schöne Zeiten, als man die einfachsten >Problemstellungen in VB6 binnen 5 Minuten lösen konnte. Aber leider >gibts das heute schon lange nicht mehr :( Volle Zustimmung, danke! Hallo Marius, >Kann ich mir vorstellen, ich wollte damals als VB.Net raus kam auch >einfach mal umsteigen... Hab es dann nach kurzer Zeit seien lassen. >Dieser ganze .Net kram ist mir nicht ganz geheuer. Für Informatiker aber >sicherlich genau der richtige Weg :-) Vermutlich ging es Dir ähnlich wie mir. Meine Frau und ich verbringen unseren Urlaub seit sehr vielen Jahren in Thailand. Ab VB1 bis zu ersten Version von VB.Net habe ich mir immer das jeweilige "Kompendium" von VBx gekauft und mir dort die für mich interessanten Neuigkeiten angelesen und mittels Notebook ausprobiert, soweit zum Probieren keine Hardware erforderlich war (habe beruflich u.a. Programme für Material-Prüfmaschinen geschrieben). Mit VB.NET ging das nicht mehr. Beim Versuch der Installation wurden viele zusätzliche Dateien verlangt, die ich natürlich nicht hatte und auch nicht ganz leicht kriegen konnte. WIFI gab es damals noch nicht. Meinen Frust kannst Du Dir sicher vorstellen. Die Lektüre des Buches ergab auch, dass die Neuerungen sich fast nur aufs WEB bezogen sowie das bis dahin simple Techniken z.T. extrem erschwert wurden. Vermutlich hat das ja alles seinen Sinn, nur der erschliest sich mir (Ing. grad. Maschinenbau) nicht. Das liegt aber sicher auch an meiner Aversion, mich überhaupt damit zu beschäftigen. Danke für die Mühe, die Ihr Euch mit mir macht. Beste Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Klaus, Deine Messwerte sind interessant, vielleicht könntest Du uns noch den Typ der USB-RS232 verraten oder ein Bild davon veröffentlichen, denn die Kennwerte werden herstellerspezifisch sein. Versuch mal bitte noch den Innenwiderstand der der DTR + RTS Leitung zu bestimmen, der müsste theoretisch im kOhm Bereich liegen. Ich vermute, dass diese Ausgänge auch Kurzschlussfest sind. > Falls jemand weiß, wie man den USB - RS232 Converter zu einem > vergleichbaren Verhalten bringen kann: Für Infos ganz großen Dank! Einfache interne Spannungsverdopplerschaltungen in der USB-RS232 werden die positive und negative Spannung generieren. Die Hardware der USB-RS232 kann man nicht so ohne weiteres ändern. Ein exterenes Interface könnte die Spannungen bei Bedarf an die "genormten Pegel" anpassen. >>Kannst Du Dich mal bitte, mit der CTS-Leitung beschäftigen. >>Leg einfach mal ein 10Hz Signal an, und untersuche wie Windows damit zurechtkommt? >Verstehe ich nicht. Windows selbst reagiert sicher nicht... ok, ich hätte die Problemformulierung etwas erweitern sollen, sorry. Mir persönlich würde es vorerst gefallen, wenn ein DCF-Modul direkt an die CTS-Leitung angeschlossen wird, also die Variante ohne weiteren µC. Der COM-Port registriert die einzelnen Pegeländerungen, misst die Zeiten und errechnet die DCF-Zeit durch VBA. Ich vermute, das Steuerelement "mscomm" reagiert auf eine CTS-Zustandsänderung (wie ein Interrupt, bei Empfang eines Datenbytes), müsste theoretisch nicht ständig abgefragt werden. Im Notfall müsste ein Timer den CTS-Eingang im 10ms-Raster abfragen. Ich bin mir nur nicht ganz sicher, ob Windows und VBA das in diesem Zeitintervall zuferlässig schafft. Gruß Bernhard
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
@alle Das Problem mit der CTS - Leitung hat mir keine Ruhe gelassen. Ein Frequenzgenerator ist direkt mit CTS verbunden (Ersatz für einen DCF Empfänger), das Steuerelement "MScomm" in VBA5 erkennt einen Pegelwechsel bis ca. 250 Hz auf meinem Windows XP Rechner. So ganz nebenbei ist ein kleiner Frequenzzähler entstanden, war eignetlich nicht beabsichtigt. Bei jeder Pegeländerung an CTS wird ein "ON-COM" Ereignis ausgelöst, mit einer schwankenden und undefinierbaren Verzögerung von 0...30ms. Um die Impulslänge eines DCF77 Signals zu messen (100 bzw. 200ms) müsste vielleicht noch der Zustand der Leitung (High/Low) ermittelt werden, denn bis jetzt wird nur jeder (fast jeder) Flankenwechsel registriert. Vielleicht solte man noch Ri (Ringleitung) mit beschalten und abfragen? Bernhard
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Nachtrag: Der Zustand der CTS-Leitung lässt sich mit "MSComm1.CommEvent" abfragen. Das Ergebnis verrät uns, ob der die CTS-Leitung gerade High oder Low führt. In "Private Sub MSComm1_OnComm()" wird eine Zustandsänderung registriert, vergleichbar mit einem Interrupt. In dieser Routine kann dann noch der Pegel der CTS-Leitung ermittelt werden. Wenn dann noch jeder Flankenwechsel mit einem Zeitstempel aus der PC-Systemuhr versehen wird,könnte eindeutig (mit Windows bzw. VBA Genauigeit) die Impulslänge des High-Impulses bzw. Low-Impulses ermittelt werden. In letzter Instanz muss durch die physischen Impulslängen ermittelt werden, ob es ein DCF-LOW, DCF-HIGH oder ein Minutenwechsel ist. Bernhard
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Bernhard, >Deine Messwerte sind interessant, vielleicht könntest Du uns noch den >Typ der USB-RS232 verraten oder ein Bild davon veröffentlichen, denn die >Kennwerte werden herstellerspezifisch sein. Das Ding heißt "DELOCK USB 1.1 serial adapter". Ich habe es Ende 2012 für ca. 15 EURO bei ELV gekauft. ELV bietet heute einen Nachfolger an. Deine Frage danach hat dazu geführt, dass ich einen neuen Treiber dafür gefunden habe (www.delock.com). Nach dessen Installation verhalten sich DTR und RTS korrekt. (Hätte ich auch selbst drauf kommen können und müssen, ohne Deinen verbalen A...Tritt, vielen Dank dafür. Evtl. schäme ich mich mal, falls ich Zeit dafür finde). Hier die Werte nochmal in der Zusammenstellung: 1. MSComm1.DTREnable = True 2. MSComm1.DTREnable = False 3. MSComm1.RTSEnable = True 4. MSComm1.RTSEnable = False COM1 (RS232 des Rechners): DTR = Pin 4, zu 1.: +11.508 VDC zu 2.: -11.341 VDC RTS = Pin 7, zu 3.: +11.513 VDC zu 4.: -11.334 VDC COM4 (USB - RS232 Converter): DTR = Pin 4, zu 1.: + 6.821 VDC zu 2.: - 6.371 VDC RTS = Pin 7, zu 3.: + 6.828 VDC zu 4.: - 6.371 VDC >Versuch mal bitte noch den Innenwiderstand der der DTR + RTS Leitung zu >bestimmen, der müsste theoretisch im kOhm Bereich liegen. Exemplarisch habe ich jeweils DTR = Pin 4 bei positiver Spannung untersucht. Die Widerstände Rl (Metallfilm, 1%) 20k, 10k, 4,7k und 2k wurden von Pin 4 nach Pin 5 (GND) gelegt, der Spannungsabfall Ul gemessen, der Strom I und daraus der Innenwiderstand Ri berechnet. Hier die Messwerte: Rl[kOhm] Ul[VDC] I[A] Delta U[VDC] Ri[kOhm] 20 11,066 0,0005533 0,442 0,799 COM1 10 10,787 0,001787 0,721 0,730 4,7 10,234 0,002177446 1,274 0,585 2 8,978 0,004489 2,530 0,564 20 6,143 0,00030715 0,678 2,207 COM4 10 5,969 0,0005969 0,852 1,427 4,7 5,816 0,001237446 1,005 0,812 2 5,649 0,0028245 1,172 0,415 >Ich vermute, dass diese Ausgänge auch Kurzschlussfest sind. Vermute ich auch, habe es aber nicht ausprobiert. >Mir persönlich würde es vorerst gefallen, wenn ein DCF-Modul direkt an >die CTS-Leitung angeschlossen wird, also die Variante ohne weiteren µC. Ist vorbereitet, geschieht voraussichtlich morgen. Zu Deinen Beiträgen vom 08.06.2013: Dein Programm läßt sich völlig problemlos mit VB6 einlesen und editieren. Falls es in VBA5 geschrieben wurde: Kannst Du meine Programme in VBA5 einlesen? Ich habe einen programmierbaren Funktionsgenerator aus dem Keller geholt und bin dabei, mir die recht umständliche Programmierung anzulesen und zu erproben. Ein Rechtecksignal, plus/minus 5 V, 10 Hz, funktioniert schon. Falls Du selbst Werte bei verschiedenen Frequenzen ermittelt hast, dann teile mir diese doch bitte mit, damit wir direkt vergleichbare Werte bekommen. Ich habe in Deinem Programm folgende Zeilen gelesen (als Beispiel): On Error Resume Next MSComm1.PortOpen = False Du hast also offenbar dasselbe Problem wie ich: Wenn der Zustand "False" bereits vorliegt, dann steigt das Programm mit einer Fehlermeldung aus. An eine Lösung Deiner Art hatte ich auch gedacht, habe mich dann aber für die folgende entschieden: If MSComm1.PortOpen = True Then MSComm1.PortOpen = False MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.InputLen = 1 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True Der Grund: Ich habe die Sorge, dass auch ein ganz anderer Fehler zu dem Resume Next führen kann und dass dann dieser andere Fehler nicht zur Behandlung in der dafür vorgesehenen Routine landet. Weitere Erfahrungen mit Deinem Programm folgen, sobald ich welche gesammelt habe. Bitte schicke mir sobald wie möglich die relevanten Frequenzen. Viele Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Bernhard, betrifft Deine Beiträge vom 08.06.2013: Evtl. werden einige der von Dir angesprochenen Fragen durch die nachfolgenden Messergebnisse beantwortet. Der von mir benutzte programmierbare Funktionsgenerator läßt, wenn ich ein Signal wünsche mit einem High/Low Verhältnis von 1:1 (zeitlich), nur mit einer maximalen Frequenz von 500 Hz betreiben. Die nächst niedrigere Frequenz ist dann 250 Hz. Die Anzahl der Impuse wurde mit 20000 vorgegeben. High = +5000.0 mV, Low = -5000.0 mV. Dein Programm habe ich ein Wenig erweitert. Eine verbale Erklärung erübrigt sich sicher. Hier die Messergebnisse: Nr. Anschluss Impulse Fmax[Hz] Fmin[Hz] 1. DCD Pin1 20000 250 249,5 COM1 (RS-232 des Rechners) DSR Pin6 20000 250 249,5 250 Hz CTS Pin8 20000 250 249,5 RI Pin9 10000 125 124,5 2. DCD Pin1 19992 500 499,5 COM1 (RS-232 des Rechners) DSR Pin6 19999 500 499,5 500 Hz CTS Pin8 19998 500 498,5 RI Pin9 10000 250 249 3. DCD Pin1 20000 250 250 COM4 (USB <--> RS-232) DSR Pin6 20000 250 249,5 250 Hz CTS Pin8 20000 250 249,5 RI Pin9 20000 250 250 4. DCD Pin1 19891 498 495,5 COM4 (USB <--> RS-232) DSR Pin6 19908 500 495,5 500 Hz CTS Pin8 19914 500 496,5 RI Pin9 19886 499,5 490 Das Signal RI (Ring Indicator) wird also vom COM1 korrekt nur bei High-Pegel erkannt, während die anderen Signale jeden Flankenwechsel erkennen. COM4, der USB Adapter, behandelt aber RI genau so wie die anderen Anschlüsse. Der neue Treiber ist also offensichtlich immer noch fehlerbehaftet. >Wenn dann noch jeder Flankenwechsel mit einem Zeitstempel aus der >PC-Systemuhr versehen wird,könnte eindeutig (mit Windows bzw. VBA >Genauigeit) die Impulslänge des High-Impulses bzw. Low-Impulses >ermittelt werden. > >In letzter Instanz muss durch die physischen Impulslängen ermittelt >werden, ob es ein DCF-LOW, DCF-HIGH oder ein Minutenwechsel ist. Hierzu habe ich vielleicht etwas anzubieten: Der Vorgänger des DCF-Entschlüsselungsprogramms hatte direkte Anschlüsse an COM1 und funktionierte ohne µC. Ich suche mal nach den Unterlagen, die Hardware habe ich schon gefunden. Dazu eine Frage: Muß ich unbedingt die Fenstergröße auf Deinen Bildschirm anpassen? Evtl. kennst Du ja jemanden mit einem höher auflösenden Monitor (evtl. der 100 Jahre alte Herr, von dem Du mal berichtet hast). Schöne Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Klaus, >Der Vorgänger des >DCF-Entschlüsselungsprogramms hatte direkte Anschlüsse an COM1 und >funktionierte ohne µC. Ich suche mal nach den Unterlagen, die Hardware >habe ich schon gefunden. Na da bin ich ja mal gespannt, ich stelle gleich mal meine neue Version vor, DCF-Modul direkt an RS232 Port. >Dazu eine Frage: Muß ich unbedingt die Fenstergröße auf Deinen >Bildschirm anpassen? Nein, das musst Du nicht, war nur so ein Tipp, denn nicht alle besitzen Displays mit großer Auflösung. Gruß Bernhard
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
@alle dieses kleine VBA-Programm (VBA-Version 5) decodiert das DCF77 Signal. Ein DCF-Empfänger wird direkt mit dem RS232-Port des PC verbunden. Features: - COM 1...16 frei wählbar - automatische Suche nach freien COM-Port - DCF-Signal speist den CTS Eingang / Leitung - Automatikstart möglich - Programm-Einstellungen werden automatisch gespeichert - PC-Uhr kann nach DCF-Zeit gestellt werden - DTR und RTS-Ausgang kann für ev. Stromversorgung des DCF-Empfängers genutzt werden - das DCF Signal kann durch die Software invertiert werden - DCF-Signale können bei Bedarf protokolliert werden - das komplette Minutenprotokoll kann separat abgespeichert und wieder aufgerufen und auch per Hand geändert werden, für Berechnungs-Simulationen - Anzeige der momentan empfangenen Informationsbits (grüner Balken) - erkannte Fehler im DCF-Protokoll werden markiert (roter Balken) Hardware: Es kann sein, dass ein separates Hardware-Interface nötig ist, damit das DCF-Empfängermodul den CTS-Eingang der RS232-Schnittstelle treiben kann. Manche DCF-Module besitzen einen sehr hochohmigen Ausgang (meherere 100kOhm). Software: Das Programm ist relativ einfach gehalten. Es werden die Impulslängen mittels interner PC-Uhr mit einer Genauigkeit von ca. 30ms (Windows bzw. VBA systembedingt) gemessen und grafisch dargestellt. Bei einem erkannten Minutenanfang erfolgt die Zeitberechnung. Mit größeren Empfangsstörungen (z.B. fehlendes Wetterbit) kommt die Software nicht zurecht. Für Tipps und Anregungen bin ich sehr dankbar. Bernhard PS: Klaus, ich danke Dir für diese schöne Idee :-)
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
... und so sieht die Programmoberfläche aus...
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo Bernhard, aufgrund der hervorragenden Qualität Deines Programms ist es nicht sinnvoll, meine viele Jahre alte Version mit direkter Anbindung des DCF-Moduls an ein COMx vorzustellen. Weil Dein Interface bei mir weder am COM1 (RS-232 des PC) noch am COM4 (USB - RS-232 Converter) funktionierte, habe ich mal einige mögliche Versionen geprüft. Der Grund der Nichtfunktion Deiner Hardware bei mir dürfte beim verwendeten DCF77-Modul liegen. DCF77_am_ComPort_V1.pdf: Es wird fremdgespeist und funktioniert alleine nur am COM4. Falls man das IC MAX232 benutzt, funktioniert es am COM1 und am COM4. DCF77_am_ComPort_V2.pdf: Es wird vom COM gespeist. Es funktioniert nur am COM4. Vermutlicher Grund: COM1 verlangt Flanken mit den Spannungen < -3V bis > +3V und umgekehrt. In der "Norm" dazu ist ja schließlich festgelegt, dass Spannungen innerhalb dieser Grenzen als undefiniert gelten. COM4 hält sich offenbar nicht daran. DCF77_am_ComPort_V3.pdf: Es wird vom COM gespeist. Es funktioniert am COM1 und am COM4. Die Oszi-Bilder wurden bei Anschluß an COM4 gemacht. Drei Funktionen Deines Programms habe ich benutzt: Die Möglichkeit, die Signal-Invertierung zu wählen, die Möglichkeit, DTR und RTS zu Enablen oder eben nicht. Hierdurch lassen sich die plus/minus - Versorgungsspannungen einstellen. Als dritte Funktion habe ich natürlich die Wahl des ComPorts benutzt. Zu erwähnen ist, dass man die gewünschten Funktionen wählt, das Programm beendigt und neu aufruft. Erst dann werden die geänderten Funktionen wirksam. Immerhin weist Du ja darauf hin, dass die Programm-Einstellungen gespeichrt werden. Aber auch die anderen Funktionen sind beeindruckend vollständig und weise vorausgedacht. Beste Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Geschätztes Forum, Bernhard fragte: >Wie hoch sind die Messabweichungen, da der COM-Port ev. verzögert die >einzelnen Bytes an das Windows-System weiter gibt? Peter Dannegger fragte: >Stellt Dein VB-Programm auch die PC-Uhr mit? Beide Fragen haben mich dann doch dazu gebracht, das Programm nochmal zu überarbeiten. Leider ist jetzt ein ziemliches Monstrum draus geworden. Es hat folgende Eigenschaften und Funktionen: * DCF-Receiver über eine sehr einfache Anpasselektronik direkt am Com-Port. * Abfrage, ob die COM-Ports 1 bis 32 vorhanden sind. * Bei jedem vorhandenen COM-Port Prüfung, ob der DCF77-Receiver angeschlossen ist, wenn ja dann keine weitere Abfrage. * Nach Erkennen des COM-Ports Warten auf die Signalpause von 2 Sekunden. * Erfassung der Impulse bis zur erneuten Erkennung der Signalpause. * Während der Erfassung Datenerhebung für eine Statistik. * Mittels der APIs "timeBeginPeriod", "timeEndPeriod" und/oder "Sleep" kann die Polling-Geschwindigkeit sehr weitgehend geändert werden. Das hat erhebliche Auswirkungen auf die statistischen Ergebnisse. * Nach Erkennen der zweiten Signalpause läuft die Uhr mittels der API "timeGetTime" weiter. * Um 23:58:00 Uhr erfolgt ein Neustart ohne die Abfrage der COM-Ports. * Ab 00:00:00 Uhr des nächsten Tages läuft dann die Anzeige wieder mit den aktuellen Daten. * Es gibt einige weitere Gimmicks die dem Manual entnommen werden können. * Das Manual sowie weitere Dateien können über Menus geöffnet werden. Hierzu gehört auch eine doppelte Liste für die Einzelwerte zur Statistik, jeweils eine für die 100 [ms] eine für die 200 [ms] Impulse. Es ist evtl. erforderlich, das Programm zu installieren, falls sonst der COM-Port nicht erkannt wird. \DCF77\VB6\Paket\setup.exe Das Programm kann dann sehr wahrscheinlich wieder deinstalliert werden. Der COM-Port wird dann trotzdem erkannt. Starten mit Doppelklick auf \DCF77\VB6\DCF77.exe An Bernhard: Ich danke Dir für Dein Super Programm. Du wirst erkennen, dass ich einige Deiner Ideen verwendet habe. Insbesondere Dein genialer COM-Port - Scanner hat es mir angetan und mich dazu bewogen, das Programm nochmal zu aktualisieren. Das war aber wirklich nicht die einzige Deiner Ideen. An Peter Dannegger: Mittels des Programms kann jetzt auch die PC-Zeit mit der DCF77-Zeit synchronisiert werden. Grüße an alle, Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Geschätztes Forum, ich habe soeben versucht, die neueste Programm-Version hochzuladen. Das hat auch zunächst funktioniert. Einige Sekunden später war es dann aber wieder aus der Codesammlung verschwunden. Da eine der Dateien ein Wenig groß war (ca. 30 MByte, bei 445 kBit/s Uploadgeschwindigkeit ca. 8 Minuten Upload-Zeit), nehme ich an, dass sie gelöscht wurde. Ich werde versuchen, sie in kleineren Teilen doch noch zu schicken. Hier erstmal der Text und die Bilder: Geschätztes Forum, Bernhard fragte: >Wie hoch sind die Messabweichungen, da der COM-Port ev. verzögert die >einzelnen Bytes an das Windows-System weiter gibt? Peter Dannegger fragte: >Stellt Dein VB-Programm auch die PC-Uhr mit? Beide Fragen haben mich dann doch dazu gebracht, das Programm nochmal zu überarbeiten. Leider ist jetzt ein ziemliches Monstrum draus geworden. Es hat folgende Eigenschaften und Funktionen: * DCF-Receiver über eine sehr einfache Anpasselektronik direkt am Com-Port. * Abfrage, ob die COM-Ports 1 bis 32 vorhanden sind. * Bei jedem vorhandenen COM-Port Prüfung, ob der DCF77-Receiver angeschlossen ist, wenn ja dann keine weitere Abfrage. * Nach Erkennen des COM-Ports Warten auf die Signalpause von 2 Sekunden. * Erfassung der Impulse bis zur erneuten Erkennung der Signalpause. * Während der Erfassung Datenerhebung für eine Statistik. * Mittels der APIs "timeBeginPeriod", "timeEndPeriod" und/oder "Sleep" kann die Polling-Geschwindigkeit sehr weitgehend geändert werden. Das hat erhebliche Auswirkungen auf die statistischen Ergebnisse. * Nach Erkennen der zweiten Signalpause läuft die Uhr mittels der API "timeGetTime" weiter. * Um 23:58:00 Uhr erfolgt ein Neustart ohne die Abfrage der COM-Ports. * Ab 00:00:00 Uhr des nächsten Tages läuft dann die Anzeige wieder mit den aktuellen Daten. * Es gibt einige weitere Gimmicks die dem Manual entnommen werden können. * Das Manual sowie weitere Dateien können über Menus geöffnet werden. Hierzu gehört auch eine doppelte Liste für die Einzelwerte zur Statistik, jeweils eine für die 100 [ms] eine für die 200 [ms] Impulse. Es ist evtl. erforderlich, das Programm zu installieren, falls sonst der COM-Port nicht erkannt wird. \DCF77\VB6\Paket\setup.exe Das Programm kann dann sehr wahrscheinlich wieder deinstalliert werden. Der COM-Port wird dann trotzdem erkannt. Starten mit Doppelklick auf \DCF77\VB6\DCF77.exe An Bernhard: Ich danke Dir für Dein Super Programm. Du wirst erkennen, dass ich einige Deiner Ideen verwendet habe. Insbesondere Dein genialer COM-Port - Scanner hat es mir angetan und mich dazu bewogen, das Programm nochmal zu aktualisieren. Das war aber wirklich nicht die einzige Deiner Ideen. An Peter Dannegger: Mittels des Programms kann jetzt auch die PC-Zeit mit der DCF77-Zeit synchronisiert werden. Grüße an alle, Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo, Deine 28,8 MB Datei ist aber hier Beitrag "Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM" zum Download mit bei...
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hier kommt die DF77.exe, Größe 5,70 MB Der erste Teil des Source Codes hat 4,61 MB, der zweite Teil 4,55 MB. Dann gibt es noch ein "Paket", darin befindet sich die setup.exe. Es ist 12,1 MB groß, müsste also noch aufgeteilt werden. Zunächst schicke ich nur die EXE. Die anderen lade ich hoch, falls sie jemand wünscht. Beste Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Hallo -xx-, vielen Dank, jetzt sehe ich das auch. Es schien soeben quasi weg zu sein. Grüße Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Geschätztes Forum, aufgrund der Irritationen von gestern kommt hier alles nochmal. Einige Schönheitsreparaturen wurden auch noch durchgeführt. Wegen Bernhards Anmerkung schicke ich diesmal eine selbstentpackende Datei, deshalb die Endung .exe in DCF77.exe. Eine Anmerkung von Bernhard: >Kleine Anmerkung, soll kein meckern sein, denn die Projekt-Idee ist gut! >Versuch mal bitte nicht jedes einzelne Verzeichnis zu komprimieren... >hat jetzt 'ne Weile gedauert, bis ich alles entpackt habe. Bernhard fragte: >Wie hoch sind die Messabweichungen, da der COM-Port ev. verzögert die >einzelnen Bytes an das Windows-System weiter gibt? Peter Dannegger fragte: >Stellt Dein VB-Programm auch die PC-Uhr mit? ------------------------------------------------------------------------ Diese Fragen haben mich dann doch dazu gebracht, das Programm nochmal zu überarbeiten. Leider ist jetzt ein ziemliches Monstrum draus geworden. Es hat folgende Eigenschaften und Funktionen: * DCF-Receiver über eine sehr einfache Anpasselektronik direkt am Com-Port. * Abfrage, ob die COM-Ports 1 bis 32 vorhanden sind. * Bei jedem vorhandenen COM-Port Prüfung, ob der DCF77-Receiver angeschlossen ist, wenn ja dann keine weitere Abfrage. * Nach Erkennen des COM-Ports Warten auf die Signalpause von 2 Sekunden. * Erfassung der Impulse bis zur erneuten Erkennung der Signalpause. * Während der Erfassung Datenerhebung für eine Statistik. * Mittels der APIs "timeBeginPeriod", "timeEndPeriod" und/oder "Sleep" kann die Polling-Geschwindigkeit sehr weitgehend geändert werden. Das hat erhebliche Auswirkungen auf die statistischen Ergebnisse. * Nach Erkennen der zweiten Signalpause läuft die Uhr mittels der API "timeGetTime" weiter. * Um 23:58:00 Uhr erfolgt ein Neustart ohne die Abfrage der COM-Ports. * Ab 00:00:00 Uhr des nächsten Tages läuft dann die Anzeige wieder mit den aktuellen Daten. * Es gibt einige weitere Gimmicks die dem Manual entnommen werden können. * Das Manual sowie weitere Dateien können über Menus geöffnet werden. Hierzu gehört auch eine doppelte Liste für die Einzelwerte zur Statistik, jeweils eine für die 100 [ms] und eine für die 200 [ms] Impulse. Es ist evtl. erforderlich, das Programm zu installieren, falls sonst der COM-Port nicht erkannt wird. \DCF77\VB6\Paket\setup.exe Das Programm kann dann sehr wahrscheinlich wieder deinstalliert werden. Der COM-Port wird dann trotzdem erkannt. Starten mit Doppelklick auf \DCF77\VB6\DCF77.exe An Bernhard: Ich danke Dir für Dein Super Programm. Du wirst erkennen, dass ich einige Deiner Ideen verwendet habe. Insbesondere Dein genialer COM-Port - Scanner hat es mir angetan und mich dazu bewogen, das Programm nochmal zu aktualisieren. Das war aber wirklich nicht die einzige Deiner Ideen. An Peter Dannegger: Mittels des Programms kann jetzt auch die PC-Zeit mit der DCF77-Zeit synchronisiert werden. Grüße an alle, Klaus
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
@Klaus D. Vielen! Dank! für die Mühe und vielen Anregungen. Ich habe meinem Patenkind damit gerade Elektronik und Schnittstellen etwas näher gebracht. @Marius S. - was für ein Blödsinn - "VB gibt es praktisch schon lange nicht mehr" !!! Ich programmiere auch nach 25 Jahren noch super gerne mit VB6. Ich beherrsche mindestens 8 aktuellere Sprachen, aber KEINE davon ist auch nur ansatzweise ein halbwegs gleichwertiger Ersatz für schnelle Pilot Projekte mit GUI und Live Debugging IDE. Natürlich haben einige Sprachen in bestimmten Punkten ihre Vorteile, aber diese eierlegende Wollmilchsau VB6 bleibt in vielen Punkten bis heute unschlagbar vor allem in Puncto Geschwindigkeit bei der Entwicklung und es läuft problemlos unter allen aktuellen Betriebssystemen. Entweder nativ oder über Wine. - "Bunte Oberflächen baut kein Mensch mehr" !!! Woraus bestehen denn sonst heutige Programme ? Ich würde behaupten, mit VB6 jede beliebige grafische Oberfläche bauen zu können einschließlich XR/3D Oberflächen. Man muss dann nur für die Erweiterungen die Zeit opfern, die man vorher eingespart hat. P.S. Wäre Microsoft mit .NET gestartet und nicht mit Visual Basic, hätte .NET jetzt einen Marktanteil im Verhältnis zu Phyton von weniger als 1:100. Die ursprünglich Idee von .NET war okay, aber die Umsetzung durch MS leider teilweise unterirdisch.
:
Bearbeitet durch User
Re: Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM
Eh hier wieder eine große sinnlose Diskussion losgeht: Heino hat für seine Anmerkungen einen über 10 Jahre alten Thread exhumiert :-(