PC-Programmierung
›
Thread
com port lesen / schreiben zugriffsverletzung
T
tibo
Gast
28.09.2010 11:22
#1874025
Hallo,
ich benutze die serielle com schnittstelle in C (Win32 Anwendung,
VS2010). Eigentlich ein alter Hut. Will ich jedoch schreiben oder lesen
erhalte ich immer eine Zugriffsverletzung beim schreiben an position
0x00000000. Für mich ist das nicht nachvollziehbar. Die Kommunikation
funktioniert reibungslos über Terminal. Hat jemand einen Tipp?
1 serialHandle = CreateFile ( L"COM5" , GENERIC_READ | GENERIC_WRITE , 0 , NULL , OPEN_EXISTING , 0 , NULL );
2
3 serialParams . DCBlength = sizeof ( DCB );
4
5 printf ( "%i \n " , GetCommState ( serialHandle , & serialParams ));
6 serialParams . BaudRate = 115200 ;
7 serialParams . ByteSize = 8 ;
8 serialParams . StopBits = ONESTOPBIT ;
9 serialParams . Parity = NOPARITY ;
10 printf ( "%i \n " , SetCommState ( serialHandle , & serialParams ));
11 sprintf_s ( statusLine , 160 , "Baudrate: %i kb/s \n " , 115200 );
12 printf ( statusLine );
13
14 printf ( "%i \n " , GetCommTimeouts ( serialHandle , & serialTimeouts ));
15 serialTimeouts . ReadIntervalTimeout = 50 ;
16 serialTimeouts . ReadTotalTimeoutMultiplier = 10 ;
17 serialTimeouts . ReadTotalTimeoutConstant = 50 ;
18 serialTimeouts . WriteTotalTimeoutMultiplier = 10 ;
19 serialTimeouts . WriteTotalTimeoutConstant = 50 ;
20 printf ( "%i \n " , SetCommTimeouts ( serialHandle , & serialTimeouts ));
21
22 char tx = 0x00 ;
23
24 WriteFile ( serialHandle , & tx , 1 , bytesWritten , NULL );
P
Peter
Gast
28.09.2010 11:25
#1874037
tibo schrieb:
> WriteFile(serialHandle, &tx, 1, bytesWritten, NULL);
wo kommt bytesWritten her?
T
tibo
Gast
28.09.2010 11:36
#1874055
1 HANDLE serialHandle ;
2 DCB serialParams ;
3 COMMTIMEOUTS serialTimeouts ;
4 LPDWORD bytesRead = 0 , bytesWritten = 0 ;
ist oben definiert.
P
Peter
Gast
28.09.2010 11:38
#1874060
tibo schrieb:
> COMMTIMEOUTS serialTimeouts;
> LPDWORD bytesRead = 0, bytesWritten = 0;
LPDWORD sind zeiger, das darst du so nicht machen.
mach mal
DWORD bytesRead = 0, bytesWritten = 0;
WriteFile(serialHandle, &tx, 1, &bytesWritten, NULL);
T
tibo
Gast
28.09.2010 11:44
#1874068
Long Pointer, nicht wahr ?!
Danke. Schuld war natürlich so ein verfluchtes Beispiel, wo es so drin
stand.
P
Peter
Gast
28.09.2010 11:46
#1874072
tibo schrieb:
> Danke. Schuld war natürlich so ein verfluchtes Beispiel, wo es so drin
> stand.
das ist halt das Problem wenn man sich das zeug nur kopiert - dabei
lernt man nichts und sucht sinnlose fehler. Wenn man es selber abtippt
denkt man meist noch darüber nach.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
Noch kein Account?
Die Registrierung ist kostenlos und dauert nur eine Minute.
Jetzt registrieren