Vollständige Version anzeigen : C: Datum ermitteln?
Import-Script
14.12.2003, 12: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, 00:59
Schau doch mal in den <b>Kernighan/Ritchie</b>. Dort steht sowas drin. Ist auch sehr hilfreich, wenn's um das Einhalten des Standards geht (ANSI C). <BR> <BR>Gruß Gerd
Import-Script
15.12.2003, 11:18
@Gerd k: Danke!!! für das "K&R Erhalten"<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0>
Import-Script
16.12.2003, 22: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->tm_mday; <BR>monat = lokale_zeit->tm_mon + 1; <BR> <BR>in der Variablen lakale_zeit stehen die Sekunden seit 1970. Was ich nicht verstehe ist die Zeichenfolge "->". Was bewirkt das?
Import-Script
17.12.2003, 00: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>(*Strukturname).Member = xyz; <BR>schreibt man dann einfacher <BR>Strukturname->Member = xyz; <BR> <BR>Der Pfeiloperator <b>dereferenziert</b> die Struktur. <BR> <BR>Gruß Gerd <BR> <BR>PS: Ohne das Durchackern der üblichen Einführungen kommt man bei C nicht weit. Dafür hat die Sprache zu viele Freiheiten (dirty Pitfalls) <IMG SRC="http://progshop.com/elektronik/diskussion/clipart/happy.gif" ALT=":-)" BORDER=0>.
Import-Script
17.12.2003, 10:26
und wegen eben dieser "dirty Pitfalls" bevorzuge ich PASCAL. Das erleichtert einiges, zwar nicht immer (das muss man ganz ehrlich sagen), aber immer öfter...<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0> <BR> <BR>Mit "C" bin ich bis dato "noch nicht warmgeworden" eben deswegen. Ein Pascal-Compiler meckert halt viel frü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ührt.. <BR> <BR>ich denke nur an die seit Windows-Zeiten üblichen "Nullterminierten Strings" pChar - grausig; aber Pascal meckert es wenigstens an, wenn da eine Typwandlung nötig wäre.
Import-Script
13.01.2004, 21:32
Also das Programm läuft (aber schon seit längerem). <BR>Dann habe ich mir mal das Buch von K&R ausgeliehen. Ist echt gut! <BR> <BR>Aber ich brauche noch Infos wie man Hardware (COM und LPT) ansteuert. Hat da einer von euch Buchtips oder eine URL? <BR> <BR>Mfg, <BR>Kurt
Import-Script
14.01.2004, 19: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 (Datenbyte lesen oder auch schreiben). Bleibt man bei DOS gehen auch die inportb/outportb Befehle (Borland Turbo C Hilfe nachschauen). Unter Windows 95/98/ME könnte/sollte das in der DOSShell ebenfalls noch funktionieren (auch VisualC unterstützt die Befehle), bei XP oder Win2000 geht das aber keinesfalls wegen HAL. <BR> <BR>Mit VC kann die Serielle Schnittstelle mit CreateFile() geöffnet werden. Siehe z.B. TTY.C aus dem Platform SDK (nicht erschrecken, ist eine volständige Anwendung aus der Win 3.1 Zeit. Die Mechnismen sind aber die gleichen geblieben). Die Stichwortsuche nach COM in der Onlinehilfe bringt nicht viel (da landet man schnell beim MS Component Object Model). <BR> <BR>Übrigens wird OpenComm() unter Win32 nicht unterstützt, dafür ist CreateFile() zuständig. <BR> <BR>Im Win32 Helpfile (siehe <a href="http://www.cs.virginia.edu/~lcc-win32" target=_top>http://www.cs.virginia.edu/~lcc-win32</a>) steht unter 'Configuring a Communications Resource' ein Beispiel, wie man den COM-Port öffnet. Nach 'Communication Functions' 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() öffnen (siehe 'Communications Resource Handles'). <BR> <BR>Ein anderer Weg ist, mittels C unter Win32 den ParPort über einen virtuellen Gerätetreiber anzusprechen, wie z.B. Dale Edgar's PortIO95. <BR> <BR>Es gibt auch DLL's über die man die erforderlichen Funktionen bereitgestellt bekommt. Da gibt's aber wieder viele Wege der Codierung (MFC, CPP, VB, Delphi), was die Einbindung anbetrifft. <BR> <BR>Gruß Gerd
Import-Script
14.01.2004, 21:33
Hallo Gerd, <BR>deine Tips werde ich mir gleich nochmal durchlesen. In der Zwischenzeit habe noch etwas anderes gefunden. Wü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 <stdio.h> <BR>#include <conio.h> <BR> <BR>int main(void) <BR>{ <BR> int a=0; <BR> a =_inp(378); <BR> printf("%d",a); <BR>}
Import-Script
14.01.2004, 23:52
Normalerweise lässt sich über die Basisadresse (Adresse u. Modus ist abh. von BIOS-Einstellung) nur Ausgeben (SPP-Modus). Beim Lesen (Dein Programm) liest man dort nur den Puffer ein. In den erweiterten Modi (EPP, ECP) lassen sich wohl auch die 8 Datenleitungen der Basisadresse (Datenport) als Eingabe venwenden, wovon ich aber vorerst abraten würde. Für eigene Experimente würde ich daher eher die Status bzw. Steuersignale verwenden, das gefährdet die Schnittstelle weniger. Bzw. es ist überhaupt zu empfehlen, sich eine Parallelportkarte zuzulegen, wenn einem das Mainboard lieb und teuer ist ;). <BR> <BR>Der Statusport befindet sich an Basisadresse+1. Welche Pins man verwenden kann, ist in dem PDF weiter unten gut erklärt. Basisadresse+2 ist der Kontrollport. Da ist auch das Bit, das über die Bidirektionalität entscheidet. <BR> <BR>Hier spp20.zip saugen und in DOSShell ausfü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 (PDF ganz unten auf Webseite) <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 (bei mir unter Win98SE geht's) achte mal auf den Statusport, indem Du dem Drucker an LPT1 das Papier wegnimmst. Das Programm kann als Kontrolle fü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, 12:28
@Kurt: Die 378 sind Hex!!! - also _inp(378h)<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, (379h), 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 :=((value xor $80) and $f0) shr 4; {Bitinvertierungen entfernen} <BR> in379port := value; {und korrekt positionieren } <BR>end; <BR> <BR>Das in C umzusetzen dürfte wohl nicht allzu schwer sein...
Import-Script
22.01.2004, 21:42
OK. Danke fü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
vBulletin® v3.6.8, Copyright ©2000-2010, Jelsoft Enterprises Ltd.