Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: F.T - 26 Mayıs 2015, 00:19:43

Başlık: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: F.T - 26 Mayıs 2015, 00:19:43

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?
Başlık: Ynt: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: Gökhan BEKEN - 26 Mayıs 2015, 10:24:05
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.


Başlık: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: F.T - 26 Mayıs 2015, 12:08:58
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.
Başlık: Ynt: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: Gökhan BEKEN - 26 Mayıs 2015, 12:15:40
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 (http://www.protonbasic.co.uk/content.php/472-Two-Dimensional-Arrays)
Başlık: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: F.T - 26 Mayıs 2015, 12:59:11
Hocam inceledim fakat istediğim gibi değil.En iyisi kendi yöntemimi kullanayım.
Başlık: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: ferit06 - 27 Mayıs 2015, 11:34:32
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
Başlık: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: F.T - 27 Mayıs 2015, 21:00:47
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.
Başlık: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: ferit06 - 28 Mayıs 2015, 08:44:33
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
Başlık: Ynt: Olay kayıtlarını eproma kaydetme ve okuma ?
Gönderen: F.T - 28 Mayıs 2015, 18:34:56
Hocam teşekkürler örneği deneyip geliştirmeye çalışayım.