Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » SerialPort

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
10.04.2008, 10:24 Uhr
~Queen
Gast


Hallo

mit diesem code sollte ich von der seriellen schnittstelle daten lesen und schreiben!!


C++:
#include <windows.h>
#include <stdio.h>
#include <iostream.h>

int main(void){
    //ComPort öffnen:
    DCB dcb;
    HANDLE handlePort_;

    HANDLE com1port;

    com1port= CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,0,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    //Configuration:

    dcb.BaudRate=9600;
    dcb.StopBits=ONESTOPBIT;;
    dcb.Parity=NOPARITY;
    dcb.ByteSize=8;

    if(!SetCommState(&handlePort_,&dcb)){
        CloseHandle(handlePort_);
        return 0;
    }

    //Setting a time out communication:

    COMMTIMEOUTS comTimeOut;
    comTimeOut.ReadIntervalTimeout=MAXDWORD;
    comTimeOut.ReadTotalTimeoutMultiplier=0;
    comTimeOut.ReadTotalTimeoutConstant=0;
    comTimeOut.WriteTotalTimeoutMultiplier=1;
    comTimeOut.WriteTotalTimeoutConstant=2;

    if(!SetCommTimeouts((HANDLE)handlePort_,&comTimeOut)){
        CloseHandle(handlePort_);
        return 0;
    }

DWORD dwCount;
char cData[16]="Hallo";
    //Sending data:

    WriteFile(handlePort_,cData,16,&dwCount,0);

    //Receiving Data:
    ReadFile(handlePort_,cData,16,&dwCount,0);

    //Closing a serial Port:

    if(CloseHandle(handlePort_)==0){
        

}return 0;}



beim compilieren treten keine Fehler auf, es wird aaber nichts ausgegeben was habe ich da falsch gemacht!!!!
danke

Dieser Post wurde am 10.04.2008 um 11:41 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.04.2008, 10:28 Uhr
ao

(Operator)


Du hast zwei Port-Handles (handlePort_ und com1Port), und verwendest bei CreateFile den einen und bei allen anderen Aktionen den anderen (der gar nicht geöffnet wurde)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.04.2008, 10:38 Uhr
~Queen
Gast



Zitat von ao:
Du hast zwei Port-Handles (handlePort_ und com1Port), und verwendest bei CreateFile den einen und bei allen anderen Aktionen den anderen (der gar nicht geöffnet wurde)


Oh Gott stimmt ja *Peinlich*

danke sehr
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.04.2008, 10:40 Uhr
~Queen
Gast


aber trotzdem wird da nichts ausgegeben
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.04.2008, 11:08 Uhr
ao

(Operator)


Wo soll denn was ausgegeben werden? Wo schickst du es hin bzw. wo kommen die Daten her?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.04.2008, 11:15 Uhr
ao

(Operator)



C++:
DCB dcb;

dcb.BaudRate=9600;
dcb.StopBits=ONESTOPBIT;;
dcb.Parity=NOPARITY;
dcb.ByteSize=8;

if(!SetCommState(&handlePort_,&dcb)){
CloseHandle(handlePort_);
return 0;
}


Ach so, das ist so nicht richtig, du weißt ja gar nicht, was in den DCB-Feldern drin steht, die du nicht initialisierst. Das kann die Port-Settings ziemlich vermurksen.

Außerdem: SetCommState und GetCommState kriegen nicht &handlePort, sondern nur handlePort ohne Adress-Operator! Konntest du deinen Code ohne Fehler kompilieren?

Das geht so:

C++:
DCB dcb;

// aktuellen Zustand holen
GetCommState (handlePort, &dcb);

// Einstellungen machen
dcb.BaudRate=9600;
dcb.StopBits=ONESTOPBIT;;
dcb.Parity=NOPARITY;
dcb.ByteSize=8;

// Einstellungen zurückschreiben
if(!SetCommState(handlePort_,&dcb)){
CloseHandle(handlePort_);
return 0;

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
10.04.2008, 11:15 Uhr
~Queen
Gast



Zitat von ao:
Wo soll denn was ausgegeben werden? Wo schickst du es hin bzw. wo kommen die Daten her?


von und an einer seriellen schnittstelle (COM1)!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.04.2008, 11:18 Uhr
ao

(Operator)



Zitat von ~Queen:

Zitat:
Wo soll denn was ausgegeben werden? Wo schickst du es hin bzw. wo kommen die Daten her?

von und an einer seriellen schnittstelle (COM1)!!!

Danke, darauf wäre ich nicht gekommen.

Und was ist an der COM1 angeschlossen? Sag jetzt nicht "ein Kabel".

Dieser Post wurde am 10.04.2008 um 11:19 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
10.04.2008, 11:27 Uhr
~Queen
Gast



Zitat von ao:

Danke, darauf wäre ich nicht gekommen.

hahaha ja sorry wenn man noch nie was mit sowas was zu tun gehabt hat

Und was ist an der COM1 angeschlossen? Sag jetzt nicht "ein Kabel".


was sonst

Dieser Post wurde am 10.04.2008 um 11:40 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.04.2008, 11:34 Uhr
~Queen
Gast



Zitat:
Konntest du deinen Code ohne Fehler kompilieren?


ja konnte ich

Serial_1.exe - 0 error(s), 0 warning(s)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: