Forum: PC-Programmierung com port lesen / schreiben zugriffsverletzung


von tibo (Gast)


Lesenswert?

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);

von Peter (Gast)


Lesenswert?

tibo schrieb:
> WriteFile(serialHandle, &tx, 1, bytesWritten, NULL);

wo kommt bytesWritten her?

von tibo (Gast)


Lesenswert?

1
HANDLE serialHandle;
2
DCB serialParams;
3
COMMTIMEOUTS serialTimeouts;
4
LPDWORD bytesRead = 0, bytesWritten = 0;

ist oben definiert.

von Peter (Gast)


Lesenswert?

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);

von tibo (Gast)


Lesenswert?

Long Pointer, nicht wahr ?!

Danke. Schuld war natürlich so ein verfluchtes Beispiel, wo es so drin 
stand.

von Peter (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.