Je dois enregistrer les données provenant du GPS. J'utilise le système Windows 7 et le GPS est connecté en utilisant le port USB. J'utilise dialogue visual studio applicationReadFile USB Port série trop lent
données GPS est quelque chose comme ça
"$GPGLL,2219.2500182,N,09019.0118688,E,055547.65,A,A*61"
je dois enregistrer ces données dans le fichier. J'ai complètement passé par this link et ai réglé des paramètres en conséquence.
char buffer[56];
Ceci est mon code pour ouvrir le port
hcomm= CreateFile("COM8",
GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hcomm == INVALID_HANDLE_VALUE)
TRACE("%s","error");
memset(&port, 0, sizeof(port));
port.DCBlength = sizeof(port);
if (!GetCommState(hcomm, &port))
TRACE("getting comm state");
if (!BuildCommDCB("baud=19200", &port))
TRACE("building comm DCB");
if (!SetCommState(hcomm, &port))
TRACE("adjusting port settings");
timeouts.ReadIntervalTimeout = 0;
timeouts.ReadTotalTimeoutMultiplier = 0;
timeouts.ReadTotalTimeoutConstant = 0;
if (!SetCommTimeouts(hcomm, &timeouts))
TRACE("setting port time-outs.");
Et suis la lecture des données comme suit
while(loop which executes after every 20 ms) {
ReadFile(hcomm, buffer, sizeof(buffer), &read, NULL);
if (read){
//code to write data to file
}
Bien que je reçois des données, la vitesse est terriblement faible. Je reçois des données à 10 Hz. Je veux enregistrer les données à 50 lectures/seconde.
Quelqu'un peut-il m'aider?
EDIT: Comme par @ Paul suggestion R, j'ai augmenté la vitesse de transmission 115200. Maintenant, il enregistre les données @ 20 messages/seconde. Mon GPS prend en charge un taux de mise à jour maximum de 20 Hz et 11520 bauds maximum. Si je veux enregistrer des données à 50 messages/seconde, que dois-je faire?
Par exemple, si le taux de mise à jour est de 20 Hz, chaque la lecture est disponible pour 50 ms. Donc, si je lis le port après chaque 20ms, ne devrait-il pas enregistrer chaque entrée deux fois ou dans une proportion appropriée?
Lisez la section "Taux de mise à jour" de [cette page Web] (https://learn.sparkfun.com/tutorials/gps-basics/gps-glossary). –
@HansPassant, s'il vous plaît voir modifier la section à la question – Anonymous
Si le GPS a un taux de mise à jour 20Hz, alors c'est 20 fois par seconde, ce qui signifie que même si vous pourrez lire 50 messages par seconde, vous ne recevrez pas 50 messages uniques . Tenter de lire plus de messages n'est qu'un gaspillage de ressources. –