Seri haberleşme 16 bit sorunsalı

Başlatan vardal57, 10 Haziran 2016, 08:22:22

vardal57

Herkeze merhaba
ccs c de rs232 haberleşme yaparken
Gönderirken

int16 degisken = 5000:
putc(degisken, STREAM);

Şeklinde 16 bit olarak veriyi gönderiyorum sorun yok

Alıcı tarafında ise max 8 bit okuyabiliyorum

Alıcı
gelen=getch(STREAM);

Alıcı tarafında 16 bit nasıl okuyabilirim ?

kantirici

Seri haberleşmede bir defada maksimum 1 byte (8 bit) göndere bilirsin. 16 bitlik değişkeni 8-8 iki defada göndermelisin.

char a = (degisken & 0xFF00)>>8;
putc(a , STREAM);
char a = (degisken & 0x00FF);
putc(a , STREAM);

şeklinde göndere bilirsin. Alıcı tarafta ise iki hamlede ;

u16 gelen=u16(getch(STREAM)<<8);
while(VeriGeldimi()); //Uarttan veri gelinceye kadar bekle
gelen|=getch(STREAM);

şeklinde alınabilir.