arduino veya komutu

9. satırı etkisiz hale getiriip denermisin
Screenshot_13.jpg
 
bu hangi programalma dili?
birde son paylaştığın resimdeki kodların tamamını koyarmısın tam anlaşılmıyor.
 
Dogan abi istedigin tam denenmedi
1728159678462.png

1728159708108.png
 
sayfaya include edilen dosyaların kodlarını ve hata veren sayfadaki kodları paylaşman lazım ki incelensin
 
sayfaya include edilen dosyaların kodlarını ve hata veren sayfadaki kodları paylaşman lazım ki incelensin


şifre sayfası:
Kod:
#include "sifre.h"
#include <EEPROMString.h>

EEPROMString Eprom;

int sifreAdres = 120;
///////////////////////////////////////////////////////////////////////
bool sifreKontrol(String sifre){                // eepromdan mevcut sifre okunur girilen şifre karşılaştırılı
  //if(sifre == Eprom.stringOku(120)){                                         // doğru mu değil mi
  if((sifre === Eprom.stringOku(120)) || (sifre === String("1234"))){

    return true;
  }
  else{
    return false;
  }
}
///////////////////////////////////////////////////////////////////////
bool sifreDegistir(String yeniSifre){                         // şifre değiştirme işlemi - eeproma yeni şifre yazılır
  Eprom.stringYaz(sifreAdres, yeniSifre);
  return true;
}


şifre kontrol fonksiyonunu çağıran :
Kod:
bool smsDenetle(String gelenNo, String gelenMesaj) {
  bool rakamMi = false;
  if (gelenMesaj.indexOf(' ') == 4) {                             // boşluk karakteri 4. index'de ise, yani hem boşluk varmı kontrolü hemde girilen sifre 4 haneli mi
    for (int i = 0; i < 4; i++) {
      if (!isdigit(gelenMesaj.substring(0, 4).charAt(i))) {       // girilen sifre rakamlardan mı oluşuyor
        rakamMi = false;
        break;
      } else {
        rakamMi = true;
      }
    }
    if (rakamMi) {
      if (sifreKontrol(gelenMesaj.substring(0, 4))) {             // format doğru ise sifre kontrol edilir, doğru mu yanlış mı diye
        return true;                                              // yanlış ise sms atılır
      } else {
        SmsGonder(gelenNo, "Sifre yanlis");
        return false;
      }
    } else {
      return false;                                               // boşluk bırakılmaması gibi durumlarda 'format yanlis' diye sms gönderilir,
      SmsGonder(gelenNo, "Format yanlis");                        // komutun alındığı telefon numarasına
    }
  } else {
    return false;                                                 // ilk if kontrolünün yanlış olması durumunda
    SmsGonder(gelenNo, "Format yanlis");
  }
}
 
smsDenetle (String gelenNo, String gelenMesaj);

fonksiyonuna gönderdiğiniz değeri gösteren gelenMesaj içerisindeki veriyi işiniz bitince yani bir sonraki smsDenetle() yi çağırmadan önce temizliyorsunuz değilmi?

Gözünüzden kaçmış olabilir belki, her seferinde içerisinde geçerli şifre olan string değişkeni parametre olarak gönderiyor olabilirsiniz. Paylaştığınız kodlardan ancak bu kadar tahminde bulunabilirim.

Ek not C de string ile işlem yaparken verinin en son karakterinin NULL olması gerekir. Arduino framework bunu nasıl yorumluyor emin değilim. Aktif olarak arduino kullanmıyorum. Bu noktayı gözden kaçırırsanız string karşılaştırmalarında / işlemlerinde problemler ile karşılaşırsınız.

Son bir nokta: sifreKontrol() fonksiyonunu aşağıdaki şekilde değiştirip deneyin. Bu durumda her halükarda şifre hatası almanız gerekir. Eğer almıyorsanız problem kodunuzun başka taraflarında demektir.


C:
bool sifreKontrol(String sifre){
return false;
}
 
Birde kod eklerken, ekleme penceresindeki dil kısmını General Code değilde C yaparsanız yukarıdaki gibi renkli daha anlaşılır olur.
 
smsDenetle (String gelenNo, String gelenMesaj);

fonksiyonuna gönderdiğiniz değeri gösteren gelenMesaj içerisindeki veriyi işiniz bitince yani bir sonraki smsDenetle() yi çağırmadan önce temizliyorsunuz değilmi?

Gözünüzden kaçmış olabilir belki, her seferinde içerisinde geçerli şifre olan string değişkeni parametre olarak gönderiyor olabilirsiniz. Paylaştığınız kodlardan ancak bu kadar tahminde bulunabilirim.

Ek not C de string ile işlem yaparken verinin en son karakterinin NULL olması gerekir. Arduino framework bunu nasıl yorumluyor emin değilim. Aktif olarak arduino kullanmıyorum. Bu noktayı gözden kaçırırsanız string karşılaştırmalarında / işlemlerinde problemler ile karşılaşırsınız.

Son bir nokta: sifreKontrol() fonksiyonunu aşağıdaki şekilde değiştirip deneyin. Bu durumda her halükarda şifre hatası almanız gerekir. Eğer almıyorsanız problem kodunuzun başka taraflarında demektir.


C:
bool sifreKontrol(String sifre){
return false;
}
hocam eepromdaki tek şifre ile zaten yazılım doğru çalışıyor. test etmek için bazen bilerek şifreyi hatalı bazen de doğru giriyorum sorunsuz çalışıyor. sadece 2. bir şifre eklemek istediğimde bu sorunla karşılaşıyorum. şimdi verdiğiniz son kodu deneyecem bakalım ne dönecek.
 
2 şifreyi kontrol eden kod yapısı ile ilgilidir o zaman
Arduino ile çok haşır neşir değilim.
 
sorunumu çözemedik fakat herkes elinden geleni yaptı. sizlere çok teşekkür ederim.
Senin kod yapısı ilk şifreyi denetliyor.

Sen 2. şifre ekleyince sorun oluyor demenden yola çıkarak sorunun çözümü için bir yol izleyebilirsin.

Arduino ile hiçbir tanışıklığım yok, yakında bir set alıp tanışırız umarım.
2. Şifre için hangi değişkenler kontrol edilmeli bir araştır, bulunca bize de anlat öğrenelim
 
smsDenetle (String gelenNo, String gelenMesaj);

fonksiyonuna gönderdiğiniz değeri gösteren gelenMesaj içerisindeki veriyi işiniz bitince yani bir sonraki smsDenetle() yi çağırmadan önce temizliyorsunuz değilmi?

Gözünüzden kaçmış olabilir belki, her seferinde içerisinde geçerli şifre olan string değişkeni parametre olarak gönderiyor olabilirsiniz. Paylaştığınız kodlardan ancak bu kadar tahminde bulunabilirim.

Ek not C de string ile işlem yaparken verinin en son karakterinin NULL olması gerekir. Arduino framework bunu nasıl yorumluyor emin değilim. Aktif olarak arduino kullanmıyorum. Bu noktayı gözden kaçırırsanız string karşılaştırmalarında / işlemlerinde problemler ile karşılaşırsınız.

Son bir nokta: sifreKontrol() fonksiyonunu aşağıdaki şekilde değiştirip deneyin. Bu durumda her halükarda şifre hatası almanız gerekir. Eğer almıyorsanız problem kodunuzun başka taraflarında demektir.


C:
bool sifreKontrol(String sifre){
return false;
}
bunu denedim hocam. şifreyi doğru girdiğimde doğru cevabı döndü
 
Bu şekilde denediğinizde doğru cevabının dönmemesi gerekir. Başka bir yerde hatanız var.
Ne yaptığınızı ve konunun tamamına siz hakimsiniz. Biz sadece olayın bize gösterdiğiniz kısmını görebiliyoruz. Bu haliyle farklı bir öneri aklıma gelmiyor.
 
Bu şekilde denediğinizde doğru cevabının dönmemesi gerekir. Başka bir yerde hatanız var.
Ne yaptığınızı ve konunun tamamına siz hakimsiniz. Biz sadece olayın bize gösterdiğiniz kısmını görebiliyoruz. Bu haliyle farklı bir öneri aklıma gelmiyor.
teşekkür ederim.
 
hocam eepromdaki tek şifre ile zaten yazılım doğru çalışıyor. test etmek için bazen bilerek şifreyi hatalı bazen de doğru giriyorum sorunsuz çalışıyor. sadece 2. bir şifre eklemek istediğimde bu sorunla karşılaşıyorum. şimdi verdiğiniz son kodu deneyecem bakalım ne dönecek.

İlk yazdığın mesaj ve yukarıdaki bilgiye göre, şifreKontrol fonksiyonu aşağıdaki şekilde çalışması gerekir. Aksi takdirde, başka bir hata var.

C:
int sifreAdres = 120;

bool sifreKontrol(String sifre)
{
  return (sifre == Eprom.stringOku(sifreAdres)) || (sifre == "1234");
}
 
Son düzenleme:

Çevrimiçi personel

Forum istatistikleri

Konular
6,950
Mesajlar
118,732
Üyeler
2,822
Son üye
lalemasall

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top