getch() fonksiyonu negatif sayı dönüyor.

Başlatan Emre005, 07 Temmuz 2013, 22:49:35

Emre005

C# gönderdiğim sayıları pic tarafında getch ile alıyorum sayılar 128 den küçük iken hiç bir sorun yok ancak 128 ve 129 gönderdiğim zaman pic e -128 ve -129 geliyor. Anladığım kadarıyla getch işaretli tamsayı dönüyor. Bunun bir çaresi yok mudur 129 gönderdiğimde 129 alabileyim?

C# kısmı
private void Resim_Click(object sender, EventArgs e)
        {
            int i=0;
            byte[] Res = {127,128};
            
            try
            {
                if (serialPort1.IsOpen == false)  //Seri port açık değilse seri port açılıyor
                {
                    serialPort1.Open();           //Seri porttan veri iletişimi böylece başlamış oluyor   
                }
                while (i < 2)
                {
                    serialPort1.Write(Res, i++, 1);
                }
                
            }
            catch
            {
                MessageBox.Show("Bağlantı kurulamadı! Lütfen girdiğiniz port değerlerini kontrol edin:" + serialPort1.PortName.ToString() + "," + serialPort1.BaudRate.ToString());
                return;
            }
        }

CCS C
int i,j, k;
unsigned int d[2];
unsigned int32 y=0;

 
char yazi[80];
#int_rda
void serihaberlesme_kesmesi()
{  
   
   for(y=0;y<2;y++)
   {
   d[y]=getch();
   
   }
   sprintf(yazi,"deger=%d deger=%d",d[0],d[1]);
   glcd_text57(5,5, yazi, 1, ON);

  disable_interrupts(int_rda);
}

Salih

#1
Sayın da problem yok. Sprintf fonksiyonun da %d yazdığın için sayıları işaretli (Signed decimal)
olarak işlem yapıyor.
%d yerine %u kullanırsanız, düzelir. (%u , Unsigned).

burak ozturk

#2
ccs c manuel den sordugum sorunun cevabını ögrendigimden ileti silinmiştir.
happy coding.

Emre005