Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: koray692 - 06 Şubat 2016, 15:37:10

Başlık: UART tane gelen bilgileri çözümleme ??
Gönderen: koray692 - 06 Şubat 2016, 15:37:10
merhaba arkadaşlar ben gps ten bilgileri alıyorum usart üzerinden. Örnek bir kod buldum gelen bilgileri çözümleyebilecek ama bu kod sanki biraz işlemciyi gereksiz yere çok oyalayacakmış gibi geldi sizlerinde görüşünüzü almak istedim.Çok deneyimim olmadığı için alternatif bir seçenekte bulamadım.

//PA9 USART1_TX            pa10_rx
// Variables
int received = 0;
char DataType[] = "GPXXX";
char NMEA[] = "$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
char receive;
// End Variables


void main()
{

  UART1_Init(56000);              // Initialize UART module at 56000 bps
  Delay_ms(100);                  // Wait for UART module to stabilize

    while(1) {
if (UART1_Data_Ready() == 1) {
receive = UART1_Read();
if (receive == '$')  // Check if sentence begins.
{
      received = 0;
      do{
        if (UART1_Data_Ready() == 1)
        {
         UART1_Read_Text(DataType, ",", 10);  // Capture GPXXX word
         received = 1;
        }
      } while(received == 0);

      // If it is GPGGA Data, then acquire it.

      if ((DataType[2] == 'G') && (DataType[3] == 'G') && (DataType[4] == 'A'))
      {
        received = 0;
        do{
          if (UART1_Data_Ready() == 1)
          {
           UART1_Read_Text(NMEA, "*", 100);   // Stop at *XX checksum data
           received = 1;
          }
        } while(received == 0);
       


}

      receive = "x";
   }
  }
}
}
Başlık: Ynt: UART tane gelen bilgileri çözümleme ??
Gönderen: elektronikDelisi - 06 Şubat 2016, 15:55:20
String kütüphanesinde bulunan "strtok" deyimini kullanabilirsin bu işlem için.

bkz: http://www.cplusplus.com/reference/cstring/strtok/?kw=strtok (http://www.cplusplus.com/reference/cstring/strtok/?kw=strtok)
Başlık: Ynt: UART tane gelen bilgileri çözümleme ??
Gönderen: kantirici - 06 Şubat 2016, 16:40:22
Verileri kesme ile alıp izlemelisiniz. Bu kod uarttan beklenen data gelinceye kadar aynı yerde çakılır.  Mcu başka birşey yapamaz.  Uart bağlantısı kesilirse yine çakılır.
Başlık: Ynt: UART tane gelen bilgileri çözümleme ??
Gönderen: koray692 - 06 Şubat 2016, 17:20:04
evet kesme ile almayı düşünüyorum şimdi araştırıyorum strstr() fonksiyonunu gördüm bu fonksiyonu kullanmayı düşünüyorum
Başlık: Ynt: UART tane gelen bilgileri çözümleme ??
Gönderen: koray692 - 07 Şubat 2016, 14:32:39
kesme olursa yukarda ki kodda sorun çıkmaz değil mi ?
Başlık: Ynt: UART tane gelen bilgileri çözümleme ??
Gönderen: koray692 - 08 Şubat 2016, 14:48:00

(http://s18.postimg.cc/91mzcnhph/Ads_sdfsdf.jpg) (http://postimg.cc/image/91mzcnhph/)

resimde görüldüğü gibi sadece b harfini gösteriyor anlamadım neden böyle olduğunu ?