TK1985
03.08.2006, 20:50
Hallo zusammen,
Ich versuche derzeit unter C die COM-Schnittstelle anzusprechen. Ich habe zwei Rechner mit einem Nullmodem-Kabel verbunden. Bevor ihr mich jetzt auf Google oder auf einen anderen Beitrag verweist, lest mein Problem erst mal denn das ist etwas ganz spezielles.
Erst mal der Code mit dem ich die Schnittstelle öffene
HANDLE hSerial = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,0,0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
So lese ich von der Schnittstelle:
char szBuff[1];
int i = 0;
char readBuffer[128];
DWORD dwBytesRead = 0;
while (szBuff[0] != 'A') {
ReadFile(hSerial,szBuff,1,&dwBytesRead,NULL);
dwBytesRead = 0;
}
dwBytesRead = 0;
for (i=0; i<128;i++) {
ReadFile(hSerial,&readBuffer[i],1,&dwBytesRead,NULL);
dwBytesRead = 0;
}
Und so schreibe ich auf die Schnittstelle:
char writeBuffer[128];
int i = 0;
for (i = 0; i < 128; i++) {
writeBuffer[i] = 'A';
}
DWORD dwBytesWrite = 0;
WriteFile (hSerial, writeBuffer,128,&dwBytesWrite,NULL);
Das Problem ist jetzt, dass jedes 15.Byte falsch übertragen wird. Alle dazwischen liegenden Bytes werden korrekt übermittelt. Ich hab jetzt die Vermutung, dass das etwas mit dem FIFO-Puffer zu tun hat, der dabei verwedet wird. Kann das sein? Weiß jemand was man dagegen machen kann?
Gruß
Thomas
Ich versuche derzeit unter C die COM-Schnittstelle anzusprechen. Ich habe zwei Rechner mit einem Nullmodem-Kabel verbunden. Bevor ihr mich jetzt auf Google oder auf einen anderen Beitrag verweist, lest mein Problem erst mal denn das ist etwas ganz spezielles.
Erst mal der Code mit dem ich die Schnittstelle öffene
HANDLE hSerial = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,0,0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
So lese ich von der Schnittstelle:
char szBuff[1];
int i = 0;
char readBuffer[128];
DWORD dwBytesRead = 0;
while (szBuff[0] != 'A') {
ReadFile(hSerial,szBuff,1,&dwBytesRead,NULL);
dwBytesRead = 0;
}
dwBytesRead = 0;
for (i=0; i<128;i++) {
ReadFile(hSerial,&readBuffer[i],1,&dwBytesRead,NULL);
dwBytesRead = 0;
}
Und so schreibe ich auf die Schnittstelle:
char writeBuffer[128];
int i = 0;
for (i = 0; i < 128; i++) {
writeBuffer[i] = 'A';
}
DWORD dwBytesWrite = 0;
WriteFile (hSerial, writeBuffer,128,&dwBytesWrite,NULL);
Das Problem ist jetzt, dass jedes 15.Byte falsch übertragen wird. Alle dazwischen liegenden Bytes werden korrekt übermittelt. Ich hab jetzt die Vermutung, dass das etwas mit dem FIFO-Puffer zu tun hat, der dabei verwedet wird. Kann das sein? Weiß jemand was man dagegen machen kann?
Gruß
Thomas