C dili BCD to Decimal – Decimal to BCD çevirimi

Yapmakta olduğumuz bir projede kullanacağımız RTC modülü için zaman verilerini decimal değerden BCD (Binary Coded Decimal) formatına çevirmemiz gerekiyordu. Bunun için araştırma yaparken değişik yöntemler gördüm. Bizim projemiz için en uygun yapıyı ise bulamadık. Biz de kalem kağıdı elimize alıp sıvadık kolları.

Bu işlemi itoa() fonksiyonunu kullarak da kolayca yapabiliyorsunuz, ama mikrokontroller ile çalıştığımız için bize en az boyuta sahip kod lazım oluyor. O yüzden bir arayış içerisine girdik.

Projede bize lazım olan yapı için 2 basamaklı sayıların dönüşümünün yapılması yeterli olacaktı. Biz de bu yüzden kodu şişirmeden, sadece işimize yarayacak kadar olan yapıyı oluşturduk. Eğer size kullanmak istediğiniz yerde 2’den fazla basamaklı sayılar için dönüşüm yapmak isterseniz küçük matematik hesaplamaları ile bunu yapabilirsiniz. Biz bu yapı için daha büyük sayılara göre denemelerimizi yaptık ve düzgün sonuçlar aldık.

Aşağıdaki kodu kullanarak Decimal to BCD (Binary Coded Decimal) dönüşümünü yapabilirsiniz.

https://gist.github.com/d72fdcf96426f1b235453513e71101ab

Aşağıdaki kodu kullanarak BCD to Decimal dönüşümünü yapabilirsiniz.

https://gist.github.com/adb3353092c3394d1c5217a05540f2d9

C ve C++ dillerini kullanarak Decimal to BCD ve BCD to Decimal dönüşümlerini yapmanız bu kadar kolay.

cJSON ile JSON Oluşturma

Staj gördüğüm yerde geliştirdiğimiz bir proje için çeşitli cihaz ve sensörlerden alınan verinin belirli bir JSON formatına çevrilerek şirketin Bulut’una (Cloud) aktarılarak oradan düzenlendikten sonra farklı bir şekilde çekilerek görselleştirme işlemi yapmam gerekiyor.

Ben şu an için işin biraz daha başında sayılırım. Ama 3 gündür üzerinde çalıştığım C dili üzerinde verileri JSON formatına çevirme kütüphanelerinden birisi olan cJSON ile yaptığım çalışmayı sizinle paylaşmak istedim. Kütüphane, DaveGamble isimli Github kullanıcısı tarafından paylaşılmış. Dokümantasyonu içerisinde neredeyse her şeye yanıt veriyor. Yanıt vermediği şeyleri de cJSON.h içerisinden rahatlıkla bulduğumu söylemek istiyorum.

Öncelikle yapacağımız işlem için birden fazla cihazımız olacak, bu cihazlara bağlı birden fazla sensörler olacak ve bu sensörler bize veri gönderecek. Genel yapımız bu şekilde olacak.

İlk olarak gerekli kütüphaneleri dahil ederek başlıyoruz. <stdio.h> kütüphanesi standart giriş ve çıkışlar sağladığımız kütüphanemiz, <conio.h> kütüphanesi DOS destekli giriş çıkışları sağladığımız kütüphanemiz (biz sadece getch(); fonksiyonu ile işlem bittiğinden klavyeden bir tuşa basılmadıkça ekranın kapanmamasını sağlamak için kullanıyoruz.), <time.h> rastgele değerler üretirken, bu değerlerin programı çalıştırdığımız andaki zamana bağlı olarak değişmesi için kullanıyoruz ve son olarak <cJSON.h> bizim JSON olayımızı gerçekleştireceğimiz kütüphanemiz.

https://gist.github.com/abeab9281903dd97e2fb2fe5d74e87de

Yukarıdaki kod bloğunu kullanarak ortaya çıkarttığım çıktı şekli ise:

Gördüğünüz üzere kodumuz çoklu cihaz ve çoklu sensör destekler halde. Bunların sayısını istediğiniz kadar artırmak sizin elinizde. Bu projeme bitbucket üzerinden de ulaşabilir ve gerekli dosya ve dokümanları indirebilirsiniz.

C ve JSON ile Cihaz Veri İstasyonu

Kütüphanenin Github adresi