!! ARKADAŞLAR 10 HANELİ HEX KODU PBP DE İŞLEME???

Başlatan gulbey84, 18 Kasım 2009, 23:15:28

gulbey84

Alıntı yapılan: "ete"Biraz mantığını çalıştırınca hatanı kolaylıkla buldun.
Bir birini takip eden kayıtlarda adres değeride birer birer artmalı değilmi yoksa hep aynı yere kayıt yaparsın. Sende de öyle oluyor idi ve şimdi düzeldi.
Silme işinde benim aklıma gelen şöyle bir metod idi.
Silme yapılacak ise kartların tamamını silip yeniden kart kayıt etmek güzel olurdu diye düşünüyorum.
Ancak teker tekerde silme yapılabilir. Teker teker silme bayağı yüklü bir menü sistemi gerektirir. Senin düşündüğün ise okuttuğın kartın silinmesi şeklinde anlaşılan. Oda bir düşünce.

Okunan kartın silinmesi çok zor değil.
Ben adımları söyleyeyim sen yapmaya çalış bakalım yapabilecekmisin;
1. Önce kartı okut
2. Okunan kart mevcut kayıtlarda varmı bakılsın
3. Kart bulunursa hangi sırada olduğu tespit edilsin. (1-20) arasında hangi sırada olduğu bulunursa;  KAYITSIRA=10+(KAYIT-1)*5 formülü ile mevcut kayıdın silinmesi sağlanır.
Nasıl dersen
FOR I=0 to 4
write kayıtsıra+I,$ff
pause 10
next
komutları bu işi otomatik yapar. Ama bu konumda bir başka sorun ortaya çıkacak. Diyelimki ortadan bir kayıt sildik. Biz kayıt yaparken Kayıt değişkeninin sağladığı bilgiye göre kayıt yapıyorduk. Oda en son kayıt adresini göstereck idi. Bu durumda silinmiş kayıtlar için ayrıca bir kayıt tutmak gerekecek. Onuda şöyle düşündüm.
0 nolu adres yeni kayıt sıra numarası tutuyor
1 nolu adrese kaç tane silinmiş kayıt olduğunu yazarız.
2 nolu adresten itibaren 9 nolu adrese kadar da bu silinmişlerin adreslerini kayıt ederiz.
Bu nedenle yeni kayıt yaparken önce 1 nolu adrese bakarız. Şayet sıfır ise silinmiş kayıt yok demektir. O zaman 0 nolu adresteki kayıt sıra numarasını kullanırız. Ama 1 nolu adreste mesela 2 rakamı var ise 2 tane silinmiş kayıt var demektir. İlki 3 nolu adreste, ikinciside 4 nolu adrestedir.
Daima en sondakini alıp ona yeni kaydı koyarız. SOnrada silinmiş kayıt adedini bir azaltıp yeniden 1 nolu adrese kayıt ederiz. Olur biter.
Hadi kolları sıva sende bir şeyler düşün bakalım.

Ete


ETE HOCAM 2 GÜNDÜR BİRŞEYLER YAPMAYA ÇALIŞIYORUM AMA BU KONUDA BAYA Bİ EKSİĞİM OLDUĞUNU İYİCE ANLADIM...SÖYLEDĞİN ADIMLARDAN YOLA ÇIKARAK BİRŞEYLER YAPMAYA ÇALIŞTIM AMA SONUÇ ALAMADIM...YANİ BURADAKİ AMACIM KARTI OKUTTUĞUMDA OKUNAN KARTIN SİLİNMESİ VE TEKRAR PROGRAMIN NORMAL MODDA ÇALIŞMAYA BAŞLAMASI...DAHA SONRA BOŞALAN KART YERİNE DE YENİ KART KAYIT EDEBİLMEM...AMA BU DÜŞÜNCEMİ KOD OLARAK ORTAYA KOYAMADIM!! HOCAM SON OLARAK BUNUDA BANA YAZABİLİRMİSİN?BEN YİNEDE SENDEN CEVAP BEKLERKEN URAŞICAĞIM...SEVGİLERLE

GULBEY
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

gulbey84

HOCAM DEVRE BAZEN SAPITIYOR DEMİŞTİM...ÇOK KISA SÜRELİ VOLTAJ KESİKLİĞİNDE SAPITIYOR...SANIRIM BUNUN SEBEBİ DE ŞU;

ATMEL KISMINDA DEVREYE İLK ENERJİ VERİLDİĞİNDE İLK OLARAK TASARLAYICININ ADI SOYADI SERİ OLARAK GÖNDERLİYO HOCAM...YANİ DEVEYE ENERJİ VERİLDİĞİNDE PİCE İKİ KELİME BİR YAZI GİRİYOR..SONRA DA BEKLEMEYE GEÇYOR..BİZ KARTI OKUTUNCA DA NORMAL ÇALIŞIYOR...ACABA BUNUN SEBEBİ BUMUDUR...SİZCE BUNU NASIL ENGELLEYEBİLİRİZ...ÇÜNKÜ ATMEL RFİD KISMININ KAYNAK KODLARI BİZDE YOK....SEVGİLERLE
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

ete

Gülbey84,
İstediklerine yarın bakabileceğim.

Programın sapıtmasına bir çözüm bulmak zor gerçekten.
Ancak sigorta ayarları ile oynayarak belki bir şeyler yapılabilir.
Her neyse yarın bakarım.
Bu arada Atmel tarafına müdahale şansımız yok tabiiki. Baştan yolladığı şeylerde önemli değil pic onları almayacaktır zaten. Alsa bir değerlendirmeyecektir.

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

gulbey84

çok sağolun ete hocam...sabırsızlıkla yarın olmasını bekleyeceğim....tabi bende yine uğraşıyorum hocam...sevgilerle
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

gulbey84

ete hcam hatırlatmak amacıyla yazdım bu mesajı.. :) sadece silme işlemini yapoamıyorum hocam...diğer problemler bence pek nemli değil...ona bi çözüm bulabiliriz...ama silme işlemi malum çok önemli..hocam birde 20 adet kayıt yapabiliyoruz demiştik ya...burada eproma (628a) maksimum kaç kayıt yapabiliriz? birde ben kayıt sınırını arttırmak istersem sadece mevcut yazılımdaki değerleri değiştirerek yapabilirmiyim? sevgilerle

gulbey
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

ete

628 eepromuna normalde 50 adet kart kayıt edebilirsin.

Kart kayıt kısmı ile uğraşacağım. Hatta kayıt + silme işini yeniden yapsak fena olmayacak.
Bu durumda varsayımları şöyle belirledim.
Bir adet sildirme kartı ve 1 adet ise yeni kayıt kartı var. Bunların haricindekiler ise normal çalışma ortamında okutuluna kartlar olacaktır.

İşlem şekli olarak da,
Yeni kayıt yapılacak ise önce kayıt kartı okutulacak.
Ardından ise kayıt edilecek kartın okutulması gerekir sanırım öyle değilmi?
Böylece ikinci gelen kart kayıt edilebilir.

Silme işleminde ise,
Önce sildirme kartı okutulacak sonra ardından silinecek kart okutulacaktır.
Böylece ikinci okunan kart kayıtlardan silinecektir.

Bunlara ekleyeceğin bir şey varsa yazarsın.

Kayıt ve silme ksımını açıkladığım şekle göre yeniden düzenledim.
Yeni sisteme göre kayıt sıra numarası tutmayacağız.
Boş olan kayıt da $ff,$ff,$ff,$ff kayıtları vardır düşüncesinden hareket ederek ilk yeni kaydı ilk okunan $ff kayıtlı yere kayıt edeceğiz.
Kartları silerkende mevcut değerleri yerine $ff yazacağız böylece o kayıt silinmiş boş kayıt hüviyetine kavuşacak.

Yeni şekil aşağıdadır. Bak bakalım çalışacakmı. Yalnız ufak bir durum var.
Normalde yeni kayıt yaparken, önce kayıt kartını okutuyorsun, bunu yapar yapmaz program hemen kayıt bölümüne geçip ikinci (kayıt edilecek kartın okutulmasını bekleyecek) orada komut sabit sen kartı okutmada gecikirsen ne yapacak program. Normalde Hserin komutunda bir kaç ms bekler ve bir şey gelmedi ise atlar geçer. Bu nedenle oraya bir komut ilave ettim ama sistem mantığını çok iyi bilmediğim için bu ilave sorunda yaratabilir.
İlave edilen kısım şöyle;
           A=0
           hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
           IF A=0 then KARTKAYIT  'henüz kart okunmadı ise
           GOSUB KAYITBAK
Önce A=0 dyoruz ve Hserin komutunu veriyoruz. Program orada bekliyor. Diyelimki sen kartı okutmada geciktin. Program bir şey okumadan atlayacak ve altta IF A=0 then KARTKAYIT komutunu görüp yeniden okumaya gidecektir.
Şayet kartları okumakta sıkıntı olur ise bu satırı (IF A=0 THEN KARTKAYIT) iptal edebiliriz. Benzeri Kartsil komutunda da yer alıyor.

Ete

aa=$1C:ba=$00:ca=$C7:da=$4F:ea=$72  'Yeni Kayıt kartı
ab=$1C:bb=$00:cb=$C7:db=$86:eb=$A2 'sildirme kartı

BASLA:
      led=1
     
      hserin[hex2 a,hex2 b,hex2 c,hex2 d,hex2 e]
      
      if a=aa and b=ba and c=ca and d=da and e=ea then KARTKAYIT      
      
      if a=ab and b=bb and c=cb and d=db and e=eb then KARTSIL

NORMALMOD:
'okunan kart silme veya kayıt kartı değilse normal okunan kart demektir. Ohalde program buraya gelir 
          gosub KAYITBAK
          IF POZ=1 then 'kart kayıtlı ise 
            ROLE=1:led=1:buzzer=1
            pause 200
            BUZZER=0:PAUSE 700:ROLE=0
            For I=0 to 7
             BUZZER=1:LED=1
             PAUSE 100
             BUZZER=0:LED=0
             PAUSE 100
            NEXT           
          ELSE  'kart kayıtlı değil ise
            ROLE=0
            FOR I=o to 3
              Buzzer=1:pause 500
            next
            buzzer=0
          ENDIF   
          goto basla

KARTKAYIT:
'KAYIT SİSTEMİNDE BOŞ OLAN KAYIT ARANMAKTADIR İLK BYTE $ff İSE O KAYIT BOŞTIR MANTIĞI GEÇERLİ
'VE HEM KART KAYITLIMI HEMDE BOŞ KAYIT VARMI DİYE BAKILMAKTADIR.
            A=0
            hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
            IF A=0 then KARTKAYIT  'henüz kart okunmadı ise
            GOSUB KAYITBAK
            IF POZ=1 then 'bu kayıt var başa dön kayıt yapma
              pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
              goto basla 
            endif
            IF KAYIT=255 THEN 
              FOR I=0 to 5
                led=0:pause 400:led=1:pause 400
              NEXT
              led=1'KAYIT LIMITI DOLDU
              GOTO BASLA
            ENDIF
            KAYITSIRA=10+(KAYIT-1)*5 
            write KAYITSIRA,  A:PAUSE 10
            WRITE KAYITSIRA+1,B:pAUSE 10
            WRITE KAYITSIRA+2,C:pAUSE 10
            WRITE KAYITSIRA+3,D:pAUSE 10
            WRITE KAYITSIRA+4,E
            buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
            KAYIT=KAYIT+1
            WRITE 0,KAYIT
            GOTO BASLA
KAYITBAK:
        POZ=0:KAYIT=255 '
        For I=10 to 105 step 5
          read I,temp
          IF TEMP=$FF THEN KAYIT=I 
          if TEMP=A then
            read I+1,temp
            IF TEMP=B then
              READ I+2,TEMP
              IF TEMP=C THEN
                READ I+3,TEMP
                IF TEMP=d THEN
                  READ I+4,TEMP
                  IF TEMP=e THEN
                    POZ=1 'KAYITLI
                    RETURN
                  endif
                endif
              endif
            endif
          endif
        next
        RETURN

KARTSIL:
        A=0
        hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
        IF A=0 then KARTSIL  'henüz kart okunmadı ise       
        FOR I=10 to 105
        read I,temp
          if TEMP=A then
            read I+1,temp
            IF TEMP=B then
              READ I+2,TEMP
              IF TEMP=C THEN
                READ I+3,TEMP
                IF TEMP=d THEN
                  READ I+4,TEMP
                  IF TEMP=e THEN
                    POZ=1:KAYITSIRA=I 'KAYITLI ve I sıra numarasında kayıtlı
                    RETURN
                  endif
                endif
              endif
            endif
          endif
        next
        temp=0
        RETURN
        IF POZ=0 then
          pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
          goto basla 'bu kart kayıtlı değilki silesin. 
        endif
         A=$FF:B=$FF:C=$FF:D=$FF:E=$FF
         write KAYITSIRA,  A:PAUSE 10
         WRITE KAYITSIRA+1,B:pAUSE 10
         WRITE KAYITSIRA+2,C:pAUSE 10
         WRITE KAYITSIRA+3,D:pAUSE 10
         WRITE KAYITSIRA+4,E
         buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
         GOTO BASLA

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

gulbey84

Alıntı yapılan: "ete"

İşlem şekli olarak da,
Yeni kayıt yapılacak ise önce kayıt kartı okutulacak.
Ardından ise kayıt edilecek kartın okutulması gerekir sanırım öyle değilmi?
Böylece ikinci gelen kart kayıt edilebilir.

Silme işleminde ise,
Önce sildirme kartı okutulacak sonra ardından silinecek kart okutulacaktır.
Böylece ikinci okunan kart kayıtlardan silinecektir.

Bunlara ekleyeceğin bir şey varsa yazarsın.

 
[/code]

hocam aynen dediğiniz gibi...zaten şu anki mevcut sistemimizde bu şekilde çalışıyor...sadece silme işlemimiz yok idi....hemen şimdi yazdıklarınızı inceliyorum...tekrar size döneceğim hocamm...allah sizden yüzbinkere razı olsun!
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

gulbey84

ete hocam sanırım bir sorun var..normal mod güzel çalışıyor..ama kaydetme kısmında bir sorun var gibi...hocam ilk kartı okuttuğumda 12.adrese yazıyor(normal sayarsak 18.sıra. resimde altta) sanırım bikere yanlış yere kaydediyor...daha sonra 2.kartı kaydetmek istedğimde 1.kaydı siliyor onun üzerine yani yine 12.adrese yazıyor...zaten kaydedttğim kartı okuttuğumda da kayıtlı değil gösteriyor...sanırım burada bir sorun var hocam? ben inceliyorum ama baya karışık geldi...

[IMG]http://pic1.resimupload.com/r7/thumb_432819670.bmp[/IMG]
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

ete

Sorunu buldum sanırım.

Kayıt kısmında

KAYITSIRA=10+(KAYIT-1)*5
WRITE KAYITSIRA,  A:PAUSE 10
WRITE KAYITSIRA+1,B:pAUSE 10

satırlarını bul ve
KAYITSIRA=10+(KAYIT-1)*5

satırı yerine;

KAYITSIRA=KAYIT
yaz.

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

gulbey84

ete hocam kayıt işide tamam dediğinizi yaptım harika oldu...fakat sadece silme işlemi kaldı...sadece silme işlemi çalışmıyor hocam...size çok zahmet veriyorum farkındayım...ama buraya kadar gelipte projeyi bitirememek beni çok üzer hocam.... :( :)
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

ete

KARTSIL kısmında da hatamız varmış. Onuda buldum.

Aşağıdaki satırları bul

KARTSIL:
       A=0
       hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
       IF A=0 then KARTSIL  'henüz kart okunmadı ise      
       FOR I=10 to 105
       read I,temp
         if TEMP=A then
- A=0  satırını şöyle yaz:

 A=0:POZ=0

- FOR I=10 to 105 satırını şöyle yaz,

   FOR I=10 to 105 STEP 5

Dene bakalım düzelmesi lazım.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

gulbey84

KARTSIL:
       buzzer=1:pause 500:buzzer=0:pause 100:buzzer=1:pause 500:buzzer=0
       a=0:POZ=0
       hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'silinecek kartı okuduk
       IF A=0 then KARTSIL  'henüz kart okunmadı ise      
        FOR I=10 to 105 STEP 5
       read I,temp
         if TEMP=A then
           read I+1,temp
           IF TEMP=B then
             READ I+2,TEMP
             IF TEMP=C THEN
               READ I+3,TEMP
               IF TEMP=d THEN
                 READ I+4,TEMP
                 IF TEMP=e THEN
                   POZ=1:KAYITSIRA=I 'KAYITLI ve I sıra numarasında kayıtlı

hocam dediğiniz gibi düzenledim ama hiçbirşey değişmedi...acaba kaçırdığım küçük birşey varda ben mi göremiyorum? hiçbirşekilde kaydettiğim kartı silmiyo ete hocam?

sevgilerle

gulbey
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

ete

Bir kusur daha buldum.

KARTSIL kısmının tamamını  aşağıdaki satırlarla değiştir.

Ete


 
KARTSIL:
        A=0
        hserin [hex2 a,hex2 b,hex2 c,hex2 d,hex2 e] 'kayıt edilecek kartı okuduk
        IF A=0 then KARTSIL  'henüz kart okunmadı ise       
        FOR I=10 to 105
        read I,temp
          if TEMP=A then
            read I+1,temp
            IF TEMP=B then
              READ I+2,TEMP
              IF TEMP=C THEN
                READ I+3,TEMP
                IF TEMP=d THEN
                  READ I+4,TEMP
                  IF TEMP=e THEN
                    POZ=1:KAYITSIRA=I 'KAYITLI ve I sıra numarasında kayıtlı
                    GOTO IKI
                  endif
                endif
              endif
            endif
          endif
        next
        temp=0

        IF POZ=0 then
          pAUSE 100:led=0:pause 300:led=1:pAUSE 100:led=0:pause 300:led=1
          goto basla 'bu kart kayıtlı değilki silesin.
        endif
        
IKI:
         A=$FF:B=$FF:C=$FF:D=$FF:E=$FF
         write KAYITSIRA,  A:PAUSE 10
         WRITE KAYITSIRA+1,B:pAUSE 10
         WRITE KAYITSIRA+2,C:pAUSE 10
         WRITE KAYITSIRA+3,D:pAUSE 10
         WRITE KAYITSIRA+4,E
         buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0:pause 200:buzzer=1:pause 200:buzzer=0
         GOTO BASLA
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

gulbey84

.-''''-.,.-''''-.
!    I LOVE   !             HOCAM ÇALIŞTI! :) sizi çok yordum hocam...hakkı
".   YOU   ."         nızı helal ediniz.... :) şimdi en baştan kodları okuyup
   '''-.,.-              bende anlamaya öğrenmeye çalışacağım...
.-''''-.,.-''''-.             çok ama çok sağolun hocam...allah bu vatanı sizsiz
!    I LOVE   !    bırakmasın!!
".   YOU   ."
   '''-.,.-

.-''''-.,.-''''-.
!    I LOVE   !
".   YOU   ."
   '''-.,.-

.-''''-.,.-''''-.
!    I LOVE   !
".   YOU   ."
   '''-.,.-
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE

gulbey84

hocam birde son bi soru...sanırım bu programımızda kart kayıt sınırı belirlemedik...dolayısıyla yaklaşık 50 adet kart kayıtedilebilir ve silinebilir doğrumu hocam...zaten sınır olmaması daha iyi...50 de az değil sonuçta....
HABURDA KARŞILANANLAR YALNIZCA O BEBEK KATİLLERİ,VATAN HAİNLERİ DEĞİLDİ!!AYNI ZAMANDA YALANLAR VE KARANLIKLAR İMPARATORLUĞUNUN YOKOLUŞUNUN KARŞILANMASIYDI! NE MUTLU TÜRKÜM DİYENE