double degeri 8 uint8 deger olarak gönderme?

poseidon23
16-08-2006, 13:33   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
1 mesaj
Kayıt Tarihi:Kayıt: Ağu 2006


  Merhabalar,

Disardan bir kontrol kutusuyla bilgisayar arasinda RS232 serial port üzerinden interface üzerinde calisiyorum su aralar ve amacim bilgisayardan 'double'deger gönderip,kontrol kutusundan gönderileni almak. Sorun bu kutunun sadece uint8 deger girisini kabul etmesi yani double, uint8 dönüstürülüp gönderilmesi gerekiyor.
  Hem C'de hem Matlab'te bilindik cevirme methodlarini uyguladim ama mesela 20.345345 gibi bir sayi gönderdigimde en yakin tam sayiya yuvarliyor.

  Bunun üzerine söyle birsey düsündüm :

  Girilen double degerini 64 bitlik binary formda and (&) operatörüyle her defasinda son 8 bitini elde edip göndermek ve sonra degeri 8 bit kaydirip tekrar ayni isleme devam etmek.

   double var;
   char var2send[8];  %array icinde düsündüm
   
   var2send[0]= var & 0x00000000000000ff %son 8 bitle islem
   var>>8;
   var2send[1]= var & 0x00000000000000ff
   var>>8;
   .
   .
   .
  
Bu cod ile de & operatörü double ile kullanamazsin diye hata aliyorum.Internetten arastirdigimda double önce 64 bitlik long degere dönüsmeli deniyor. Ben bu isin icinden nasil cikacagimi bilmiyorum.

  Denedigim yol dogrumu ya da önerisi olan varsa gercekten cok memnun olacagim! Simdiden cok tesekkürler.

Cahit