Akıllı şarj otomatı sunucusu online çalışan akıllı şarj otomatları için geliştirilmiş ve çalışır halde tamamlanmış bir tcp sunucusudur. Yazılımın işlevi kendisine tcp protokolü ile bağlanan şarj otomat cihazlarından gelen verileri toplamak,cihaz üzerindeki sensör kilit v.b modülleri izlemek ve cihazların uzaktan kontrolünü sağlamaktır. Sunucuya birden fazla istemci cihaz eş zamanlı olarak bağlanabilir ve birbirinden bağımsız şekilde kontrol edilebilir.
server.cs:
Bu sınıf içerisinde temel tcp server başlatma yapısı mevcut. Belirlenen ip ve port ile socket sunucusu başlatılarak cihazlar ile iletişim kurmaya hazır hale gelir
Dogrulama.cs:
Bu sınıf içerisinde client doğrulama kontrolleri yapılarak clientin hangi işleme koyulacağına yön verilir. server.cs sınıfı tcp sunucusunu başlatarak ilk bağlantıyı kabul eder burada kabul edilen bağlantılar Dogrulama.cs sınıfına yönlendirilir burada bağlanan istemcinin kimlik doğrulama işlemi yapılır. Bağlanan istemcinin ilk gönderdiği paket ile birlikte gelen kimlik bilgileri veritabanındakiler ile karşılaştırılır kimlik bilgileri kayıtlar ile eşleşirse istemcinin cihaz türü belirlenerek doğrulama kontrolünden geçer ve artık güvenli istemciler listesine eklenerek tüm işlemlere hazır hale gelir.
kripto.cs:
İstemci üzerinden gelen şifreli verilerin şifresi bu sınıf ile açılır ve işlenebilir hale getirilir.
istemcilistesi.cs:
Bu sınıf içerisinde kimlik doğrulamasından başarılı bir şekilde geçen istemciler listelenir. Bu listede bulunan tüm istemciler artık veri alışverişine hazırdır ve listeden istemci seçilerek veri gönderme işlemleri yapılabilir.
Enumlar.cs:
haberleşem json yapısındaki verilerin başlıkları burada belirlenmiştir.
Sarjmatikv1isleyici.cs:
Bu sınıf bağlanan istemcinin(Şarj otomatının) verilerinin işleneceği yerdir. Dogrulama.cs sınıfında kimlik doğrulamasından geçen istemcinin türü belirlenir türü belirlendikten sonra eğer istemci türü sarjmatikv1 ile uyumlu ise artık gelen paketler Sarjmatikv1isleyici.cs sınıfına yönlendirilir ve istemci ile yapılan tüm haberleşme bu sınıf üzerinden yürütülür.
void Islemyap(string GelenString):
void KilitDurumuOku(JObject KilitDurumuJson):
void SoketDurumuOku(JObject SoketDurumuJson)
void CihazBilgisiOku(JObject CihazBilgisiJson):
void HizmetEkle(JObject HizmetJson):
AdminIsleyici.cs:
Dogrulama.cs içerisinde doğrulanan client türü admin ise gelen paketler buraya yönlendirilir. Bu sınıf içerisinde adminden gelen komutler ayrıştırılarak Admin.cs üzerinde gerekli işlemler yaptırılır
Admin.cs:
Adminden gelen komutların işlenip Sarjmatikv1isleyici.cs sınıfına yönlendirildiği bölüm. Burada adminden gelen komutlar işlenerek gerekli işlemler yaptırılır.
Sarjmatik.cs:
Bağlanan istemciyi temsil eden sınıfır. Dogrulama.cs içerisinde bir bağlantı kimlik doğrulamasından geçtikten sonra Sarjmatik.cs sınıfı türetilir ve bağlantı bilgileri, cihaz bilgileri v.s nesne içerisine aktarılır.
İstemcilere veri gönderme işlemi bu sınıf üzerinden yapılır.
public bool HizmetAktifEt(byte HizmetTipi,string ReferansKodu, byte Sure):
Çalıştırıldığında cihaza üzerindeki parametre olarak gönderilen şarj kablosunu aktif etmesi için gerekli bilgi gönderilir. Bu fonksiyon ile cihaz üzerindeki şarj kabloları aktif hale getirileblir.
public void KilitDurumuListele(bool Kilit1,bool Kilit2,bool Kilit3):
Cihaz üzerindeki kilitlerin açık veya kapalı olduğu bilgisini ister
public void SoketDurumuListele(byte[] Acikmi,byte[] NekadarCalissin,byte[] CalismaSuresi):
Cihaz üzerindeki şarj kablolarından birini aktif et
public void AyarListele(byte MinimumAkim,byte MaksimumAkim,byte CalismaParaSayisi,bool Aktif,bool TestModu,bool AnlikIzleme):
Cihaz ayarlarını listele
public bool AnlikIzlemeDegistir(bool AnlikIzleme,int IzlemeAraligi):
Anlık izleme modunu aç kapat
public bool BilgiAl():
Cihaz bilgilerini listele
public bool KilitAc(bool Kilit1,bool Kilit2,bool Kilit3):
Cihaz üzerindeki kilitleri açar veya kapatır
public bool TestModuDegistir(bool TestModu):
Cihazı test moduna alır veya test modunu kapatır
public bool AktifPasifDegistir(bool Aktif):
Cihazı kullanım dışı yapar veya kullanıma alabililir.
public bool MinimumAkimDegistir (byte MinimumAkim):
Cihaz üzerindeki şarj kablolarının çalışması için gerekli olan minimum akım miktarını ayarlar
public bool MaksimumAkimDegistir(byte MaksimumAkim):
Cihaz üzerindeki şarj kablolarının çalışması için gerekli olan maksimum akım miktarını ayarlar
public bool CalismaParaSayisiDegistir(byte ParaSayisi):
Cihazın kullanılması için gerekli para sayısını değiştirir
public bool CalismaSuresiDegistir(byte sarjsuresi):
Cihazın çalışma süresini ayarlar
public bool IslemSifresiDegistir(string sifre):
Cihaz üzerinden kilit açma v.b işlemler yapabilmek için gerekli şifreyi değiştirir
public bool BaglantiKopar():
Cihaz bağlantısını koparır```