NMEA DATA Stream

Başlatan WhiteTigerTR, 10 Eylül 2018, 18:38:02

WhiteTigerTR

Arkadaşlar merhaba;

Hi-Target QMini A7 üzerine 3rd party uygulama yazmaya çalışıyorum.
Cihaz Diffsettool isimli bir program aracılığı ile doğruladığı koordinat bilgilerini NMEA data olarak paylaşıyor diye öğrendim.
Teorikte seri port dinler gibi data alabilmem gerektiğini düşünüyorum çünkü difsettool un ayarlarında ip adresi, port bilgilerinin yanısıra seri port ve baudrate
gibi bilgiler bulunmakta

Fakat pratikte gün içinde ne yaptıysam dinleme gerçekleştiremedim.

Konu hakkında tecrübesi olan varsa yada okumam gereken makaleler gibi yönlendirme yapabilecek varsa çok sevinirim
desteğiniz ve paylaşımınız için şimdiden teşekkür eder iyi günler dilerim.

kartal_0689

GPS okuma için U-blox firmasının LEA-6s modülünü kullanmıştım. Şimdi Quectell firmasının ürettiği L86 GNSS modülünü deneyeceğim ama yazılımını bitirmedim.
LEA-6s UART okuma için örnek yazılım aşağıdadır.

NMEA protokolü için detaylı kod açıklamalarını bu linkte bulabilirsin. https://www.gpsinformation.org/dale/nmea.htm


varSignalCounter : word;   DataType : array [0..5] of char;   NMEA     : array [0..71] of char;   Temp1, Temp2, Temp3, Receive : byte;   SignalFaultBit : bit;   Uart2_Counter : longint;   Uart2_CounterText : string[20];Procedure Start_Register_Config(); begin      Delay_ms(500);            ADPCFG := 0xFFFF;            TRISA  := 0xFFFF;      TRISB  := 0xFFFF;      TRISC  := 0xFFFF;      TRISD  := 0xFFFF;      TRISF  := 0xFFFF;            Delay_ms(10);             //  5432109876543210      TRISA  := %1111111111111111;      TRISB  := %1110000011111111;      TRISC  := %1111111111111111;      TRISD  := %1111111111111100;      TRISF  := %1111111111011100;            Delay_ms(50);            PORTA := 0x0000;      PORTB := 0x0000;      PORTC := 0x0000;      PORTD := 0x0000;      PORTF := 0x0000;                             //  5432109876543210      IPC0             := %0111000000000000;      IPC1             := %0000001100000000;            T2CON            := 0x8020;      T2IE_bit         := 1;      T2IF_bit         := 0;      PR2              := 23437;            INT0IF_bit    := 0;      INT1IE_bit    := 1;   // external interrupt enabled      INT1IF_bit    := 0;   // flag cleared      NSTDIS_bit    := 1;                        Delay_ms(50);            Temp1                  := 0;      Temp2                  := 0;      Temp3                  := 0;      DataType[0]            := ' ';      DataType[1]            := 'G';      DataType[2]            := 'P';      DataType[3]            := ' ';      DataType[4]            := ' ';      DataType[5]            := ' ';      SignalCOunter          := 0;      SignalFaultBit         := 0;            UART2_Init(9600);      UART1_Init(9600);            // Initialize UART module at 9600      URXISEL_1_U1STA_bit := 0;      NSTDIS_bit          := 1;             // No nesting of interrupts      U1RXIF_bit          := 0;             // Ensure interrupt not pending      U1RXIE_bit          := 1;             // Enable USART Receiver interrupt      Uart2_Counter       := 0;      Seconds             := 0;            end;//************************************************************************************************************procedure UartInterrupt(); iv IVT_ADDR_U1RXINTERRUPT; ics ICS_AUTO;begin    SignalCounter := 0;    Operation_Led := not Operation_Led;    if (Temp1 =0) then     begin          Receive := UART1_Read();          if (Receive = '$') then            begin                 Temp1 := 1;                 Temp2 := 2;            end;     end;    if (Temp2 = 2) then      begin          UART1_Read_Text(DataType, ',', 6);          Temp2 := 3;          Temp3 := 3;          Temp1 := 0;      end;    if ((DataType[2] = 'G')and(DataType[3] = 'G')and(DataType[4] = 'A')) then //GPGGA      begin           if (Temp3 = 3) then             begin                  UART1_Read_Text(NMEA, '*', 100);                  Temp3 := 4;                  Temp2 := 2;                  Temp1 := 0;             end;      end;  U1RXIF_bit := 0;               // Set RCIF to 0  end;//************************************************************************************************************procedure Timer2Interrupt(); iv IVT_ADDR_T2INTERRUPT; // GPS okuma hatası için begin    T1IF_bit         := 0;  // 100ms    //Enter your code here    Inc(SignalCounter);    if (SignalCOunter >= 10) then      begin          SignalCOunter   := 20;          SignalFaultBit  := 1;      end else      begin          SignalFaultBit  := 0;      end; end;  While (TRUE) do   begin           OERR_bit := 0;             // Set OERR to 0        FERR_bit := 0;             // Set FERR to 0        Uart2_RD_Pin := 1;        Delay_ms(10);                Inc(Uart2_Counter);        LongIntToStr(Uart2_Counter, Uart2_CounterText);                UART2_Write_Text(' GPS Module');        UART2_Write(#10);        UART2_Write(#13);        UART2_Write_Text(('Clock:')+NMEA[0]+NMEA[1]+':'+NMEA[2]+NMEA[3]+':'+NMEA[4]+NMEA[5]);        UART2_Write(#10);        UART2_Write(#13);        UART2_Write_Text(('Latitude:')+NMEA[10]+NMEA[11]+NMEA[12]+NMEA[13]+NMEA[14]+NMEA[15]+NMEA[16]+NMEA[17]+NMEA[18]+NMEA[19]+NMEA[21]);        UART2_Write(#10);        UART2_Write(#13);        UART2_Write_Text(('Longitude:')+NMEA[23]+NMEA[24]+NMEA[25]+NMEA[26]+NMEA[27]+NMEA[28]+NMEA[29]+NMEA[30]+NMEA[31]+NMEA[32]+NMEA[33]+NMEA[35]);        UART2_Write(#10);        UART2_Write(#13);        UART2_Write_Text(('Altitude:')+NMEA[47]+NMEA[48]+NMEA[49]+NMEA[50]+NMEA[51]+NMEA[53]);        UART2_Write(#10);        UART2_Write(#13);        UART2_Write_Text(('Satellite:')+NMEA[39]+NMEA[40]);        UART2_Write(#10);        UART2_Write(#13);        UART2_Write_Text(('Comm.Counter:')+Uart2_CounterText);        UART2_Write(#10);        UART2_Write(#13);        UART2_Write_Text('/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*');        UART2_Write(#10);        UART2_Write(#13);        Uart2_RD_Pin := 0;   end; // while end
TURKEY/ANK

WhiteTigerTR

Merhaba öncelikle yanıtınız için teşekkür ederim.

Gönderdiğiniz kodu inceleyeceğim

iyi günler, iyi çalışmalar dilerim.

Powered by EzPortal