<>

<>

Frage : Messwert und Einsparung von der seriellen Schnittstelle

Hallo dort,

Im arbeitend an einem Programm, das Daten (eine 1MB Textdatei) von der seriellen Schnittstelle liest und sie zur Scheibe spart. Ich habe zwei Funktionen - das initComm, zum der seriellen Schnittstelle zu initialisieren und das readComm, um Daten vom port.

I zu lesen benötigen Hilfe, wenn sie die Hauptfunktion schreiben, die den COM-Hafen liest und die Daten zur Scheibe spart. Ich habe nicht viel Erfahrung mit c und im nicht zu sure, wenn dieses rechte Weise ist, sie zu tun? möglicherweise kann ich das vollständige Programm innerhalb einer Hauptfunktion tun und nicht mit den initComm und readComm Funktionen stören?

im using laufende Fenster 7 und Anwendung eines PC Microsoft vc++, um den Code zu tun. Der Serienanschluß zwischen den Computern ist RS232.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
#include 
#include 

BOOL fSuccess;
HANDGRIFF hSerial;     //Handle für COM-Hafen

leeres initComm ()
{
COMMTIMEOUTS noblock;
DCB comSettings;	//Various-Porteinstellungen

// initialisieren serielle Schnittstelle
hSerial = CreateFile („COM1“, //Open COM1
		     GENERIC_READ, nur //Read
		     0, //Exclusive-Zugang
	             NULL, //No-Sicherheits-Attribute
		     OPEN_EXISTING, //COM-Hafen existiert bereits
		     0,
	             NULL);
wenn (hSerial==INVALID_HANDLE_VALUE)
{
	printf („unzulässiger Handgriff-Wert %d. \ n“, GetLastError ());
}
//Set-Abschaltung in Milisecs
fSuccess = GetCommTimeouts (hSerial, &noblock);
	noblock.ReadTotalTimeoutConstant = 1;
	noblock.ReadTotalTimeoutMultiplier = MAXWORD;
	noblock.ReadIntervalTimeout = MAXWORD;
fSuccess = SetCommTimeouts (hSerial, &noblock);

//Set-Portparameter
fSuccess = GetCommState (hSerial, &comSettings);
wenn (! fSuccess)
{
	printf („\ nGetCommState Störung! ");
}
	comSettings.BaudRate = 9600;
	comSettings.ByteSize = 8;
	comSettings.fParity = FALSCH;
	comSettings.Parity = NOPARITY;
	comSettings.StopBits = ONESTOPBIT;
 fSuccess = SetCommState (hSerial, &comSettings);
 wenn (! fSuccess) {
	 printf („\ nSetCommState Störung! ");
 }
 printf („Comm-Hafen eingestellt \ n“);
}

//Read-Daten von der seriellen Schnittstelle
Putzfrau readComm ()
{
	Putzfrau inBuffer;
	int bytesRead;
	fSuccess = ReadFile (hSerial, //Handle
			    &inBuffer, //Incoming-Daten
			    1000, //No-Bytes zum zu lesen
			    &bytesRead, //Bytes las
		            0);
	wenn (bytesRead >0)
		RückholinBuffer;
	sonst Rückkehr 0;
}

Antwort : Messwert und Einsparung von der seriellen Schnittstelle

Ich spielte mit es und schließlich fand ich die Lösung:

<>
  
Weitere Lösungen  
 
programming4us programming4us