c#tan gelen veriyi pic nasıl algılıyor?

Başlatan chezque, 26 Mayıs 2012, 22:35:54

chezque

arkadaşlar c#tan 1den 5e kadar sayılar yolluyorum ve bunlara göre pic işlem yapıyor. daha doğrusu yapmasını istiyorum. c#ta veriyi

if (!Sp.IsOpen) Sp.Open();
string msg1 = msg;
Sp.Write(msg1);
Sp.Close();


kodu ile yolluyorum. c#tan yolladığım sayı anı şekilde mi seri porttan karşıya iletiliyor yoksa hex kodu şeklinde mi geçiyor karşıya?

kudretuzuner

Merhaba
Arkadaşım bu çalışma,seni bayağı yordu.Sebebine gelince,konuyu ordan burdan tutuyorsun hepsi karışıyor.Daha önce de anlattığım gibi VB.Net,C#.....vs diğer diller ile yaptığınız yazılımların mantığı hep aynıdır.Sadece yazım şekli değişir.Gelelim soruya,ben VB.Net ile yazmaktayım ama değişmez ben mantığını anlatayım,siz yazılım gereği örneğin klavyenin "1" rakkamına basarak bir iş yapmak istediğinizde (vb.net)
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SerialPort1.Open()
        Dim gonder1 As String = "1"
        SerialPort1.Write(gonder1)
        SerialPort1.Close()
    End Sub
buton2.click işlevine bu kodları yazarsanız buton2 şunu yapar(yazılım gereği)
1-seriportu açar
2-(gonder1) adlı değişkenin bir string olduğunu bildirir ve klavyenin bir rakkamına eşitler
3-seriporttan "1" rakkamının hex değeri Hex'31' yollar daha açık bir ifade ile "00110001"şeklinde bir byte'lık bir data yollar.
4-seri portu kapatır.
C#  'ın  VB.Net'in  ....vs diğer dillerin yaptıkları budur.
Diğer ayak ise,bu yollanan datanın PIC tarafından algılanması ve gelen dataya göre işlem icra etmesidir.
Eğer araya RF girecek ise RF datasında yazan ön byte'ların yollanması gerekir.(videoda da gördüğünün gibi ben preambl hiç kullanmadım ama gayet sağlıklı dataları yolladım ve aldım)Özetle PC'nin seri portun TX ucundan çıkıp Max232'nin R1 IN ucuna,klavyenin hangi tuşuna basarsanız o tuşun bir baytlık binary bilgisi çıkar R1 IN'e girer.Kolay gelsin.
Amatör

chezque

farkındayım hocam bende ordan burdan tutmaya çalıştığımın da sebebi panik sanırım. aşırı derecede huzursuzum bu proje yüzünden. uyuyamama derecesine kadar geldi bu.
şimdi 1 yolladığımda picte algılanacak olan değer 31 oluyor yani. yani 1'i algılaması için;

if(deger==31)
{
  output_high(pin_b0);
  output_low(pin_b1);
}


şeklinde yazmam gerekiyor.

kudretuzuner

Merhaba
Hex'31' veya B'00110001' olarak yollamanız lazım.sadece 31 birşey ifade etmez.Aşağıdaki linkte klavyenin HEX ve binary kodları var.
http://www.table-ascii.com/
Amatör

eistain_54

Alıntı yapılan: chezque - 26 Mayıs 2012, 23:47:45
farkındayım hocam bende ordan burdan tutmaya çalıştığımın da sebebi panik sanırım. aşırı derecede huzursuzum bu proje yüzünden. uyuyamama derecesine kadar geldi bu.
şimdi 1 yolladığımda picte algılanacak olan değer 31 oluyor yani. yani 1'i algılaması için;

if(deger==31)
{
  output_high(pin_b0);
  output_low(pin_b1);
}


şeklinde yazmam gerekiyor.

hex 0x31 şeklinde sorgulanmalıdır.'1' şeklinde de sorun çıkmıyor.
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!