puts() ve gets() problemi

Başlatan piedos, 23 Temmuz 2009, 00:42:28

piedos

bir işlemciden puts() ile string gönderip diğerinden gets() ile alıyorum ancak bir problem var:

puts(txData) fonksiyonu çağrılınca eğer txData içinde herhangi bir yerde sırayla 13 ve 10 değerli karakterler varsa gets fonksiyonu stringi eksik alıyor zaten bunu ccs helpi de doğruluyor:

Alıntı YapReads characters (using GETC()) into the string until a  RETURN (value 13) is encountered.  The string is terminated with a 0.  

peki cözüm ne olabilir?

void main()
{
 
char txData[12] = {1,2,3,4,5,6,13,10,4,3,2,'\0'};
char rxData[12];
char dummy;


// B6 ve B7 sadece işlemcinin o anda RX mi TX mi yapacağını belirtmek için eklendi
//
// 
   
while( input(PIN_B6) == 0 && input(PIN_B7) == 0 );//


if(input(PIN_B6) == 1){//TX işlemcisi
   puts(txData);
}
else if(input(PIN_B7) == 1){//RX işlemcisi
   dummy=gets(rxData);
}
while(1);
}


simülasyonda rxData içeriği
1,2,3,4,5,6,'\0','\0','\0','\0','\0','\0'
olarak görünüyor!
Einstein: "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former."

Okan AKÇA

yapılacak bir şey yok acıkcası microcip derleyicilerine gecmek lazım derleyicini güncelle eski sürümse  olabilir

salih18200

göndermek istedin data 13 olduğu zaman bunun yerine farklı bir sembol gönder karşı taraftada bu sembolü algıladığında 13 olarak işlem yapsın belki bu şekilde çözüm bulunabilir..

ferdem

input.c dosyasını incelerseniz orda gets() fonksiyonun nasıl yazıldığını görebilirsiniz. İsterseniz o fonksiyonu düzenleyerek amacınıza uygun hale getirebilirsiniz ancak başka arızalar baş gösterebilir.

Ben string alacak da olsam seriveri(int_rda) kesmesiyle alıyorum, karakterleri tek tek alıyorum rahat ve sorunsuz oluyor. Şurda bir örnek var:
https://www.picproje.org/index.php/topic,25051

İyi çalışmalar.