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...
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.
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
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.
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
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.
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.
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 (https://www.dropbox.com/s/kv5ge960x9aybwz/AutoScreenRecorder_02%20Mar.%2015%2013.16.rar)
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...
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.
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..
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
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.