Serielle Schnittstelle Com1 ansteuern
-
guckst du hier:
-
ACU schrieb:
Dagegen ist nichts einzuwenden, wäre aber trotzdem schön, wenn jemand helfen könnte, da ich ohne die Abfrage nicht weiterkomme.
Äh ja, ... leider sind die 50 Spezialisten meines unterirdischen Labors in der Gewerkschaft, und die verbietet Sonntagsarbeit ausdrücklich. Aber heute arbeiten sie wieder mit Hochdruck einzig an der Lösung deines Problems. Ich schätze heute Abend dürfte eine Lösung vor Feierabend ausfallen...
...wobei ich schon irgendwas gehört habe von einem Wissenschaftler, das er sich in der Art geäussert hat wie "Soll er die Doku doch selber lesen". Aber der Kerl wird natürlich sofort von mir freigestellt. Ist ja ne Frechheit, sowas!
-
So ich habe bei meinem Programm weitergemacht.
Leider komme ich immernoch nicht weiter.
Ich habe einiges aus den MSDN Beispielen schon probiert, aber leider funktioniert alles nicht.
Was ich will ist eigentlich nur ein Code, der mir zurückliefert, ob Daten von der Seriellen Schnittstelle im Puffer bereitliegen. Das kann doch nicht so schwer sein oder?Da junix ja lieber intelligente seine Zeit mit intelligenten Texten verschwendet, hoffe ich auf die Hilfe Anderer.
-
1.) Für was sind eigentlich die Timeouts gut.
2.) Wie macht man eigentlich das Empfangen am besten. Ich weis ja nicht wann von dem externen Gerät etwas zu meinem PC geschickt wird. Ich dachte mir, dass ich hierfür einen Thread starte indem ich immer abfrage bis etwas zum PC kommt. Oder gibt es noch eine andere Möglichkeit?
-
Eine Andere Möglichkeit wäre die Funktion für das Empfangen in einen Timer zu packen.
-
Sunday schrieb:
die schnittstelle muss geöffnet sein, bevor du sie konfigurieren kannst.
// Timeouts fuer Port setzen void SetReadTimeouts(HANDLE hCom) { COMMTIMEOUTS timeouts; timeouts.ReadIntervalTimeout = 100; // Zeit zwischen 2 Zeichen timeouts.ReadTotalTimeoutMultiplier = 0; // pro Zeichen timeouts.ReadTotalTimeoutConstant = 1; timeouts.WriteTotalTimeoutConstant = 0; // kein Timeout beim Schreiben timeouts.WriteTotalTimeoutMultiplier = 0; if (!::SetCommTimeouts(hCom, &timeouts)) { // ... Fehler } } // hCom ist im Header definiert (HANDLE hCom) void __fastcall TForm1::OpenComPort(char *Port) { if ((hCom = OpenComm(Port)) != INVALID_HANDLE_VALUE) { // mit default-Werten initialisieren SetDeviceControlBlock(hCom, CBR_9600, 8, NOPARITY, ONESTOPBIT); // Timeouts setzen SetReadTimeouts(hCom); } } void __fastcall TForm1::Button1Click(TObject *Sender) { OpenComPort("COM1"); }wenn du auf Button1 klickst, solltest du schonmal keine fehler bekommen, es sein denn deine Com existiert nicht.

Könnten Sie mir an meine E-Mail Adresse
Wie ich den Anschluss COM1 über C++ ansteuern kann.
Bei mir Funktioniert das Irgend wie nicht.
Könnten Sie mir vielleicht einen einfachen Quellcode mailen.
-
Gilt das für alle Windows_Betriebssysteme.
Also kann ich die Funktion auf einem XP-Sytem und auch auf einen anderen wie Win-95 oder was muss ich dann beachten. Wenn ich das auf einem anderem Betriebssystem tun möchte?HANDLE hCom = ::CreateFile(Port,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
-
Hallo
hier findest du die Doku zu der Funktion, dort stehen auch Versionspezifische Eigenheiten.
bis bald
akari
-
Diese Seite kenne ich schon hab schon ein paar mal versucht dort irgendwas zu verstehen. Bin aber leider voll die Englisch Niete.
Könntest du mir vielleicht sagen wie der unterschied zwischn XP und 98 ist.
-
bronstein schrieb:
Bin aber leider voll die Englisch Niete.
schau mal bei Langenscheidt oder Pons vorbei. die haben gute englisch wörterbücher. sind ja auch nur 2 kleine sätze die auf einen unterschied zwischen winxp und win98 hinweisen.