Rs-232 ile 16 bit sayı gönderme?

Başlatan since1990, 21 Kasım 2011, 10:50:46

since1990

Pic ile pcyi haberleştirmek istiyorum. Pt-100 ün üzerindeki gerilimi op-amp ile yükseltip pice verdim. Faka ben bu voltajı 10 bitlik okuyup değerlendirmek istiyorum C# a attırtıyorum sayıyı maximum 255 görüyor. Başka Comtest programları falanda maksimum 255 görüyor. Bİr anda 16 bitlik sayı göndermek mümkünmüdür? ccs için şöyle yazdım

#include  <18f452.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT 
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int16 oku=0;

void main (void)
{
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
enable_interrupts(INT_RDA);  
enable_interrupts(global);

while (1)
{
set_adc_channel(0);
delay_us(10);
oku=read_adc();
while(!adc_done())
{delay_us(10);}

delay_ms(500);
putc(oku);
}


}
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

since1990

Char olarak mı? Yani nasıl karakter karakter mi ? puts(oku);
char oku;
oku=read_adc();
gibi mi?
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

GreeN

printf("%ld",oku);


bu direk göndermez mi?
Terörü Lanetliyoruz.

since1990

Arkadaşlar olmadı. printf yapınca karşıya 49 50 gönderiyor sadece
Gerbay arkadaşımın söylediğinde ise oku yu integer olarak tanımladım sadece 10 gönderiyor onda da??
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

since1990

sayıyı 256 ya bölüp 2 parçada gönderip karşıda birleştiriyorum ama amelelik yapmış olmkta istemiyorum :D KOlayı varsa Yardımlarınızı bekliyorum.
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

GreeN

sprintf(buf, "%ld", oku);


@gerbay'ın kod için %ld şeklinde denermisin.


printf(); için
unsigned int oku;


şeklinde tanımla... ihtimal.
Terörü Lanetliyoruz.

since1990

Peki yakalayan taraf ne olarak yaklasın?
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

since1990

Böyle yapınca olmadı fakat okuyu int16 yapınca çalıştı. Şimdide karşıya 5 tane 8 bitlik sayı gönderiyor :D
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

GreeN

Alıntı yapılan: since1990 - 21 Kasım 2011, 13:34:55
Peki yakalayan taraf ne olarak yaklasın?

string gönderiyorsan yani printf yada gerbay gibi yaparsan gets(); kullanmalısın. char olarak alıyorsun.
Terörü Lanetliyoruz.

since1990

Karşı taraftaki alet pc ama halletim sizin katkılarınızla teşekkürler. Arşivlerde böyle birşey arayan arkadaş olursa diye paylaşıyorum kodlarımıda.;)
#include  <18f452.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT 
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

char buf[16];
int16 oku;

void main (void)
{
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
enable_interrupts(INT_RDA);  
enable_interrupts(global);

while (1)
{
set_adc_channel(0);
delay_us(10);

oku=read_adc();

while(!adc_done())
{delay_us(10);}
delay_ms(500);

sprintf(buf, "%ld", oku);
puts(buf);
}
}


Karşı tarafta şöyle yakalıyor.;
string yazi;
yazi = seriport.ReadLine();
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

EMG81

Alıntı yapılan: GreeN - 21 Kasım 2011, 12:03:44
printf("%ld",oku);


bu direk göndermez mi?

"printf("%ld",oku);" Sanırım bu minik fonksiyonlar stdio.h içerisinden geliyor.

Birisi bana bu kodların detaylarını öğrenmem için kaynak beyan edebilirmi ?