PIC ile BASIC konuşturma

Başlatan okreg, 28 Nisan 2014, 18:19:05

okreg

Merhabalar

PIC'in B portuna switchler bağlı (8 adet) herhangi biri veya birkaçı durum değiştirince Visula Basic bunu algılamasını istiyorum

Örneğin PortB= 0000 0001 yani 0.biti 1 olduğunda yani Hex 01 ;
Basic bunu DEC 1  olarak alıgılayacak.

PortB= 0010 0001 yani 0.biti ve 5.biti 1 olduğunda yani Hex 21 ;
Basic bunu DEC 33  olarak alıgılayacak.

Eğer PIC to PIC olasydı maskeleyerek bit kontrolü yaptırıdım ve hangi switch durum değiştrmiş anlardım ama Visual Basic'te bu işlem nasıl yapılır?

Şimdiden teşekkürler...

kudretuzuner

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        Dim gelen As Byte = SerialPort1.ReadByte
       '--------------------------------------------------------
        If gelen = 48 Then '      "0"  hex(30)    PIC'in yolladığı
           PictureBox1.BackColor = Color.Red
            Label1.ForeColor = Color.Red
         End If
KOD ile pic PC'ye  klavye "0"  hex(30) yolladığı zaman forma ilave ettiğiniz picturebox1 'in ve de label1'in rengi kırmızı olacaktır.
Amatör

okreg

Alıntı yapılan: kudretuzuner - 28 Nisan 2014, 20:36:47
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        Dim gelen As Byte = SerialPort1.ReadByte
       '--------------------------------------------------------
        If gelen = 48 Then '      "0"  hex(30)    PIC'in yolladığı
           PictureBox1.BackColor = Color.Red
            Label1.ForeColor = Color.Red
         End If
KOD ile pic PC'ye  klavye "0"  hex(30) yolladığı zaman forma ilave ettiğiniz picturebox1 'in ve de label1'in rengi kırmızı olacaktır.

maalesef bu işimi görmez

pic tarafında 8 adet switch olduğunu düşünün. switchler 1 yada sıfır gönderiyor

pc tarafında ise 8 adet picturebox var. hangi switchi 1 yaparsam renk yeşil oluyor. switch 0 da kaldığında kırmızı oluyor


OG

Alıntı YapEğer PIC to PIC olasydı maskeleyerek bit kontrolü yaptırıdım ve hangi switch durum değiştrmiş anlardım ama Visual Basic'te bu işlem nasıl yapılır?

PIC to PIC ile PIC to PC arasında bir fark yok.

PIC den PC ye datayı gondermeyi halledebildiysen, aldığın datayı kuracağın şartlar ile eleyecek ve gereken işi yaptıracaksın. 1 iyak , 2 yi sondur, 3 ü kırmızı yap vs vs.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

okreg

Alıntı yapılan: OG - 28 Nisan 2014, 21:11:05
PIC to PIC ile PIC to PC arasında bir fark yok.


fark var bence. çünkü yapamadım

OG

Fark olmadığını anlamadığın için yapamamışsın.

PIC den PC ye datayı ulaştırabildiysen gerisi
If gelen = xx then
''' burada ne yapacaksan o
Endif

budur.

PC ye seri porttan veya sanal seri porttan ulaşma işi en kolay yoldur.
MSComm inceleyin.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Gökhan BEKEN

#6
Falanca satırdaki hatayı düzeltin.

Arkadaşım daha hangi haberleşme protokolünü kullandığını bile belirtmemişsin, kod yok, görüntü yok. Nasıl yardımcı olabiliriz?
Visual Basic, kahin mi de pic'in bacaklarındaki durumları anlasın, illaki bir bağlantı yapacaksın. USB/Seri port/paralel port/ethernet vs vs.
Özel mesaj okumuyorum, lütfen göndermeyin.

kudretuzuner

Merhaba,
"maalesef bu işimi görmez"
Aslında sizin ihtiyacınız olan kod budur.Şöyle ki PIC PC'ye sadece hex'30' yolladığı zaman PC'nin yapacağı işlemi belirtir.Siz kaskat ekleyerek daha doğrusu PIC'e yazacağınız kod gereği PC'ye "yollayacağı BYTE'ları tek tek okur ve "OG" beyin de yazdığı gibi PC'de istediğiniz eylemi gerçekleştirebilirsiniz.Size halen üzerinde çalışmakta olduğum Projemden birkaç satırlık kod verdim.Bu projede PİC PC'ye 18 adet BYTE yollamaktadır.Bu yollanan 18 BYTE'lardan 8 adedini basınç sensoru yollamakta (ADC sonucunda)PC'de gelen BYTE'ları kontrol edip kompresor basıncını PC'de göstermektedir.Ayrıca da PC'den yollanan BYTE'lar ile de kartta kontrol sağlanmaktadır.(proje geliştirilme aşamasındadır)
https://www.dropbox.com/s/kv5ge960x9aybwz/AutoScreenRecorder_02%20Mar.%2015%2013.16.rar
Amatör

Kabil ATICI

işlemcinin  portunu oku bunu bilgisayara gönder. Sonuçta 8 bitlik bir sayı. 0 ile 255 onluk değere sahip bir sayı.Gözünüzde büyütmeyin. Onluk sayı sisteminden ikilik sayı sistemini nasıl geçileceğini yoksa artık öğretmiyorlar mı?
Basic'de doğrudan bitleri ayıracak şekilde kodu oluştur.

örnek 1 veya 0 olması 0. biti.
2 olması 1. biti
4 olması 2. biti
8 olması 3. biti
16 olması 4. biti
şeklinde gider.

sonuçta seri port üzerinden gelen bilgi 8 bitlik o nedenle 0-255 aralığında olur.
Bitlerin onluk sayı sistemindeki karşılığını bulabilirsin. En basitinden bilgisayarındaki hesap makinesinden. Tek yapman gereken onluk sayı sistemindeki sayıdan bitleri ayıklamak.
Ben genellikle onluk sayı sistemindeki verileri işlemci portuna bit eşleştirecek şekilde göndermişim.

seri porttan okunan "değer" değişkenine aktarılmış olsun...
if değer >127 then
değer=değer-128
bit7=1
else
bit7=0
end if
if değer>63 then
değer=değer-64
bit6=1
else
bit6=0
end if
....
bu şekilde diğer bitler ayıklanacak. sonra bit değerlerini istediğini yap...

ambar7

okreg

böyle ukala ve ego yüklü yanıtlar alacağımı bilseydim hiç konu açmazdım

neyse... yurtdışı sitelerin birinden bir arkadaş çok yardımcı olcu zaten

ilginize teşekkür ederim.

Mucit23

Alıntı yapılan: okreg - 29 Nisan 2014, 09:32:07
böyle ukala ve ego yüklü yanıtlar alacağımı bilseydim hiç konu açmazdım

Suç sende değil aslında zamanını ayırıp iki satır birşeyler yazanlarda..

okreg

Alıntı yapılan: Mucit23 - 29 Nisan 2014, 10:08:00
Suç sende değil aslında zamanını ayırıp iki satır birşeyler yazanlarda..

sadece son yanıtıma bakıp yazmışsınız sanırım

diğerlerini de okuyun, bana hak vereceksiniz.

okuyamam derseniz ben özetleyeyim.

ben sadece maskeleme yapamadığımı söyledim bunun basicte nasıl olabileceğini sordum ama ne binary bilgim kaldı ne anlayışsızlığım

neyse dedim ya konuyu çözdüm, hakikatten bilseydim hiç açmazdım

kimlenbu

Visual Basic.Net kullanıyorsan decimal sayıyı binarye çevirmek çok kolay maskeleme ile kasmana gerek yok :

        Dim dec As Integer = 255
 
        Dim ss As String = Convert.ToString(dec, 2)
        MsgBox(ss)


yazarsan sana 11111111 değerini verir misal. Sonra da "mid" fonksiyonu ile istediğin karaktere ulaşırsın.