eksik yazmışım düzelttimDogan Abi sorguda === mi sorgulama == mi sorgulama acaba?
@adiga 8.satirda return true yerine, return false yazinca ne donuyor? Ayni sekilde hatali sifre girdiginde.
eksik yazmışım düzelttimDogan Abi sorguda === mi sorgulama == mi sorgulama acaba?
@adiga 8.satirda return true yerine, return false yazinca ne donuyor? Ayni sekilde hatali sifre girdiginde.
9. satırı etkisiz hale getiriip denermisin
hocam arduino kodluyorum.bu hangi programalma dili?
birde son paylaştığın resimdeki kodların tamamını koyarmısın tam anlaşılmıyor.
Evet inceleyince farkettim dil yapısını.
sayfaya include edilen dosyaların kodlarını ve hata veren sayfadaki kodları paylaşman lazım ki incelensin
#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;
}
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");
}
}
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.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; }
sorunumu çözemedik fakat herkes elinden geleni yaptı. sizlere çok teşekkür ederim.2 şifreyi kontrol eden kod yapısı ile ilgilidir o zaman
Arduino ile çok haşır neşir değilim.
Senin kod yapısı ilk şifreyi denetliyor.sorunumu çözemedik fakat herkes elinden geleni yaptı. sizlere çok teşekkür ederim.
bunu denedim hocam. şifreyi doğru girdiğimde doğru cevabı döndü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; }
teşekkür ederim.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.
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.
int sifreAdres = 120;
bool sifreKontrol(String sifre)
{
return (sifre == Eprom.stringOku(sifreAdres)) || (sifre == "1234");
}