ASCII dönüşümü hakkında

Başlatan mrcrbg, 19 Mayıs 2013, 19:19:51

mrcrbg

Merhabalar, ben bir gsm modül ile çalışıyorum. Pic ile modülü haberleştirmeye çalışıyorum. Modülden okuduğum veriler ASCII şeklinde geliyor. Gelen verileri nasıl karaktere çevirebilirim. Örneğin modül komut gönderdiğimde ascii olarak OK cevabı vermesini bekliyorum. Gelen ascii karakter kodlarını nasıl   O ve K gibi karakterlere dönüştürebilrim.

Her karakter kodu için ASCII tablosundan yararlanıp bir dünüşüm fonksiyonu yazmak zorunda mıyım?

sadogan

Görüntülemede ne kullanıyorsun
LCD ise zaten direk görmen gerekiyor

mrcrbg

LCD de görüntülemek için sormuyorum. gelen veriyi;

if(gelendata1='O' && gelendata2='K')
{ flag=1;}

gibi bir şartta kullanacağım. bu durumda data'yı aldığımda ascii kodunu karaktere çevirmem gerekmiyor mu ? Aldığım veriyi karakter'e çevirmeden bu karşılaştırmayı yapabilir miyim ?

FEHMİ_ASM

        LCD de görüntülemek için söylemiyorum;

        Ascii kod, ilk aldığınız ya da veri hattındaki kod'un karakter karşılığıdır. Karaktere çevirmeye çalıştığınız, ascii kod'a henüz çevrilmemiş hex kodu olmasın? Eğer öyle değil ise bir çevirme yapmanıza gerek yok.

mrcrbg

#4
ya aslında tam hakim değilim bu kısma daha detaylı anlatayım.
Ben pic ile sim908den gps verisi okuyacağım. gps verileri nmea formatında yollanıyor. nmea da ascii karakter iletiyor. Dolayısıyla ben modüle bir komut gönderdiğimde bana "OK" yanıtı verecek. peki bana gönderdiği veriler 'O' ve 'K' mi olacak? yoksa bunların karşılığı olan '79' ve'75' mi gönderecek? Eğer  '79' ve '75' gönderecekse benim bunları 'O' ve 'K' ye çevirmem gerekiyor mu? Gerekiyorsa nasıl çevirebilirim, kısa bir yolu var mı?





FEHMİ_ASM

   Modülden size gelecek yanıt "12" ise, bu ya hexadecimal ya da decimal dir. Bunu belirtmemişsiniz.

   - Eğer hex ise, alıcı algoritmanızda direkt, ( - ki muhtemelen hex12 dir,,,)
   - Eğer decimal ise, sayıyı dec'12' veya hex'0C' olarak sorgulayın.

   Ayrıca 12 sayısını hiçbir durumda bölmenize gerek yok ve doğru da olmaz.
   *SOH, STX fonksiyonları ile ilgili bilgim yok, konuyla ilgili de olabilir, ayrıca araştırın.


kudretuzuner

Alıntı yapılan: mrcrbg - 20 Mayıs 2013, 19:44:01
ya aslında tam hakim değilim bu kısma daha detaylı anlatayım.
Ben pic ile sim908den gps verisi okuyacağım. gps verileri nmea formatında yollanıyor. nmea da ascii karakter iletiyor. Dolayısıyla ben modüle bir komut gönderdiğimde bana "12" yanıtı verecek. peki bana gönderdiği veriler '1' ve '2' mi olacak? yoksa bunların ascii karşılığı olan 'SOH' ve'STX' mi gönderecek? Eğer  'SOH' ve 'STX' gönderecekse benim bunları '1' ve '2' ye çevirmem gerekiyor mu? Gerekiyorsa nasıl çevirebilirim, kısa bir yolu var mı?
İnsallah sorunumu net olarak anlatabilmişimdir. bu kısımda takılıp kaldım.
Merhaba,
Modülün yolladığı 12 değeri birkaç şey ifade eder. Daha doğrusu Hex'12' mi? Dec'12' mi? Siz en iyisi gelen Byteları yazarsanız yardımcı olmaya çalışayım.Bu arada PC tarafındaki yazılımınız hazır mı? Kabul ediyorum özel bir projeye benziyor ama detaylı paylaşım yaparsanız detaylı da bilgi alabilirsiniz.
Amatör

fatih6761

Alıntı yapılan: mrcrbg - 20 Mayıs 2013, 19:44:01
ya aslında tam hakim değilim bu kısma daha detaylı anlatayım.
Ben pic ile sim908den gps verisi okuyacağım. gps verileri nmea formatında yollanıyor. nmea da ascii karakter iletiyor. Dolayısıyla ben modüle bir komut gönderdiğimde bana "OK" yanıtı verecek. peki bana gönderdiği veriler 'O' ve 'K' mi olacak? yoksa bunların karşılığı olan '79' ve'75' mi gönderecek? Eğer  '79' ve '75' gönderecekse benim bunları 'O' ve 'K' ye çevirmem gerekiyor mu? Gerekiyorsa nasıl çevirebilirim, kısa bir yolu var mı?
Buradaki OK yanıtı sırayla size 'O' ve 'K' olarak gelecektir. " işareti string'i , '' işareti karakteri ifade eder. 'O' ile 79 ve 0x4F aynı şeydir. Modülden hangisi geliyor derseniz hepsi doğrudur. Veri hattından 01001111 verisi gelir. Bu veri hex tabanda 4F'e, ondalık düzende 79'a denktir. Modülden '3', '5' gibi sayı gelmişse ve siz bunun değerini decimal 5 veya 0x05 olarak istiyorsanız yapmanı gerekn '0' çıkarmaktır.

http://www.simcom.us/act_admin/supportfile/SIM908_AT%20Command%20Manual_V1.01.pdf
Bölüm 1.4.5 : AT komutları uyumluluğu olduğundan döndürülen komutlar "OK" gibi gelir. Yani gelenVeri[0] == 'O' gibi bir karşılaştırma yapabilirsiniz.

Kolay gelsin...

mrcrbg

yardımlarınız için çok teşekkürler. sonunda anladım nasıl olduğunu  :)