J2ME+GPS (No Emulador)

4 respostas
J

Bem, estou fazendo testes no emulador de um sisteminha que pega uma mensagem do GPS e extrai as coordenadas geográficas.
Eia o código em questão…

public String gpsmsg(){
		String msg = null;

		try{
			CommConnection cc = (CommConnection)Connector.open("comm:com1;baudrate=4800");
			InputStream is = cc.openInputStream();
			OutputStream os = cc.openOutputStream();
			int newdata = 0;
			boolean inicio = false;

			while (newdata!=-1 && !inicio){
				if (newdata=='$'){
					StringBuffer sb = new StringBuffer();
					inicio = true;

					for (int i=0; i<=5;i++){
						sb.append((char)newdata);
						newdata = is.read();
						if (newdata==-1){
							break;
						}
					}
					
					if (sb.toString().startsWith("$GPGLL")){
						
						boolean fim = false;
						inicio = true;
						while (newdata!=-1 && !fim){
							sb.append((char)newdata);
							newdata = is.read();
							if (newdata=='*' || newdata==0x0D){
								fim = true;
							}
						}
						System.out.println(new String(sb));
					}
					else {
inicio = false;
}				}
				newdata = is.read();
			}
			
		} catch (IOException e){
			System.out.println(e.getMessage());
		}

		return msg;
	}

O meu problema é q a mensagem encontrada é desse tipo $GPGLL,N, (Os parametros da latitude e longitude nao aparecem)
Seria porq eu estou testando dentro d ksa e o gps está sem sinal? ou tem algum erro no meu código… O meu GPS é o Garmin Summit da eTrex e eu já configurei pra ele mandar mensagem no formato NMEA a uma taxa d 4800… Alguém já teve um problema parecido?

4 Respostas

R

Tudo bem? Acho que o que pode estar ocorrendo é que vc está lendo uma sentença que realmente não contém as coordenadas que vc quer.

Ao inves de ler $GPGLL, tente ler $GPRMC. Pra saber se vc está recebendo uma mensagem válida do gsp, leia o segundo parametro (A), se ele contiver um “A” a informação é correta, se contiver um “V” o gps recebeu uma informação digamos “incompleta ou vazia”.
Abaixo, coloquei a sintaxe da sentença RMC.
Espero que ajude,
Rafael de Barros

RMC
$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a*hh

RMC = Recommended Minimum Specific GPS/TRANSIT Data

1    = UTC of position fix

2    = Data status (V=navigation receiver warning)

3    = Latitude of fix

4    = N or S

5    = Longitude of fix

6    = E or W

7    = Speed over ground in knots

8    = Track made good in degrees True

9    = UT date

10   = Magnetic variation degrees (Easterly var. subtracts from true course)

11   = E or W

12   = Checksum
D

ahhhhh mas esse pessoal do PJ é mto fera mesmo!! :grin: :grin:

pow! q legal esse tópico! :razz:
achei q o tópico ia ficar sem resposta por se tratar de um assunto complexo e mto especifico!

mas o rafael_db mandou ver na resposta! :grin: :grin:

parabens aí pra vcs caras! :wink:

flw!
abraços!

J

Puxa é verdade, valew msmo rafael pela resposta ao tópico… vou utilizar o RMC entao, seguindo seu conselho mto obrigado!
Mas o q tava acontecendo é q o GPS nao estava mandando as informações pela serial por estar dentro de um local fechado, fiz testes com um laptop ao ar livre (Com o sinal do GPS encontrado) e funcionou direitinho, a mensagem veio completa… tnxs

R

Espero ter ajudado. Passei pelo mesmo problema que vc, não sabia se o gps estava realmente recebendo dados ou não. Mas como mencionei anteriormente, eu ?olho? o segundo parâmetro, se vier um ?V? sei que ele está lendo as coordenadas, se vier um ?A?, sei que não está. Fora que as coordenadas vêem todas zeradas quando o gps não está conectado. Se puder ajudar em alguma outra coisa relacionada a este tópico é só falar.
Um abraço,
Rafael de Barros

OS: Queria aproveitar e usando o Daniel Badawi como ?canal?, agradecer a galera do Portal Java pelo help que volta e meia vcs me dão. Valeu!!!
:grin:

Criado 7 de dezembro de 2004
Ultima resposta 27 de dez. de 2004
Respostas 4
Participantes 3