[c++] GPS usb

valentino861
Dovrei utilizzare un'antenna gps con alimentazione usb in un progetto. Cercando in rete ho trovato questo:

http://www.marshallsoft.com/mgc4c.htm

Praticamente delle librerie per comunicare con il gps ma solo tramite porta seriale, io invece lo dovrei fare con l'usb.
Sapete se esistono cose analoghe ma con interfaccia usb? Oppure se esistono modelli commerciali di gps con allegati API per windows?

Grazie

Risposte
valentino861
ho letto un pò in giro...potrei risolvere con una porta seriale virtuale?

valentino861

valentino861
Ok alla fine ho acquistato il gps 18 usb della garmin e sto usando queste librerie

http://www.stempsoft.com/

Bah vediamo se ci riesco, mi devo studiare classi e oggetti per capirci qualcosa

valentino861
Ok allora ecco cosa sto facendo, fino al commento l'ho praticamente copiato da un file di esempio, il resto l'ho scritto io, il problema è che non riesco a farlo funzionare, cioè non mi accede ai dati di posizione e velocità PVT:

// SimpleProductData.cpp
//

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"

#include "GarXfaceAll.h"

int main()
{
	GarXface4::GpsUsbDevice  usbDev;

	/*StempSoftMessageLogger::MsgLoggerFileDevice *pMsgLoggerFileDevice;
	
	//The log can be turned on for recording diagnostic messages
	pMsgLoggerFileDevice = new StempSoftMessageLogger::MsgLoggerFileDevice("SimpleProductData.log");
	StempSoftMessageLogger::SetMessageLoggerDevice(pMsgLoggerFileDevice);*/

	GarXface4::UsbDeviceNameList lst;

	GarXface4::UsbDeviceName *n=lst[0];
			
	usbDev.SetDeviceName(lst[0]->GetDeviceName());
	
	GarXface4::Gps gps;
		
	try
	{
//Qui ho scritto io
		printf("E' acceso? %i\n\n\n",gps.IsOpen()); 
		gps.Open(&usbDev);
		printf("GPS acceso");
		
		GarXface4::ProductData *pProductData = gps.GetProductData();
		
		printf("Product Description: %s\n",pProductData->GetDescription());
		printf("Model ID: %d\n",pProductData->GetProductID());
		printf("Software Version: %f\n\n",pProductData->GetSwVersion());

		printf("E' acceso? %i\n",gps.IsOpen());  
		
		gps.PvtDataOn();

		GarXface4::PVTdata *pvt;

		pvt = gps.GetPVTdata();

		printf("E' connesso il GPS? %i\n",pvt->GetGpsConnect());
		printf("Dati validi? %i\n",pvt->GetValidData());

		printf("Alitudine: %f\n",pvt->GetAltitude());

		double m_dLatitude = GarXface4::Math::WGS84::radiansToDegrees(pvt->GetLatitude());
		printf("m_dLatitude %f\n\n",m_dLatitude);

		getchar();
		
	} catch(GarXface4::Exceptions::GxException e) {
		e.ReportError();
	}
	

	return 0;
}



Praticamente le classi per accenderlo (gps.Open) funziona, mentre mi dive che i dati non sono validi quando cerco di accedere ai dati PVT.

Il file di esempio che c'è sui dati PVT è un casino, perchè utilizza le MFC per fare una finestrella dove aggiorna in continuo i dati, mentre a me serve una cosa molto molto più semplice

valentino861
sto cercando di riprodurre il file di esempio allegato alle librerie, solamente che in questo progetto viene usata questa funzione

UpdateData(TRUE);

che dovrebbe essere di afxwin.h. Mi sapreste dire cosa fa?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.