BU YAZILIMDA HATA NERDE?

Başlatan sozkarabacak, 21 Ağustos 2009, 10:19:21

sozkarabacak

SELAMLAR,
Bu forumda ETE kullanıcı isimli arkadaşımızın DTMF ile ev otomasyonu uygulaması için yazdığı kodları kendi yaptığım uygulamada kullanmak üzere sadeleştirdim. Ama sonuç alamadım. Kodların çalışmayan sade hali aşağıdadır. Sistemin çalışma mantığı şudur: İşlemci ilk programlandığında röle açma şifresi 1453 olarak belirlenmiştir bu değer dahili eproma yazılmıştır. #9 girilip ardından eski şifre ardından yeni şifre girilince şifre değişmektedir. 7676 şifresi master şifredir şifre unutulunca pic işlemcinin ilk programlandığı değere döndürmektedir şifreyi yani 1453'e. Buraya kadar sadece röleyi açmayı denedim yazılma daha kapama kısmını eklemedim çünkü bu noktaya kadar çalıştıramadım. Çalışsaydı Devamını getirecektik.

Bu yazılıma son halini verdiğimde algoritmanın şu şekilde olmasını planlıyorum.
1453 ilk açma şifresi 1numaralı röle için
1071 ilk kapama şifresi 1numaralı röle için
1453#yeni şifre 1numaralı röle  için açma şifresi değişti
1071#yeni şifre 1numaralı röle  için kapama şifresi değişti
aynı işlemi 2numaralı röle  içinde farklı şifrelerle yapmak istiyorum.
Yardımcı olacak arkadaşlara teşekkürler.
Aslı ETE kullanıcı isimli arkadaşa ait olup benim sadeleştirdiğim yazılım.(Bu haliyle çalışmıyor.)
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [E.T.E]                                           *
'*  Notice  : Copyright (c) 2005 Ete]                           *
'*          : All Rights Reserved                               *
'*  Date    : 02.06.2005                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
PORTA=0:PORTB=0
TRISB=%11111111   'PortB.0 giriş diğerleri çıkış yapıldı.
TRISA=%00000000   'A portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                      'işlemci 16F628                                
@ DEVICE pic16F628A, WDT_OFF              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
'-----------------------------------------------------------------
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'-----------------------------------------------------------------
SIFRE  VAR WORD
RAKAM  var WORD
TEMP   VAR WORD
BASKA  VAR WORD
ZAMAN  VAR WORD
SURE   VAR word
SAYI   VAR BYTE
DURUM  VAR BYTE
BIRLER VAR BYTE
ONLAR  VAR BYTE
YUZLER VAR BYTE
BINLER VAR BYTE  
CIK    VAR BIT
SYMBOL CIKIS1=PORTA.1
SYMBOL CIKIS2=PORTA.2
SYMBOL CIKIS3=PORTA.3
symbol CIKIS4=PORTA.4
SYMBOL CIKIS5=PORTA.5
SYMBOL ISD =PORTA.6
SYMBOL ROLE=PORTB.7
SYMBOL VALDAT=PORTB.0
SYMBOL BUZZER=PORTA.7

'--------------------------------------------------------------------------
DATA @ 0,1,4,5,3
PAUSE 200
CLEAR
read 0,SAYI:PAUSE 10
IF SAYI=$FF THEN
   SIFRE=1453
   GOSUB SIFREYAZ
endIF 
READ 0,BINLER
READ 1,YUZLER
READ 2,ONLAR
READ 3,BIRLER
SIFRE=BINLER*1000+YUZLER*100+ONLAR*10+BIRLER
'--------------------------------------ANA--------------------------------------
BASLA:                                                                   
PASWORD:   RAKAM=0:GOSUB SIFREAL
           IF CIK=1 THEN BITIR
           IF RAKAM=7676 THEN
              SIFRE=1453
              GOSUB SES2
              GOSUB SES1
              GOSUB SES2:gosub ses1
              GOSUB SIFREYAZ
              GOTO  ROLEKONTROL
            ENDIF   
            IF RAKAM=SIFRE THEN
            GOSUB SES2:pause 50
            GOSUB SES1:pause 50
            GOSUB SES1:gosub ses1
            GOTO ROLEKONTROL
            ENDIF 

ROLEKONTROL:    GOSUB ALBILGI
                IF CIK=1 THEN BITIR
                IF SAYI=12 THEN ACMA  '#
                IF SAYI=11 THEN KAPAT '*
                gosub ses2
                GOTO BASLA
ACMA:     
          GOSUB ALBILGI
          IF CIk=1 THEN BITIR
          IF SAYI=0 THEN
          gosub ses3
          GOSUB EXIT
          GOTO BASLA
          ENDIF 
   
           DURUM=PORTA  
           
           IF SAYI=1 THEN
           IF durum.1=0 THEN 
           GOSUB SES1 
           PORTA=DURUM | %00000001
           goto ROLEKONTROL
           ENDIF
           ENDIF
           
           IF SAYI=2 THEN
           IF durum.2=0 THEN
           GOSUB SES1:GOSUB SES1
           PORTA=DURUM | %00000010
           goto ROLEKONTROL
           ENDIF  
           ENDIF      
                 
           IF SAYI=9 THEN        '#9
           GOSUB SIFREAL
           GOSUB SES1:gosub ses2
           IF CIK=1 THEN BITIR
           IF RAKAM=SIFRE THEN 
           GOSUB SES1:GOSUB SES1:GOSUB SES2
           GOSUB SIFREAL
           IF CIK=1 THEN BITIR
           SIFRE=RAKAM
           GOSUB SES1:gosub ses2
           gosub SIFREYAZ
           ENDIF
           ENDIF
           GOTO ROLEKONTROL    
        
                  
KAPAT:     GOSUB ALBILGI
           IF CIK=1 THEN BITIR
           durum=PORTA
           
           IF SAYI=0 THEN
           GOSUB SES3
           PORTA=DURUM & %11000000  '*0
           ENDIF   
 
           IF SAYI=1 THEN
           IF durum.1=1 THEN
           GOSUB SES2
           PORTA=DURUM & %11111110
           goto ROLEKONTROL
           ENDIF
           ENDIF   
              
           IF SAYI=2 THEN
           IF durum.2=1 THEN
           GOSUB SES2:GOSUB SES2
           PORTA=DURUM & %11111101
           goto ROLEKONTROL
           ENDIF
           ENDIF  
 
SIFREAL:  GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=SAYI*1000
          GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=RAKAM+SAYI*100
          GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=RAKAM+SAYI*10
          GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=RAKAM+SAYI
          RETURN      

ALBILGI: 
         SURE=0:ZAMAN=0
         WHILE VALDAT=0
         SURE=SURE+1
         PAUSEus 270
         IF SURE=65500 THEN
         CIK=1:RETURN
         ENDIF
         WEND       
               
SAYIAL: SAYI=0
        WHILE VALDAT=1
        SAYI.0=PORTA.4
        SAYI.1=PORTA.3
        SAYI.2=PORTA.2
        SAYI.3=PORTA.1
        WEND
        IF SAYI=10 THEN SAYI=0
        RETURN


SIFREYAZ:TEMP=SIFRE          
         BINLER=TEMP DIG 3
         YUZLER=TEMP DIG 2
         ONLAR =TEMP DIG 1
         BIRLER=TEMP DIG 0
         WRITE 0,BINLER:PAUSE 10 
         WRITE 1,YUZLER:PAUSE 10
         WRITE 2,ONLAR :PAUSE 10
         WRITE 3,BIRLER:PAUSE 10
         RETURN
          
SES1: SOUND BUZZER,[110,12]:pause 30:RETURN
SES2: SOUND BUZZER,[95,12] :pause 30:RETURN
SES3: SOUND BUZZER,[85,25] :Pause 30:RETURN         

BITIR:  GOSUB EXIT:GOTO BASLA:RETURN          
EXIT :  SURE=0        
        CIK=0        
        RAKAM=0
        LOW ROLE
        LOW ISD
        gosub ses2
        gosub ses2
        GOSUB SES3
        GOSUB SES3
        RETURN      

End


Bu yazılımla kullandığım baskı devre:

http://picasaweb.google.com/33elektronik http://www.33elektronik.tr.cx MSN: [email]sukruozkarabacak@hotmail.com[/email]

ete

Sozkarabacak,

Programı biraz fazla sadeleştirmişsin. Dolayısıyla çalışması için kritik olan bazı satırlarıda silince tabiiki program çalışmaz hale gelmiş.
Benim program telefon hattından çalışacağı için başlangıçta bir ana şifre sorgulama bölümü bulunmaktadır. Bu bölüm doğru cevap ile aşılırsa sonra röle kontrolüne geçilmektedir.
Senin açıklamalarından anladığım kadarı ile bu sistemi başka şekilde kullanacaksın. Dolayısıyla programa ilk girişte yada direk olarak;
- 1. röle açma şifresi (Muhtemelen 1453) verilince 1. röle açsın
- 1. röle kapama şifresi (1071) verilince 1. röle kapatsın
- 2. röle açma şifresi (xxxx) verilince 2. röle açsın)
- 2. röle kapatma şifresi (xxxx) verilince 2. röle kapatsın
- 1. röle açma şifresi değiştirme yani 1453#  bilgisi verilince 1. röle açma şifre değiştirmeye geçilsin yada değiştirilsin
- 1. röle kapatma şifresi değiştirme yani 1071# (veya 1071*) bilgisi verilince 1. röle kapatma şifresi değiştirilsin
- aynı şekilde 2. röle açma ve kapatma şifreleri değiştirme işlemleri yapılsın
istiyorsun. Bu açıklamalarından anladığım şeydir. Lütfen doğruluğunu teyid edin ve varsa ilaveleri belirtin.

Burada önemli olan bir konuyu atlamamak gerek. Bütün bu işlemler bir ön şifre kontrolünden geçtikten sonramı yapılacak yoksa direk bu bilgiler girilerek ne isteniyor ise o mu yapılacak.?

Birde açma komutu girşlerinde baş tarafa ben # işareti vermiştim Kapatmada ise * işaretini kullanmış idim. Buna benzer bir uygulama gereklimidir ?.

Bu dediklerimi açıklarsan yardımcı olmaya çalışacağım. Ancak bu istediklerin programın mantığını epeyce değiştirecektir. Bu nedenle çok acil olarak istemeyeceğini umuyorum. Elimden geldiğince boş zamanlarımda yapmaya çalışacağım ve ne zaman biteceği konusunda en ufak bir fikrim yok.
Ama global bir fikir verme açısından 1-4 gün arasında bir sürede bitebilir.
Programın alacağı şekle bakılırsa üniversal bir işte kullanılması mümkün gözükmüyor. O nedenle bana kalırsa konu çok fazla kişiyi ilgilendirmiyor. O nedenle özel mesaj atıp neyi nasıl istediğini daha detaylı anlatırsan daha uygun olur gibi geliyor.


Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

sozkarabacak

SELAMLAR,
İlginize teşekkür ederim. Bizim kullanacağımız sistemde bir ön şifre gerekmemekte. Sadece 4 adet farklı şifre ile iki adet röle açılıp kapanacak. Ayrıca istendiğinde şifre değiştirilebilinecek. Birde işlemlerin gerçekleştiği beep sesi ile bir uyarı şeklinde olsa iyi olur gerekli algoritmayı size özel mesaj olarak yolladım. Teşekkür ederim. Kolay gelsin.
http://picasaweb.google.com/33elektronik http://www.33elektronik.tr.cx MSN: [email]sukruozkarabacak@hotmail.com[/email]

Ruzgarbey

ETE hocamızın dtmf kontrollü yazılımını geçen yıl cep telefonlu kontrol sistemi için uyarladım vede gayet güzel çalıştıburadan kendisine çok teşekkür ediyorum.sizin sorunuza gelince fazla koda ihtiyac duymadan çok bait bir şekilde çözebilirsiniz.ilk olarak 5 adet word tipinde değişkene ihtiyacınız var. şu şekilde : şifre1,şifre2 şifre3 şifre4 masterkey gibi.
telefon açıldığında kısa bir bip sesi ile karşı tarafa telefonun açıldığını ve şifre beklendiği ikazı vereceksiniz.yani telefon açıldığında bip sesi verip şifreal alt etiketine yönleneceksiniz.

SIFREAL:  GOSUB ALBILGI
         IF CIK=1 THEN RETURN
         RAKAM=SAYI*1000
         GOSUB ALBILGI
         IF CIK=1 THEN RETURN
         RAKAM=RAKAM+SAYI*100
         GOSUB ALBILGI
         IF CIK=1 THEN RETURN
         RAKAM=RAKAM+SAYI*10
         GOSUB ALBILGI
         IF CIK=1 THEN RETURN
         RAKAM=RAKAM+SAYI
         RETURN      

ALBILGI:
        SURE=0:ZAMAN=0
        WHILE VALDAT=0
        SURE=SURE+1
        PAUSEus 270
        IF SURE=65500 THEN
        CIK=1:RETURN
        ENDIF
        WEND        
               
SAYIAL: SAYI=0
       WHILE VALDAT=1
       SAYI.0=PORTA.4
       SAYI.1=PORTA.3
       SAYI.2=PORTA.2
       SAYI.3=PORTA.1
       WEND
       IF SAYI=10 THEN SAYI=0
       RETURN
burada yapmanız gereken şifre aldan sonra
RAKAM=7676 THEN
SAYI1=1453 'ROLE1 DEFAULT KEY
WRITE 0,SAYI1 DEG 3 :PAUSEUS 10
WRITE 1,SAYI1 DEG 2 :PAUSEUS 10
WRITE 2,SAYI1 DEG 1 :PAUSEUS 10
WRITE 3,SAYI1 DEG 0 :PAUSEUS 10
SAYI2=1071 ' ROLE1 KAPATMA DEFAULT KEY
WRITE 4,SAYI2 DEG 3 :PAUSEUS 10
WRITE 5,SAYI2 DEG 2 :PAUSEUS 10
WRITE 6,SAYI2 DEG 1 :PAUSEUS 10
WRITE 7,SAYI2 DEG 0 :PAUSEUS 10
ENDIF
BURADA MASTERKEY GİRİLİNCE AÇMA KAPATMA KEYLERİNİ DEFAULT YAPTIK.
AÇMA KAPATMA İÇİN İSE YİNE SAYIAL ETİKETİNDEN SONRA RAKAM SORGULAMA APACAĞIZ.

IF RAKAM = 1453 THEN ROLE1=1
IF RAKAM=1071 THEN ROLE1=0
ŞİFRE DEĞİŞTİRME ALGORİTMASINI SAYI ALDAN YAPACAKSINIZ.ODA SAYIALDA
IF SAYI=10 THEN SAYI=0 SATIRINI SİLECEKSİNİZ VE ANA KONTROLDE ŞU ŞEKİLDE YAPILACAK

IF RAKAM=1453 AND SAYI=10 THEN
GOSUB SİFREAL
______ YENİ SİRE YAZMA KOMUTLARI
ENDIF.

Görüldüğü gibi ETE hocamızın yazdığı komutlar çok işimize yaramaktadır..yardımım oldu ise ne mutlu bana.saygılarımla..
Hayatta En Hakiki Mürşid İlimdir. M.K. ATATÜRK