Bildirimler
Tümünü temizle

Can bus float veri gönderimi

2 Yazılar
2 Üyeler
0 Likes
135 Görüntüleme
Forum forum,topluluk forumu,devreyakan,devreyakan forum
(@karavela_1538)
Seçkin Üye
Katılım : 9 ay önce
Gönderiler: 14
Konu başlatıcı  

İki arduino arasında Can bus ile veri iletimi gerçekleştiriyorum float verilerin ondalıklı kısımları 00 olarak geliyor. Örneğin 12.45 veri gönderiyor 12.00 gözüküyor sorun ne olabilir?(Bütün değişkenler float olarak tanımlı. Can baud 500kbps 8mhz)


   
Alıntı
devreyakan
(@devreyakan)
Yönetici Admin
Katılım : 4 sene önce
Gönderiler: 65
 

Merhaba, yüksek ihtimalle gönderme kısmında float olarak gönderdiğinizi düşünüyorsunuz ama int olarak gidiyor. Kodunuzu görmeden yorum yapmam çok zor fakat örnek kodları paylaşabilirim, siz de kodunuzu bu örneklere göre düzenlersiniz.

Union yöntemi ile

Gönderim:

union myval { 
  float fl; 
  int8 bytes[4]; 
} 

fl = 0.14; 
putc(bytes[0]); 
putc(bytes[1]); 
putc(bytes[2]); 
putc(bytes[3]); 

Alım:

union myval { 
  float fl; 
  int8 bytes[4]; 
} 

bytes[0] = getc(); 
bytes[1] = getc(); 
bytes[2] = getc(); 
bytes[3] = getc(); 
printf("%f", fl);

Pointer kullanarak

Gönderim:

int8 *fl_ptr; 
float fl; 

fl = 0.14; 
fl_ptr = &fl; 
putc(*fl_ptr++); 
putc(*fl_ptr++); 
putc(*fl_ptr++); 
putc(*fl_ptr); 

Alım

int8 *fl_ptr; 
float fl; 

fl_ptr = &fl; 
*fl_ptr++ = getc(); 
*fl_ptr++ = getc(); 
*fl_ptr++ = getc(); 
*fl_ptr = getc(); 
printf("%f", fl); 

   
CevapAlıntı
Paylaş: