CCS C ile Heksadesimal sayı gönderme sorunu?

Katılım
27 Ağu 2009
Mesajlar
13
Puanları
1
Yaş
35
Merhaba arkadaşlar,

Pic üzerinden RS232 ile RF modeme veri göndermem gerekiyor kullandığım modem UFM-A12-WPA .

Bu modemde data göndermek için $+R+F+DATA+E+N+D+CR+LF formatında datanın gönderilmesi gerekli. Modem ASCII formatında gelen bu karakterleri hex olarak tanıyor. Gönderilmesi gereken hex kodları 0x24 + 0x52 + 0x46 + DATA + 0x45 + 0x4E + 0x44 + 0x0D + 0x0A bunları göndrirken printf komutu ile gönderiyorum.

Şimdi benim sorunum $ R F DATA E N D yi string olarak gönderiyorum bunları modem zaten karakterler kendi hex leri ile kullanıldığı için tanıyor ama CR VE LF yi string olarak gönderdiğimde modem bunu 'C' ve 'R' nin hex değeri olarak görüyor. Printf komutu ile direk hex i gönderirsem 0x4E yi ve 0x44 ü string olarak alıyor ne yapacağımı bilemedim yardım ederseniz sevinirim.

Modem datasheet ektedir.

Şimdiden teşekkür ederim.
 

Ekli dosyalar

  • UFM-A12WPA KILAVUZ.PDF
    1.2 MB · Görüntüleme: 21
Merhaba arkadaşlar,

Pic üzerinden RS232 ile RF modeme veri göndermem gerekiyor kullandığım modem UFM-A12-WPA .

Bu modemde data göndermek için $+R+F+DATA+E+N+D+CR+LF formatında datanın gönderilmesi gerekli. Modem ASCII formatında gelen bu karakterleri hex olarak tanıyor. Gönderilmesi gereken hex kodları 0x24 + 0x52 + 0x46 + DATA + 0x45 + 0x4E + 0x44 + 0x0D + 0x0A bunları göndrirken printf komutu ile gönderiyorum.

Şimdi benim sorunum $ R F DATA E N D yi string olarak gönderiyorum bunları modem zaten karakterler kendi hex leri ile kullanıldığı için tanıyor ama CR VE LF yi string olarak gönderdiğimde modem bunu 'C' ve 'R' nin hex değeri olarak görüyor. Printf komutu ile direk hex i gönderirsem 0x4E yi ve 0x44 ü string olarak alıyor ne yapacağımı bilemedim yardım ederseniz sevinirim.

Modem datasheet ektedir.

Şimdiden teşekkür ederim.

Örnek kod parçaları koyarsan daha anlaşılır bişey olabilir. Benim önerim printf ile tek parçada göndereceğine, putc ile byte byte gönder, istediğini decimal istediği hex ve ascii olarak gönderebilirsin
 
İlgilendiğiniz için teşekkür ederim..

unsigned char CR=0x0D,LF=0x0A;

int16 VoltajDegeri1 ; // Data tanımlamadı ADC üntesinden alınan voltaj değeri için


//Döngü içerisinde gönderiliyor

delay_ms(310); // İki komut formatı gönderimi arasındaki süre

printf("$"); // 0x24
delay_us(5);
printf("R");
delay_us(5);
printf("F");
delay_us(5);
printf("%Lx",VoltajDegeri1); // DATA
delay_us(5);
printf("E");
delay_us(5);
printf("N");
delay_us(5);
printf("D");
delay_us(5);
printf("%X",CR); // 0x0D
delay_us(5);
printf("%X",LF); // 0x0A
delay_us(5);

Benim kullandığım şekil bu aslına burda sıkıntı çıkaran kısım 0x0D ve 0x0A hex sayılarını gönderdiğimde RF modemin gelen ifadenin string olarak görüp bunu hex e çevirmesi yani bu hex değeri 0x0D değilde 30(0) , 44(D) olarak algılaması.

0x24 hex sayısını gönderirkende sıkıntı yaşıyordum ama 0x24 ün AscII de değeri olduğundan o değeri gönderdim "$" .
 
İlgilendiğiniz için teşekkür ederim..

unsigned char CR=0x0D,LF=0x0A;

int16 VoltajDegeri1 ; // Data tanımlamadı ADC üntesinden alınan voltaj değeri için


//Döngü içerisinde gönderiliyor

delay_ms(310); // İki komut formatı gönderimi arasındaki süre

printf("$"); // 0x24
delay_us(5);
printf("R");
delay_us(5);
printf("F");
delay_us(5);
printf("%Lx",VoltajDegeri1); // DATA
delay_us(5);
printf("E");
delay_us(5);
printf("N");
delay_us(5);
printf("D");
delay_us(5);
printf("%X",CR); // 0x0D
delay_us(5);
printf("%X",LF); // 0x0A
delay_us(5);

Benim kullandığım şekil bu aslına burda sıkıntı çıkaran kısım 0x0D ve 0x0A hex sayılarını gönderdiğimde RF modemin gelen ifadenin string olarak görüp bunu hex e çevirmesi yani bu hex değeri 0x0D değilde 30(0) , 44(D) olarak algılaması.

0x24 hex sayısını gönderirkende sıkıntı yaşıyordum ama 0x24 ün AscII de değeri olduğundan o değeri gönderdim "$" .

Tahminimce unsigned char olarak tanimladigin değişkeni int olarak tanimlarsan duzelecektir. Veya son iki printf yerine putc(0x0d) ve putc(0x0A) yazmayi deneyebilirsin
 
Yardımınız için teşekkür ederim. putchar komutu ile sorunu çözdüm.
 
herhangi bir veriyi udeayala göndermek için bu ekleri tek satırda toplayabilir miyiz?
 

Forum istatistikleri

Konular
129,808
Mesajlar
930,307
Kullanıcılar
452,611
Son üye
mfagca

Yeni konular

Geri
Üst