Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
UART dan anlamsız veri geliyor
#3
(09-03-2020, Saat: 08:11)frmman Adlı Kullanıcıdan Alıntı: Gönderme satırınızı aşağıdaki gibi düzenleyip tekrar denermisiniz.
Not: Baudrate, parity, doğru fiziksel bağlantı gibi hususları hatırlatmayı gerekli görmüyorum.

HAL_UART_Transmit(&huart2,(uint8_t*)com_giden,strlen(com_giden),10); 

strlen de hata alırsanız yukarıya
#include <string.h> i eklemeyi unutmayın.

Interrupt ile haberleşen UART içerisinde bu şekilde interrupt kullnmadan haberleşme yapmak mümkün mü ? Uygun mu?
(Eleştiri değil bilmediğim için soruyorum)

Bu kodu da denediim sonuç aynı. Aynı bilgisayarda farklı projenin sorunsuz bağlandığını gördüm.
Şaşkınım, anlam veremiyorum. Projeyi yeniden create edip deneyeceğim.

Bu sorundan farklı olarak şöyle bir sıkıntım var.
Interrupt ile gelen UART datasını uint_8 içinden char dizisine aktarıyorum.
Bilgisayardan şöyle bir komut dizisi gönderiyorum:

<10-8-0-1>
Bu komutu char dizisini atmak için < ve > işaretini arıyorum:

int bas,bit=0;
for (int k = 0; k < 12; ++k) {
 if (com_gelen[k]=='<') bas=k+1;   //< işaretinin yeri
 if (com_gelen[k]=='>') bit=k;     //> işaretinin yeri
char komut[12]  dizisini temizliyorum:

memset(komut, NULL, sizeof(komut));

uint_8 olarak gelen datayı komut char dizisini içine atıyorum:,
HAL_Delay(100);
    int kk=0;
    for (int k = bas; k < bit; ++k){
    komut[kk] = com_gelen[k];
    kk++;
                      }
ardından komut char dizsi üzerinde string parse işlemlerini yapıyorum.
Bu noktada normalde while içinde idöngü tamamlanınca döngü sonunda com_gelen i null yapıyorum:

memset(com_gelen, NULL, sizeof(com_gelen));

buraya kadar komut sorunsuz çalışırsa bir sonraki döngüde hatasız devam ediyor.
ANCAK;

eğer bir sıkıntı olursa işlem

memset(com_gelen, NULL, sizeof(com_gelen));

satırına ulşamadığından bu değişken null yapılamıyor ve bir sonraki uart datsı geldiğinde en sondaki boş karakterden itibaren yazmaya başlıyor, Şöyleki:
Sorunsuz çalışırsa uart dan gelen verinin görünümü
qDvKeo.png
Eğer sorun oluşursa gelen data en son boş byte dan itibaren yazılmaya başlıyor şöyle:
ZnP1be.png
sorunu çözmek için bu for döngüsünde bir çözüm bulmak yada gelen veriyi yeniden pare etmem gerekiyor.

 int bas,bit=0;
              for (int k = 0; k < 12; ++k) {
              if (com_gelen[k]=='<') bas=k+1;
              if (com_gelen[k]=='>') bit=k;

                    }

her zaman komut char dizisi içine < işaretinden > işaretine kadar olan kısım yazılmalı bi üstteki for döngüsünü yada
gelen datayı yeniden parse etmem gerekiyor.

kinci resimdeki gibi en son byte dan itibaren veriyi com_gelen uint_8
değişkenine yazdığı için için hemen üstteki < ve > iaretlerini arayan for döngüsü doğru < işaretinin dizi içerisindeki yerini > işaretinden sonra verdiğinden ben
<10-8-0-1>

şeklinde parse etmek için data beklerken
<10-8-

bu şekilde data alınca işleme devam edemiyorum. Her iki resimdede data gelmiş olsa da sorunsuz şekilde nasıl parse edebilirim?

uint8_t com_gelen[12];
Değişkenine her veri gelişinde verinin her zaman 0 indexden itibaren yazılması mümkün mü?

Tecrübe ve tavsiyenizi duymayı çok isterim.
Genelde ingilizce klavye ile ileti gönderiyorum.
Cevapla


Bu Konudaki Yorumlar
UART dan anlamsız veri geliyor - Yazar: 41linea41 - 08-03-2020, Saat: 20:32
UART dan anlamsız veri geliyor - Yazar: frmman - 09-03-2020, Saat: 08:11
Cvp: UART dan anlamsız veri geliyor - Yazar: 41linea41 - 09-03-2020, Saat: 19:14
Cvp: UART dan anlamsız veri geliyor - Yazar: frmman - 10-03-2020, Saat: 16:14
Cvp: UART dan anlamsız veri geliyor - Yazar: 41linea41 - 11-03-2020, Saat: 20:53
Cvp: UART dan anlamsız veri geliyor - Yazar: 41linea41 - 06-06-2020, Saat: 09:39
UART dan anlamsız veri geliyor - Yazar: engerex - 06-06-2020, Saat: 12:59
Cvp: UART dan anlamsız veri geliyor - Yazar: 41linea41 - 06-06-2020, Saat: 13:11
UART dan anlamsız veri geliyor - Yazar: engerex - 07-06-2020, Saat: 10:39
Cvp: UART dan anlamsız veri geliyor - Yazar: 41linea41 - 07-06-2020, Saat: 14:51
UART dan anlamsız veri geliyor - Yazar: arsl01 - 29-06-2020, Saat: 22:19
UART dan anlamsız veri geliyor - Yazar: 41linea41 - 29-06-2020, Saat: 22:56
UART dan anlamsız veri geliyor - Yazar: arsl01 - 30-06-2020, Saat: 03:10



Konuyu Okuyanlar: 1 Ziyaretçi