Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?

Başlatan F.T, 26 Mayıs 2015, 00:19:43

F.T

YER1[1]=SAAT
YER1[2]=DAK 
YER1[3]=GUN
YER1[4]=AY
YER1[5]=YIL

YER2[1]=YER1[1]
YER3[1]=YER2[1]
YER4[1]=YER3[1]
YER5[1]=YER4[1]

YER2[2]=YER1[2]
YER3[2]=YER2[2]
YER4[2]=YER3[2]
YER5[2]=YER4[2]

YER2[3]=YER1[3]
YER3[3]=YER2[3]
YER4[3]=YER3[3]
YER5[3]=YER4[3]

YER2[4]=YER1[4]
YER3[4]=YER2[4]
YER4[4]=YER3[4]
YER5[4]=YER4[4]

YER2[5]=YER1[5]
YER3[5]=YER2[5]
YER4[5]=YER3[5]
YER5[5]=YER4[5]



Yukardaki kodda yer1 değişkeni ilk kayıt olan saat tarih verisi.Ben bu veriyi 4 farklı veri  olarak  her olay olduğunda bir kaydırarak kaydetmek istiyorum.Fakat ekranda tüm veriler aynı geliyor.Şu an itibarı ile net düşünemiyorum.Yanlışım nerde?

mesaj birleştirme:: 26 Mayıs 2015, 00:43:21

Arkadaşlar kafa dank etti.Hatayı buldum hatam aktarma sırası ile ilgili  olunca değerler sürekli aynı oluyordu sıralama değişince düzeldi.Bu saatte bu kadar olur heralde  :))
doğrusu bu şekil olacak.

YER1[1]=SAAT
YER1[2]=DAK 
YER1[3]=GUN
YER1[4]=AY
YER1[5]=YIL

YER5[1]=YER4[1]
YER4[1]=YER3[1]
YER3[1]=YER2[1]
YER2[1]=YER1[1]

YER5[2]=YER4[2]
YER4[2]=YER3[2]
YER3[2]=YER2[2]
YER2[2]=YER1[2]

YER5[3]=YER4[3]
YER4[3]=YER3[3]
YER3[3]=YER2[3]
YER2[3]=YER1[3]

YER5[4]=YER4[4]
YER4[4]=YER3[4]
YER3[4]=YER2[4]
YER2[4]=YER1[4]

YER5[5]=YER4[5]
YER4[5]=YER3[5]
YER3[5]=YER2[5]
YER2[5]=YER1[5]


Ayrıca bu tip bir kaydı daha sade nasıl yapabiliriz varmı bir yöntemi?
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Gökhan BEKEN

Hepsini tek bir dizide toplarsanız, veya 2 boyutlu bir dizi yaparsanız, tek tek yazmaya gerek kalmaz, döngü kullanarak halledilebilir.
5 adet yer var, her yerin 5 adet verisi var: "saat dakika gün ay yıl"
#define YER_SAYISI 5
#define VERI_SAYISI 5
int bilgiler[YER_SAYISI][VERI_SAYISI]= { 
0,0,0,0,0, //1.yerin verileri
0,0,0,0,0, //2.yerin verileri
0,0,0,0,0, //3.yerin verileri
0,0,0,0,0, //4.yerin verileri
0,0,0,0,0, //5.yerin verileri
};
bilgiler[0][1]=SAAT;
bilgiler[0][2]=DAK ;
bilgiler[0][3]=GUN;
bilgiler[0][4]=AY;
bilgiler[0][5]=YIL;

//manuel yontem ile böyle, tek tek yazmak gerekir:
bilgiler[1][0]=bilgiler[0][0]
bilgiler[1][1]=bilgiler[0][1]
bilgiler[1][2]=bilgiler[0][2]
bilgiler[1][3]=bilgiler[0][3]
bilgiler[1][4]=bilgiler[0][4]

//döngü ile böyle
unsigned char i=0;
unsigned char k=0;
for(i=0;i<4;i++){
k=0;
   for(k=0;k<5;k++){
      bilgiler[i+1][k]=bilgiler[i][k]
   }
}


Ancak yukarıdaki yazdığım örnekte sıralama düz yapıldığı için bütün veriler aynı olur. Döngüyü geriye doğru döndererek yazmanız gerekir. Sadece örnek olsun diye yazdım.


Özel mesaj okumuyorum, lütfen göndermeyin.

F.T

Gökhan hocam verdiğiniz yöntem güzel yalnız pek anlayamadım.Değişkenleri protonda bu şekilde kullanma olanağı varmı.Varsa anlayabilmek için  basit düzeyde bir örnek olursa güzel olurdu.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

Gökhan BEKEN

Konunun proton'da açıldığını farketmemişim.
Proton bilmiyorum ama "çok boyutlu array"  kavramı her dilde vardır sanırım.
Şöyle bir örnek var mesela: http://www.protonbasic.co.uk/content.php/472-Two-Dimensional-Arrays
Özel mesaj okumuyorum, lütfen göndermeyin.

F.T

Hocam inceledim fakat istediğim gibi değil.En iyisi kendi yöntemimi kullanayım.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ferit06

#5
tek boyutlu diziyi 2 boyutlu gibi kullanabilirsiniz.

örnek;
Dim kayit[25] As Byte ' 5 erli 5 grup
Dim olay As Byte
Dim a As Byte
Dim kayit_a As Byte
Dim sonuc As Byte


For olay=0 To 4
    ' blok gerçekleşmesine ait kod buraya eklenecek
    For a=0 To 4           'olay=0 ise 0-4 arası ilk 5 kayit, olay=4 ise 21-25 arası son 5 kayit
    'sonuc'un elde edilmesine ait kod buraya eklenecek
    kayit_a=olay*5+a
    kayit[kayit_a]= sonuc   'sonuc kaydedeceğiniz bilgi
   ' EWrite kayit_a, [sonuc]   ' doğrudan eproma kayıt  ilk satırdaki 25 bytlık RAM kullanına gerek kalmaz
    Next

Next

F.T

ferit06 hocam ilginiz için teşekkür ediyorum.ben 5 adet farklı oluşan olayda kayıtlar oluşturucam ve bu kayıtlar her olayda kayarak aşağı doğru gidicek.aşağıda verdiğim yöntem ile kaydırma yapıp  eeproma kayıt ettim ve sıkıntı yok.benim merak ettiğim bu işi ptotonda daha az kod kullanarak hafızayı daha tasarruflu bir şekilde kullanarak bir algoritma ile bu iş  yapılabilirmi.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ferit06

sizin son kod eklenmemiş  ama;
benim verdiğim örnek şu şekle dönebilir. Oluşan kod benim verdiğim örnek için 80 byte oluyor.
Dim kayit[25] As Byte ' 5 erli 5 grup
Dim olay As Byte
Dim a As Byte
Dim kayit_a As Byte
Dim sonuc As Byte
'olay : gosub olay_gerceklesme


'....
olay_gerceklesme:
'For olay=0 To 4
    olay=olay+1
    If olay=5 Then olay=0  
    ' blok gerçekleşmesine ait kod buraya eklenecek
    For a=0 To 4           'olay=0 ise 0-4 arası ilk 5 kayit, olay=4 ise 21-25 arası son 5 kayit
    'sonuc'un elde edilmesine ait kod buraya eklenecek
    kayit_a=olay*5+a
    kayit[kayit_a]= sonuc   'sonuc kaydedeceğiniz bilgi
    EWrite kayit_a, [sonuc]   ' doğrudan eproma kayıt  ilk satırdaki 25 bytlık RAM kullanına gerek kalmaz
    Next
' Next
Return

F.T

Hocam teşekkürler örneği deneyip geliştirmeye çalışayım.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.