4 basamaklı sayı

Başlatan armsistem, 16 Kasım 2013, 13:47:41

armsistem

Arkadaşlar merhaba ; uart üzerinden 4 basamaklı sayı gönderme konusunda kafam karıştı. 

- Butona her basıldığında işlemci +1 sayıyor --> 1...3...6...9 , mesala değer 9 ise '0009' şeklinde göndermem lazım.--> 10.....50....79.... olduğunda 0079 devam edip gidiyor. Bu işlem nasıl bir mantık yürüterek yapabilirim.

mistek

Alıntı yapılan: armsistem - 16 Kasım 2013, 13:47:41
Arkadaşlar merhaba ; uart üzerinden 4 basamaklı sayı gönderme konusunda kafam karıştı. 

- Butona her basıldığında işlemci +1 sayıyor --> 1...3...6...9 , mesala değer 9 ise '0009' şeklinde göndermem lazım.--> 10.....50....79.... olduğunda 0079 devam edip gidiyor. Bu işlem nasıl bir mantık yürüterek yapabilirim.

Uarttan printf ile mi gönderiyorsunuz?
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

pea

%04d parametresi ile 4 basamaklı, solu 0larla doldurulmuş decimal sayı yazarsınız.
Örnek: printf ("Sayılan deger: %04d \n", 79);
Alınan çıktı: "Sayılan deger: 0079" olur.

Tagli

Alıcı taraf ASCII olarak mı yoksa binary olarak mı değerlendirecek bu sayıyı? Alıcı taraf bir seri port terminali mi yoksa senin yazdığın bir program mı?
Gökçe Tağlıoğlu

armsistem

#4
Alıntı yapılan: Tagli - 16 Kasım 2013, 14:02:10
Alıcı taraf ASCII olarak mı yoksa binary olarak mı değerlendirecek bu sayıyı? Alıcı taraf bir seri port terminali mi yoksa senin yazdığın bir program mı?

Benim yazdığım bir program sayıyı stringe çevirerek gönderiyorum , alıcı programda bakıyor 12 basamaklı bir sayı görmesi lazımkı ona göre bölüp parçalaması lazım.

mesaj birleştirme:: 16 Kasım 2013, 14:06:53

Alıntı yapılan: pea - 16 Kasım 2013, 14:00:06
%04d parametresi ile 4 basamaklı, solu 0larla doldurulmuş decimal sayı yazarsınız.
Örnek: printf ("Sayılan deger: %04d \n", 79);
Alınan çıktı: "Sayılan deger: 0079" olur.

Sağolasın printf ile tür dönüşümü yapıp göndermem gerekiyor dimi.

selimkoc

void basamakHesapla(int deger)
{
     basamak[0]=deger/1000;
     basamak[1]=(deger%1000)/100;
     basamak[2]=(deger%100)/10;
     basamak[3]=(deger%10);
}

bu fonksiyonla int tipindeki değişkenin basmaklarına ayırmış olursun her basamağın değerini ayrı ayrı gönderebilirsin.

armsistem

#6
Alıntı yapılan: selimkoc - 16 Kasım 2013, 14:09:28
void basamakHesapla(int deger)
{
     basamak[0]=deger/1000;
     basamak[1]=(deger%1000)/100;
     basamak[2]=(deger%100)/10;
     basamak[3]=(deger%10);
}

bu fonksiyonla int tipindeki değişkenin basmaklarına ayırmış olursun her basamağın değerini ayrı ayrı gönderebilirsin.


Hocam 15 değeri gönderirsem 0015 mi olacak ?

mesaj birleştirme:: 16 Kasım 2013, 15:15:02

Evet hocam denedim ol

        {
            int t0,t1,t2,t3;
            t0 =15/1000;
            t1 = (15 % 1000) / 100;
            t2 = (15 % 100) / 10;
            t3 = (15 % 10) ;
            MessageBox.Show(t0.ToString());
            MessageBox.Show(t1.ToString());
            MessageBox.Show(t2.ToString());
            MessageBox.Show(t3.ToString());
            
        }