PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Datum ermitteln?



Import-Script
14.12.2003, 14:19
Hallo, <BR>ich muss das aktuelle Datum ermitteln und in den Variablen Tag und Monat speichern. Wie mache ich das? Dazu brauche ich doch die time.h?

Import-Script
15.12.2003, 02:59
Schau doch mal in den <b>Kernighan/Ritchie</b>. Dort steht sowas drin. Ist auch sehr hilfreich, wenn&#39;s um das Einhalten des Standards geht &#40;ANSI C&#41;. <BR> <BR>Gruß Gerd

Import-Script
15.12.2003, 13:18
@Gerd k: Danke!!! f&uuml;r das &#34;K&amp;R Erhalten&#34;<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0>

Import-Script
17.12.2003, 00:30
Hallo, <BR>ich habe es ja geschaft, die Sekunden seit 1.1. 1970 zu ermitteln. Das Problem war nur, diese umzuwandeln. Nun habe ich ein passendes Beispiel gefunden: <BR> <BR>tag = lokale_zeit-&#62;tm_mday; <BR>monat = lokale_zeit-&#62;tm_mon &#43; 1; <BR> <BR>in der Variablen lakale_zeit stehen die Sekunden seit 1970. Was ich nicht verstehe ist die Zeichenfolge &#34;-&#62;&#34;. Was bewirkt das?

Import-Script
17.12.2003, 02:32
Siehe obiger Kommentar. <BR>Schau Dir mal in einer der vielen Tutorials das Thema Strukturen an und wie man darauf zugreift. <BR>Existiert ein Zeiger auf eine Struktur, dann wird mit dem Pfeiloperator auf die Mitglieder zugegriffen, statt <BR> <BR>&#40;&#42;Strukturname&#41;.Member = xyz; <BR>schreibt man dann einfacher <BR>Strukturname-&#62;Member = xyz; <BR> <BR>Der Pfeiloperator <b>dereferenziert</b> die Struktur. <BR> <BR>Gruß Gerd <BR> <BR>PS: Ohne das Durchackern der &uuml;blichen Einf&uuml;hrungen kommt man bei C nicht weit. Daf&uuml;r hat die Sprache zu viele Freiheiten &#40;dirty Pitfalls&#41; <IMG SRC="http://progshop.com/elektronik/diskussion/clipart/happy.gif" ALT=":-&#41;" BORDER=0>.

Import-Script
17.12.2003, 12:26
und wegen eben dieser &#34;dirty Pitfalls&#34; bevorzuge ich PASCAL. Das erleichtert einiges, zwar nicht immer &#40;das muss man ganz ehrlich sagen&#41;, aber immer öfter...<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0> <BR> <BR>Mit &#34;C&#34; bin ich bis dato &#34;noch nicht warmgeworden&#34; eben deswegen. Ein Pascal-Compiler meckert halt viel fr&uuml;her!!! - es sei denn man gewöhnt es ihm ab mit $-dies und $-das, dann legst Du Dich auch nieder was der so an Code erzeugen kann, der ins Nirvana f&uuml;hrt.. <BR> <BR>ich denke nur an die seit Windows-Zeiten &uuml;blichen &#34;Nullterminierten Strings&#34; pChar - grausig; aber Pascal meckert es wenigstens an, wenn da eine Typwandlung nötig wäre.

Import-Script
13.01.2004, 23:32
Also das Programm läuft &#40;aber schon seit längerem&#41;. <BR>Dann habe ich mir mal das Buch von K&amp;R ausgeliehen. Ist echt gut! <BR> <BR>Aber ich brauche noch Infos wie man Hardware &#40;COM und LPT&#41; ansteuert. Hat da einer von euch Buchtips oder eine URL? <BR> <BR>Mfg, <BR>Kurt

Import-Script
14.01.2004, 21:42
Hängt vollständig vom verwendeten BS ab. Den LPT Port kann man ohne zu programmieren z.B. unter DOS probeweise wunderbar mittels debug ansprechen &#40;Datenbyte lesen oder auch schreiben&#41;. Bleibt man bei DOS gehen auch die inportb/outportb Befehle &#40;Borland Turbo C Hilfe nachschauen&#41;. Unter Windows 95/98/ME könnte/sollte das in der DOSShell ebenfalls noch funktionieren &#40;auch VisualC unterst&uuml;tzt die Befehle&#41;, bei XP oder Win2000 geht das aber keinesfalls wegen HAL. <BR> <BR>Mit VC kann die Serielle Schnittstelle mit CreateFile&#40;&#41; geöffnet werden. Siehe z.B. TTY.C aus dem Platform SDK &#40;nicht erschrecken, ist eine volständige Anwendung aus der Win 3.1 Zeit. Die Mechnismen sind aber die gleichen geblieben&#41;. Die Stichwortsuche nach COM in der Onlinehilfe bringt nicht viel &#40;da landet man schnell beim MS Component Object Model&#41;. <BR> <BR>Übrigens wird OpenComm&#40;&#41; unter Win32 nicht unterst&uuml;tzt, daf&uuml;r ist CreateFile&#40;&#41; zuständig. <BR> <BR>Im Win32 Helpfile &#40;siehe <a href="http://www.cs.virginia.edu/~lcc-win32" target=_top>http://www.cs.virginia.edu/~lcc-win32</a>&#41; steht unter &#39;Configuring a Communications Resource&#39; ein Beispiel, wie man den COM-Port öffnet. Nach &#39;Communication Functions&#39; im Helpfile-Index suchen, liefert die notwendigen Funktionen. Das ganze sollte auch mit NT und XP funktionieren <BR> <BR>Die Parallele Schnittstelle lässt sich ebenfalls mit CreateFile&#40;&#41; öffnen &#40;siehe &#39;Communications Resource Handles&#39;&#41;. <BR> <BR>Ein anderer Weg ist, mittels C unter Win32 den ParPort &uuml;ber einen virtuellen Gerätetreiber anzusprechen, wie z.B. Dale Edgar&#39;s PortIO95. <BR> <BR>Es gibt auch DLL&#39;s &uuml;ber die man die erforderlichen Funktionen bereitgestellt bekommt. Da gibt&#39;s aber wieder viele Wege der Codierung &#40;MFC, CPP, VB, Delphi&#41;, was die Einbindung anbetrifft. <BR> <BR>Gruß Gerd

Import-Script
14.01.2004, 23:33
Hallo Gerd, <BR>deine Tips werde ich mir gleich nochmal durchlesen. In der Zwischenzeit habe noch etwas anderes gefunden. W&uuml;rde das folgende Porgramm unter Win98 wirklich einen Wert einlesen? Laufen tut es und zeigt 255 an. An die Eingänge sind wohl PullUps angeschlossen? <BR> <BR>#include &#60;stdio.h&#62; <BR>#include &#60;conio.h&#62; <BR> <BR>int main&#40;void&#41; <BR>{ <BR> int a=0; <BR> a =_inp&#40;378&#41;; <BR> printf&#40;&#34;%d&#34;,a&#41;; <BR>}

Import-Script
15.01.2004, 01:52
Normalerweise lässt sich &uuml;ber die Basisadresse &#40;Adresse u. Modus ist abh. von BIOS-Einstellung&#41; nur Ausgeben &#40;SPP-Modus&#41;. Beim Lesen &#40;Dein Programm&#41; liest man dort nur den Puffer ein. In den erweiterten Modi &#40;EPP, ECP&#41; lassen sich wohl auch die 8 Datenleitungen der Basisadresse &#40;Datenport&#41; als Eingabe venwenden, wovon ich aber vorerst abraten w&uuml;rde. F&uuml;r eigene Experimente w&uuml;rde ich daher eher die Status bzw. Steuersignale verwenden, das gefährdet die Schnittstelle weniger. Bzw. es ist &uuml;berhaupt zu empfehlen, sich eine Parallelportkarte zuzulegen, wenn einem das Mainboard lieb und teuer ist ;&#41;. <BR> <BR>Der Statusport befindet sich an Basisadresse&#43;1. Welche Pins man verwenden kann, ist in dem PDF weiter unten gut erklärt. Basisadresse&#43;2 ist der Kontrollport. Da ist auch das Bit, das &uuml;ber die Bidirektionalität entscheidet. <BR> <BR>Hier spp20.zip saugen und in DOSShell ausf&uuml;hren. <BR><a href="http://www.beyondlogic.org/pardebug/pdebug.htm" target=_top>http://www.beyondlogic.org/pardebug/pdebug.htm</a> <BR> <BR>Dazu diese gute Info Lesen &#40;PDF ganz unten auf Webseite&#41; <BR><a href="http://www.beyondlogic.org/spp/parallel.htm" target=_top>http://www.beyondlogic.org/spp/parallel.htm</a> <BR> <BR>Wenn SPP20.EXE bei Dir läuft &#40;bei mir unter Win98SE geht&#39;s&#41; achte mal auf den Statusport, indem Du dem Drucker an LPT1 das Papier wegnimmst. Das Programm kann als Kontrolle f&uuml;r den eigenen Code dienen. Vorsicht mit dem Herumspielen der Bits. Als ich Bit 4 probeweise betätigt habe, bekam ich einen sofortigen Reboot ohne Vorwarnung und Bluescreen. <BR> <BR>Gruß Gerd

Import-Script
15.01.2004, 14:28
@Kurt: Die 378 sind Hex!!! - also _inp&#40;378h&#41;<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0> <BR> <BR>geht aber nur bei bidirektionaler LPT, ansonsten wie Gerd K. bereits anmerkte, &#40;379h&#41;, eben das Statusregister. Da kannst Du 4 Bit lesen; PaperOut, PrinterOnline, PrinterBusy, Acknowledge. <BR>Aber Achtung, davon sind einige Bits invertiert. <BR> <BR>Klartext: <BR>function in379port:word; {liest 4Bit von LPT-Karte an Basisadresse $378 } <BR>var value: word; {davon das Printer Statusregister $379 } <BR>begin {Bit 0 = ACK - Leitung Pin 10 } <BR> value := 0; {Bit 1 = BUSY- Pin 11 } <BR>{$ASMMODE Intel} {Bit 2 = PEnd- Pin 12 } <BR> asm {Bit 3 = Online- Pin 13 } <BR> {cli} <BR> mov dx,379h <BR> in ax,dx <BR> mov value,ax <BR> {sti} <BR> end; <BR> value :=&#40;&#40;value xor $80&#41; and $f0&#41; shr 4; {Bitinvertierungen entfernen} <BR> in379port := value; {und korrekt positionieren } <BR>end; <BR> <BR>Das in C umzusetzen d&uuml;rfte wohl nicht allzu schwer sein...

Import-Script
22.01.2004, 23:42
OK. Danke f&uuml;r die Infos. Wenn ich etwas mehr zeit habe, mache ich mal einen alten Rechner fertig und probiere das ganze aus. <BR>Mfg, <BR>Kurt