İki pic arasında Rs232 ile float veri gönderip alma hakkında yardım!

Başlatan eren.guven, 09 Aralık 2014, 19:57:53

fatal16

@meftun senin yaptığın mantıkta yapmaya çalıştım olmadı en son bende şu şekilde yaptım

Verici
      A=A*100;
      data[0]=((long int) A)%256;
      data[1]=((long int) A)/256;
      putc(data[0]);
      putc(data[1]);



Alıcı
   data[0]=getc();
   data[1]=getc();
   A=(data[0]+256*data[1]);


bu şekilde alıcıda istediğim sayıyı alıyorum.
Ancak 100'e böldüğümde virgülden sonraki kısmı atıyor.
senin yazdığın kodu ccs'ye uyarlaman mümkün mü?

Gökhan BEKEN

@fatal16 ben alıcı kısmını c# ta yapıp denedim bir çok projemde. Bu mantık kesme mantığı olduğu için her platformda aynıdır.
Tek değişen kısım burası: sp->Read(veri, 0, 1); //gelen 1byte'lık veriyi alıyoruz
Bu kısım platforma göre değişiklik göterir, gelen en son veriyi alma işini ccs c'ye göre yazın
Şu kısıma gerek yok c# diline özgü: sp->DiscardInBuffer(); //buffer'i temizle
ha bir de şu kısım platforma göre değişir: void UartInterrupt(void) //kesme fonksiyonu


Bunun dışında global değişkenlere dikkat edin, fonksiyonun dışında tanımlanan değişkenleri siz de fonksiyonun dışında tanımlayın.
Yani: eskiVeri,yeniVeri,tamKisim,ondalikliKisim değişkenleri global olacak
Şu değişkenlere 2 byte halinde geliyor ama bunları birleştirip tek bir sayıya çevireceksiniz. LCD'ye string olarak yazacaksanız çevirmenize gerek yok.

tamKisim = asilVeri[0];
ondalikliKisim = asilVeri[1];

Şunu yapmanız yeterli olur
char lcdYaz[16];
sprintf(lcdYaz,"sayi: %d,&d",tamKisim,ondalikliKisim );
edit: sprintf(lcdYaz,"sayi: %d,%d",tamKisim,ondalikliKisim );

Kısaca ccs c'ye uyarlamanız gayet mümkün.
Özel mesaj okumuyorum, lütfen göndermeyin.

fatal16

herkese tesekkurler

gerbayın yaptıgı mantıkla yaptım çalıştı bu sefer :)


agent54

Arkadaşlar hepinizin yarışlarını okudum lakin örneğin bir portundan gelen 8 bitlik veriyi rs232 den başka bir pic e gönderip onuda d portuna bağlı olan ledleri yakacağım yani 8 bit input 8 bit output iki tarafta da aynısı olacak ve karşılıklı uzak io yapmak istiyorum ama bir türlü input_b(x) alıp aktaramadim. Birde transreceiver olarak kullanmak için farklı bir algoritma kullanmak gerekirmi