Bu programda yanlışık varmı bakarmısnız lütfen

Başlatan togier, 03 Mayıs 2012, 14:02:36

togier

Abi ben kara vericem  dicem şifresi bunun 4 haneli açma dtmf ile açılsın 2 haneli dtmfkoduyla kapan sın.

ete

Sen vereceksin de bunu programa  nasıl bildireceksin onu soruyorum.
Ete

togier

İşte abi  çözemediğim nokta çözsem iş bitcek zaten.

tolga


ete

Bunu tahmin etmiştim. O yüzden sana öneride bulundum.
Şifre kaydını bir tuş ile yapıyorsun. Acma şifresi için ayrı kapatma şifresi için ayrı butonların var.
Bu durumda her şifre kaydında şifrenin bittiği adresten bir sonrasına $FF kayıt et. Böylece şifre hane sayısına kayıt ettiğin şifre boyutu ile karar vermiş olursun. Örnekle açıklayayım.
Diyelimki şifre giriyorsun;
12345 girdin ve ACMA şifresi kayıt butonuna bastın. Böylece girilmiş olan 12345 şifresi epromun;
0 nolu adrese=1
1 nolu adrese=2
2 nolu adrese=3
3 nolu adrese=4
4 nolu adrese=5
5 nolu adrese=$FF bilgileri yazılacak.
Şimdi bir açma işlemi yaptıracağız.
Önce şifremizi epromdan okuyacağız.
For I=0 to 6
  Read 0,TEMP
  IF TEMP=255 then CIK
   ACMA[I]=TEMP
Next
CIK:
    HANE=I-1
    IF HANE=255 THEN HANE=0
RETURN
Bu program ile ACMA(0)=1
ACMA(1)=2
ACMA(2)=3
ACMA(3)=4
ACMA(4)=5
olarak okunacak ve ACMA[6)=255 olduğundan Hane=6-1=5 olarak okunmuş olacaktır.
Şimdi Girilecek şifre hane sayımız=5 olduğuna göre 5 defa şifre sayısı almam gerekecektir. SOnunda Okunan ile ACMA değerleri aynı ise Şifre tamam demek olur. Değilse şifre yanlış olur.

Benim düşündüğüm budur. Birde ilave bir buton daha koyarak yapılabilir ama onda karışıklık artar diye endişeliyim.
Şifre hane rakamlarını tek bir alt programla almak mümkün. Birde sayac çalıştırılarak alma işleminin kaç defa yapılacağına karar verebilirsin.
Örnek;
Sifreal:
GOSUB SIFREOKU  (yukarıda yazdığım bölüm çalıştırılıp hem şifre okunacak hemde hane sayısı belirlenecek)
SAYAC=0
AL:
     GOSUB SIFREBAK
     OKUNAN[SAYAC]=SAYI
     SAYAC=SAYAC+1 
     IF SAYAC= HANE THEN KARSILASTIR         
    GOTO AL

KARSILASTIR:
     For I=0 to HANE
        IF ACMA[I]<>OKUNAN[I] THEN UYMADI
     next
     Led=1
     Goto BASLA
UYMADI:
Led=0
Goto basla

 
SIFREBAK:
         SAYI=0
         WHILE STD=0:WEND
         SAYI=q4*8+q3*4+q2*2+q1
         WHILE STD=1:WEND
         RETURN
       

Ete


togier

Abi ben bu projeyi biraz erteleyeyim en iyisi her şey için çok teşekkkürler.

ete

Erteleme konusunda kararı sen vereceksin elbette. Ama iyice düşün bu istediğini yapmak için halledilmesi gereken epeyce sorun mevcut.
Birincisi dediğim gibi girdiğin şifrenin kaç hane olduğunu alete nasıl anlatacaksın.
İkincisi normal şifre girerken girdiğin şifrenin Açma içinmi yoksa kapatma içinmi olduğunu alete nasıl anlatacaksın.
Sorunları daha sıralamak mümkün ama en önemlileri bunlar. Sabit hane sayısı ile şifre yollamak bütün sorunları çözüyor.
Madem bir fikir düşündün çözümünüde sen düşünmek zorundasın.

Ete

togier

Evet abi  biraz daha ilerleteyim yazılımı öle gireyim bu işe ben görünüşte çok basit gibi geliyo ama daldıkça dalıyo insan.

Powered by EzPortal