# Ein paar Verständnisfragen



## FzK_SAKI (16. August 2007)

hallo!

Ich habe ein paar kleine Verständnisfragen. Ich bin ein C++ , und deshalb kenne ich mich noch nicht mit den ganzen Wörtern aus, die einem im Internet hinterhergeworfen werden.
Als erstes würde ich gerne wissen wollen was das "Wort" DWORD soll. Beispiel:

DWORD Read(void* lpBuf, DWORD dwCount);
BOOL Read(void* lpBuf, DWORD dwCount, OVERLAPPED& overlapped);
void ReadEx(void* lpBuf, DWORD dwCount);
    throw( CSerialException );

Im Grunde Sollen einem diese Befehlszeilen ermöglichen Dateien über eine Serielle Schnittstelle zu lesen. Aber mich irritiert die ganze Zeit dieses Wort DWORD.
Kann mir jemand helfen?

Ich bedanke mich schon einmal im vorraus


----------



## Nabbi (16. August 2007)

Einfach Suchfunktion nutzen und finden 

http://www.tutorials.de/forum/c-c/142130-word-dword.html


----------



## MCoder (16. August 2007)

Eine Auflistung aller speziell bei Windows definierter Datentypen findest du hier:
http://msdn2.microsoft.com/en-us/library/aa383751.aspx

Gruß
MCoder


----------



## FzK_SAKI (16. August 2007)

Cool, danke 
Ich mache mir so einfache Dinge so kompliziert sodass Andere die Dinge, die so einfach sind , genauso kompliziert sehen wie ich. Sorry für diesen komplizierten Satz, aber einfacher ging's nicht. Deswegen bin ich nicht auf die einfache Idee gekommen so etwas kompliziertes zu benutzen wie die Suchmaschiene. Mann, war das kompliziert!


----------



## FzK_SAKI (16. August 2007)

So. Das eine wäre erklärt.

Jetzt habe ich das Problem:

ich include <ComEnumPorts.h>

Wenn ich jedoch compilieren lasse, dann sagt er mir, dass er das nicht kennt, in Form von:

fatal error C1083: Datei (Include) kann nicht geöffnet werden: "ComEnumPorts.h": No such file or directory

Kann mir jemand helfen? Brauche ich noch andere includes oder schreibt man den Include einfach anders?


----------



## MCoder (16. August 2007)

Falls noch nicht geschehen, musst du die "Com-Tools"  herunterladen ( http://members.inode.at/anton.zechner/az/ComTools.zip ) und die Dateien "ComTools.cpp" und "ComTools.h" in dein Projekt einfügen.

Gruß
MCoder


----------



## FzK_SAKI (16. August 2007)

Ähm... Naja, hab ich gemacht, und dann habe ich compiliert und dennoch kommt wieder der selbe Fehler.


----------



## MCoder (16. August 2007)

Hast recht, wäre natürlich dieser Link gewesen: http://members.inode.at/anton.zechner/az/ComEnum.zip und die im Projekt einzufügenden Dateien heißen dann "ComEnumPorts.*" 

Gruß
MCoder


----------



## FzK_SAKI (16. August 2007)

Ah, danke.

Ähm. Kennst du den Befehl wenn ich Dateien über die Schnittstelle senden will? Ich habe nur diesen einen hier:

	DWORD Write(const void* lpBuf, DWORD dwCount);
	BOOL Write(const void* lpBuf, DWORD dwCount, OVERLAPPED& overlapped);
	void WriteEx(const void* lpBuf, DWORD dwCount);
	      throw(meldung[5]);

Aber der Compiler stürzt immer ab, mit dieser fehlermeldung:

Unbehandelte Ausnahme bei 0x77e9bc3f in serialmonitor.exe: Microsoft C++-Ausnahme: char an Speicherposition 0x0012ff70..

Dann kann ich ihn unterbrechen, oder auf weiter klicken. Wenn ich auf Weiter klicke, dann 
geht er wieder auf die Normale Oberfläche zurück, bei unterbrechen öffnet sich der Disassembly, und der Pfeil ist bei der Zeile:

77E9BC3F  pop         edi

Vielleicht habe ich das jetzt nicht richtig klar hier reingebracht, aber ich hatte keine andere Lösung.

Gruß
FzK_SAKI


----------



## MCoder (16. August 2007)

Hallo,

lies dir doch mal den Artikel zu den downgeloadeten Sourcen durch: http://members.inode.at/anton.zechner/az/Seriell.htm
Da bekommst du ein ganz gute Einführung und Codebeispiele zu dem Thema.

Gruß
MCoder


----------



## FzK_SAKI (17. August 2007)

Hallo!

Ich habe mal wieder eine Frage:

Den Quellcode unten habe ich von der Seite: http://members.inode.at/anton.zechner/az/Seriell.htm

Jetzt jedoch hätte ich gerne gewusst was der überhaupt macht. 

bool  bDtrOn=1, bRdsOn=1;

memset(&sDcb, 0 ,sizeof(sDcb));
sDcb.DCBlength = sizeof(sDcb);
GetCommState(hFile,&sDcb);

sDcb.fDtrControl = (bDtrOn)? DTR_CONTROL_ENABLETR_CONTROL_DISABLE;
sDcb.fRtsControl = (bRdsOn)? RTS_CONTROL_ENABLE:RTS_CONTROL_DISABLE;

SetCommState(hFile,&sDcb);

Besonders die Zeilen...

>sDcb.fDtrControl = (bDtrOn)? DTR_CONTROL_ENABLETR_CONTROL_DISABLE;
>sDcb.fRtsControl = (bRdsOn)? RTS_CONTROL_ENABLE:RTS_CONTROL_DISABLE;

...kommen mir sehr komisch vor.

Wäre gut, wenn jemand die Zeit aufbringt mir zu helfen.

Danke,

Gruß
FzK_SAKI


----------



## swalbking (17. August 2007)

FzK_SAKI hat gesagt.:


> Besonders die Zeilen...
> 
> >sDcb.fDtrControl = (bDtrOn)? DTR_CONTROL_ENABLETR_CONTROL_DISABLE;
> >sDcb.fRtsControl = (bRdsOn)? RTS_CONTROL_ENABLE:RTS_CONTROL_DISABLE;
> ...



Hi,
also mit dem Fragezeichenoperator weist du einer Variablen einen Wert zu, der dadurch bestimmt wird, ob eine Bedingung true oder false ist.
variable=(Bedingung)?"Wert wenn true":"Wert wenn false";

Beispiel:
int x = (1==1)?1:0;
da 1==1 true ist, wird der Variablen x der Wert "1" zugewiesen!

Gruß,
swalbking


----------



## FzK_SAKI (17. August 2007)

Sehr gut. ich glaube ich habe es verstanden. Danke! 
Aber Die "Wörter":
bDtrOn und:
bRdsOn

Sind jetzt nicht schon vorgegeben gewesen?

Gruß

FzK_SAKI


----------



## swalbking (17. August 2007)

Die "Wörter" sind bools (können die Werte true(bzw.1) oder false(bzw.0) annehmen).
Du legst sie in deiner ersten Zeile fest:



FzK_SAKI hat gesagt.:


> bool  bDtrOn=1, bRdsOn=1;


----------



## FzK_SAKI (17. August 2007)

Ok. Danke.

Ähm... noch etwas:

Kann ich denn etwas eingeben, damit der Compiler auf der Konsolenoberfläche zu einer bestimmten Stelle springt um mir dann dort etwas ausgeben zu lassen?

Gruß
FzK_SAKI


----------



## Daniel Toplak (17. August 2007)

Hi,

ohne dir jetzt zu nahe zu treten, vielleicht tust du dir selbst den gefallen und fängst bei den Grundlagen von C oder C++ an und nicht gleich beim Lesen/Schreiben über eine Serielle Schnittstelle.

Es gibt im Internet haufenweise C bzw. C++ Grundlagen-Tutorials, die Themen wie Kontrollstrukturen, Variablendeklarationen usw... abhandeln.


----------



## FzK_SAKI (17. August 2007)

Hallo! Ich bins mal wieder!
Ich weiß echt nicht was gerade mein compiler mit meinem programm macht. Könnt ihr mir vielleicht helfen?

#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>

int main()
{
      printf("Hallo");
      cin.get();
}

Doch wenn ich kompilieren lasse, dann zeigt er mir an:

fatal error C1083: Datei (Include) kann nicht geöffnet werden: "iostream.h": No such file or directory

Was kann ich da tun? Zumal es geht, wenn ich statt include iostream.h include iostream schreibe. Aber wenn ich dann noch include stdafx.h dazunehme, dann findet er stdafx.h nicht mehr, und wenn ich schreibe include stdafx dann geht es auch nicht. In allen Fällen zeigt er mir fatal error usw. an.

Gruß
FzK_SAKI


----------



## FzK_SAKI (17. August 2007)

Hallo! Ich bins mal wieder!
Ich weiß echt nicht was gerade mein compiler mit meinem programm macht. Könnt ihr mir vielleicht helfen?

#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>

int main()
{
      printf("Hallo");
      cin.get();
}

Doch wenn ich kompilieren lasse, dann zeigt er mir an:

fatal error C1083: Datei (Include) kann nicht geöffnet werden: "iostream.h": No such file or directory

Was kann ich da tun? Zumal es geht, wenn ich statt include iostream.h include iostream schreibe. Aber wenn ich dann noch include stdafx.h dazunehme, dann findet er stdafx.h nicht mehr, und wenn ich schreibe include stdafx dann geht es auch nicht. In allen Fällen zeigt er mir fatal error usw. an.

Gruß
FzK_SAKI

P.s:


FzK_SAKI hat gesagt.:


> ohne dir jetzt zu nahe zu treten, vielleicht tust du dir selbst den gefallen und fängst bei den Grundlagen von C oder C++ an und nicht gleich beim Lesen/Schreiben über eine Serielle Schnittstelle.



Was soll das denn heißen? Ich soll mal lieber erst bei den Grundlagen anfangen? Ich habe bis jetzt genug Tutorials durchgearbeitet. (Naja. Vielleicht nicht genug um danach mit der Seriellen Schnittstelle anzufangen, aber GENUG um mich da ranzutrauen.) Du tust mir echt leid, wenn du dich nicht traust an etwas ranzugehen, was ja so _unheimlich kompliziert_ ist. Ok, Serielle Schnittstelle war ja auch erst mal schwer, aber ich habe es im Grunde schon hinbekommen. Der Fehler oben, der ist erst gerade aufgetreten und ich weiß nicht wie man ihn beheben kann. Aber vielleicht habe ich ein Tutorial übersehen in dem man so etwas erklärt bekommt. Wenn du so ein Tutorial erkennst, dann schick mir bitte den link.
ich wäre dir sehr dankbar.


----------



## deepthroat (17. August 2007)

FzK_SAKI hat gesagt.:


> Hallo! Ich bins mal wieder!


MCoder hat dich doch bereits in einem anderen Thema darauf aufmerksam gemacht, das du nicht x-mal die gleiche Frage stellen solltest?! (siehe Netiquette Nr. 12 der du zugestimmt hast) 

Außerdem ist das hier kein Chat oder Instant Messaging. Das heißt es kann auch mal etwas dauern bis jemand die Zeit findet etwas zu antworten.

Gruß


----------



## FzK_SAKI (17. August 2007)

ich weiß das das hier kein chatprogramm ist, und auf diese frage wurde mir, wenn du mal ganz genau dir alles durchgesehen hättest, dann wär dir aufgefallen, dass noch niemand meine Frage von gerade beantwortet hatte. Mir wurde nur ein Downloadlink gegeben.
oder was meinst du mit:

>(siehe Netiquette Nr. 12 der du zugestimmt hast)


----------



## FzK_SAKI (17. August 2007)

ich weiß das das hier kein chatprogramm ist, und auf diese frage wurde mir, wenn du mal ganz genau dir alles durchgesehen hättest, dann wär dir aufgefallen, dass noch niemand meine Frage von gerade beantwortet hatte. Mir wurde nur ein Downloadlink gegeben.
oder was meinst du mit:



FzK_SAKI hat gesagt.:


> (siehe Netiquette Nr. 12 der du zugestimmt hast)


----------



## deepthroat (17. August 2007)

FzK_SAKI hat gesagt.:


> ich weiß das das hier kein chatprogramm ist, und auf diese frage wurde mir, wenn du mal ganz genau dir alles durchgesehen hättest, dann wär dir aufgefallen, dass noch niemand meine Frage von gerade beantwortet hatte.


Erstens hast du die Frage hier auch doppelt gepostet (man kann einen Beitrag *bearbeiten*) und außerdem hast du die gleiche Frage in einem anderen Thema gepostet.


FzK_SAKI hat gesagt.:


> Mir wurde nur ein Downloadlink gegeben.
> oder was meinst du mit:
> 
> >(siehe Netiquette Nr. 12 der du zugestimmt hast)


Damit meine ich, du solltest dir mal die Netiquette durchlesen, an die du dich hier zu halten hast, weil du bei der Anmeldung zugestimmt hast das zu tun.

Gruß


----------



## FzK_SAKI (17. August 2007)

Ich weiß wie das jetzt klingt, aber dieses andere Unterforum: Was geht denn bei mir ab 
habe ich nicht selber erstellt. ich war in dem Unterforum, aber hab es nicht erstellt, ich hatte bis jetzt nur die Foren: 

Ein paar verständnisfragen und   #include <ComEnumPort.h> No such file or directory 

Dieses Forum: Was geht bei mir ab..... habe ich nicht eröffnet. ich weiß auch nicht wie ich das gemacht habe.

Also Sorry, dass ich 2x dieselbe Frage gefragt habe.


----------



## Daniel Toplak (20. August 2007)

Also zum einen wollte ich dich weder beleidigen noch an deinen Kenntnissen über C/C++ zweifeln, aber du stellst Fragen die eigentlich in die absoluten Grundlagen der C/C++ Entwiklung gehören und willst im gleichen Atemzug dann Hardwarenahes Programmieren für eine serielle Schnittstelle durchziehen.
Wenn du das hinbekommst ist es ja toll und ich zweifel auch nicht daran.

Zu deinem Problem:
Es ist abhängig welche Entwicklungsumgebung du verwendest, dann "iostream.h" wurde irgendwann mal zu "iostream" also sogesehen ist beides richtig, das eine ist nur "veraltet" und abgelöst.
Auserdem solltest du nicht (wenn es sich vermeiden lässt) C - Funktionen mit C++ Objekten im bereich STDOUT/STDIN mischen, denn das ist weder guter Stil sondern verwirrt eher, wenn die Projekte mal etwas größer werden.
D.h. wenn C++ dann:

```
#include <iostream>

int main(int argc, char** argv);
{
   std::cout << "Hallo" << std::endl;
   std::cin.get();
   return 0;
}
```
oder mit "using namespace"

```
#include <iostream>

using namespace std;

int main(int argc, char** argv);
{
   cout << "Hallo" << endl;
   cin.get();
   return 0;
}
```


----------

