Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » rs232, probleme beim lesen

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 <
000
27.05.2004, 14:45 Uhr
~mat
Gast


Hallo,
ich habe folgendes Problem:
Ich sende eine Zahl an die serielle Schnittstelle und bekomme darauf sofort eine Antwort von dem dort angeschlossenen Controller. Dieses Signal ist auch tatsächlich vorhanden, da ich es am Oszilloskop sehe und mit einem anderen Programm (RS232Hex30.) auch ohne Probleme einlesen kann.
Das Senden klappt wunderbar mit dem Write-Befehl, bloß bleibt er beim ?Read? hängen und wartet endlos auf ein Zeichen, welches eigentlich schon da sein sollte.
Mein Betriebssystem ist Windows 98 und ich programmiere mit Microsoft C++ 6.0.

Vielleicht weiß jemand von Euch was ich falsch mache, oder hat eine Alternative......

Vielen Dank!!

Matthias


C++:
hFile=CreateFile("\\\\.\\COM2",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(hFile==INVALID_HANDLE_VALUE)return 0;
memset(&sDcb,0,sizeof(sDcb));
sDcb.DCBlength       = sizeof(sDcb);
sDcb.BaudRate        = 9600;    // Baudrate
sDcb.fParity         = FALSE;
sDcb.fBinary         = TRUE;
sDcb.Parity          = NOPARITY;// Kein Paritybit
sDcb.StopBits        = ONESTOPBIT;
sDcb.fOutxCtsFlow    = FALSE;
sDcb.fOutxDsrFlow    = FALSE;
sDcb.fDtrControl     = DTR_CONTROL_DISABLE;
sDcb.fDsrSensitivity = FALSE;
sDcb.fAbortOnError   = FALSE;
sDcb.ByteSize        = 8;

unsigned char szZeichen[1];
unsigned char szZahl[3];
    szZahl[0]=0x2B;
    szZahl[1]=0xE4;  
    szZahl[2]=0x00;


WriteFile(hFile,&szZahl,3,&dwWrite,NULL );

ReadFile(hFile,&szZeichen,1,&dwRead,NULL );

cout<<szZeichen;
    
CloseHandle(hFile);




Bearbeitung von Pablo:

Bitte, cpp tags selber benutzen


Dieser Post wurde am 27.05.2004 um 19:43 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.05.2004, 14:50 Uhr
virtual
Sexiest Bit alive
(Operator)



--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.05.2004, 15:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich schätze mal da

szZeichen schon ein pointer ist, lieferst du dem ReadFile einen Pointer auf den Pointer... Vielleicht ist das das Problem
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.05.2004, 16:04 Uhr
~mat
Gast


vielen dank für deine antwort!

hast vielleicht ne idee wie ich es richtig machen könnte?

matthias
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.05.2004, 16:15 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


naja wenn du das als array deklarierst ist der arrayname selber ja schon ein pointer.. in dem fall dann also nicht die adresse übergeben sondern nur den arraynamen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.06.2004, 09:57 Uhr
~mat
Gast


Danke! Hab den Fehler gefunden…..

Das Problem war, dass die Zeit für das Warten auf Antwort zu kurz war.

Matthias



sTo.ReadIntervalTimeout = MAXDWORD;
sTo.ReadTotalTimeoutMultiplier = 1;
sTo.ReadTotalTimeoutConstant = 2;
sTo.WriteTotalTimeoutMultiplier= 1;
sTo.WriteTotalTimeoutConstant = 2;
if(!SetCommTimeouts((HANDLE)hFile,&sTo))
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: