Forum: Projekte & Code Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM1


von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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
von Bernhard S. (bernhard)


Lesenswert?

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

von Marius S. (lupin) Benutzerseite


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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?

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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

von Bernhard S. (bernhard)


Lesenswert?

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

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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

von Klaus D. (rodo38)


Lesenswert?

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

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

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

von Martin S. (sirnails)


Lesenswert?

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 :(

von Marius S. (lupin) Benutzerseite


Lesenswert?

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.

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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

von Bernhard S. (bernhard)


Lesenswert?

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

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

@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

von Bernhard S. (bernhard)


Lesenswert?

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

von Klaus D. (rodo38)


Lesenswert?

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

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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

von Bernhard S. (bernhard)


Lesenswert?

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

von Bernhard S. (bernhard)



Lesenswert?

@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 :-)

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

... und so sieht die Programmoberfläche aus...

von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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

von Klaus D. (rodo38)



Lesenswert?

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

von Klaus D. (rodo38)



Lesenswert?

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

von -xx- (Gast)


Lesenswert?


von Klaus D. (rodo38)


Angehängte Dateien:

Lesenswert?

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

von Klaus D. (rodo38)


Lesenswert?

Hallo -xx-,

vielen Dank, jetzt sehe ich das auch. Es schien soeben quasi weg zu 
sein.

Grüße

Klaus

von Klaus D. (rodo38)



Lesenswert?

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

von Heino S. (sensorheino)


Lesenswert?

@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
von Sinus T. (micha_micha)


Lesenswert?

Eh hier wieder eine große sinnlose Diskussion losgeht: Heino hat für 
seine Anmerkungen einen über 10 Jahre alten Thread exhumiert :-(

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.