Kudret Bey iyi akşamlar..
vermiş olduğunuz devreyi yapıp test ettim, dediğiniz ve göndermiş olduğunuz videodaki gibi çalıştı.

gelen porttan 49-50-51-52 ve 53 ü okudu fakat 2 gündür beceremediğim şey..
pic ten
seri porta veri aktarırıken

vb tarafında;

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
PictureBox1.BackColor = Color.Olive
Dim gelen As String = SerialPort1.ReadByte '
If gelen = 49 Then
PictureBox1.BackColor = Color.Red
End If
End Sub


bu şekilde verdiğiniz kodu

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

Dim gelen1 As String = SerialPort1.ReadByte
Dim gelen2 As String = SerialPort1.ReadByte
Dim gelen3 As String = SerialPort1.ReadByte
Dim gelen4 As String = SerialPort1.ReadByte
Dim gelen5 As String = SerialPort1.ReadByte

textbox1.text=gelen1
textbox2.text=gelen2
textbox3.text=gelen3
textbox4.text=gelen4
textbox5.text=gelen5

End Sub

şeklinde ayrı ayrı texboxlara yazdırmatı ve 1. butona basınca textbox1.text veri gelsin ve basılı kaldığı sürece veri görünsün, buton açılınca "0" değeri gelse diye çok uğraştım olmadı

picten ayrı ayrı veri gönderemedim dolayısıyla vb den de ayrı ayrı alamadım..

tam heycanlı yerinde kaldım bi bakarsanız sevinirim...
 
Merhaba

gelen1 olarak okunan data "1" olduğunu bildiğimiz için aşağıdaki gibi yazınız.
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim gelen1 As String = SerialPort1.ReadByte '
If gelen1 = 49 Then
textbox1.text="1"
End If
End Sub
 
o zaman;

Dim gelen1 As String = SerialPort1.ReadByte '
If gelen1 = 49 Then
textbox1.text="1"
End If
End Sub

Dim gelen2 As String = SerialPort1.ReadByte '
If gelen2 = 50 Then
textbox2.text="2"
End If
End Sub

Dim gelen3 As String = SerialPort1.ReadByte '
If gelen3 = 51 Then
textbox3.text="3"
End If
End Sub

.....
....
...

şeklinde yazsak 5 veriyi de ayrı ayrı alırız diye anladım..devra işyerinde kaldı yarın deniyeceğim..çok sağolunnn....
 
Merhaba
IF ile kontrol ederek gelen datanın doğruluğu da test ediliyor.Hatta biraz daha lüks yapalım.
Dim gelen1 As String = SerialPort1.ReadByte '
If gelen1 = 49 Then
textbox1.text="1"
else
textbox1.text="gelen data 1 değil"

End If
End Sub
 
Hocam aslında sizden almak istediğim cevap, yukarıda verdiğim örnekteki gibi texbox1 - tekbox2 şeklinde 5 veriyi ayrı ayrı alabilirmiyiz ve texbox a gelen veri o giriş aktif olduğu sürece sabit kalsın verdiğiniz örnekteki gibi gelip gitmesin istiyorum.. istiyorum ama yapamıyorum :)
 
Merhaba
Tamam anladım.Datalar düzgün geldiği sürece dataları text boxta görebilirsiniz.Eğer kontrol yapmadan yazarsanız böyle olur

Dim gelen1 As String = SerialPort1.ReadByte '
gelen1 = "1"
textbox1.text="1"
End If
End Sub

ama gelen1 49 olmasa bile biz "1" e eşitlediğimiz için textboxta " 1 göreceğiz.Bu bakımdan PIC'in yolladığı dataları yazılıma uygun olup olmadığını kontrol etmede fayda var.Deneyin ben de kesin bir şey yazamıyorum.Biliyorsunuz VB.net bazen her kafamızdaki her algoritmayı istediğimiz gibi kontrol edemiyebiliyor.Yukarıdaki örnekte olduğu gibi gelen1 direk olarak textboxta görünmesi lazım ama ille de gelen1 "1" e eşitlememizi istiyor.
 
tamam sağolun yarın bi deniyeyim.. sonucu yarın yazarım iyi akşamlar....
 
Size de iyi akşamlar.
 
Merhabalar Kudret Bey,

denemeler yaptım fakat
Dim gelen As String = SerialPort1.ReadByte
texbox1.text=gelen

dediğimde veriyi optoların konumuna göre 49-50-51-52-53 şeklinde alıyorum
ama veri gelip gidiyor. sadece 49 geldiğini varsayarsak 49 0 49 0 49 gibi değil de
sinyal oldukça textbox1.text= e 49 olmazsa 0 aynı şekilde
textbox2.text= e 50
textbox3.text= e 51 .. ... ... şeklinde her textbox a ayrı ayrı yazdırmak istiyorum...

ama
gelen değişkeni 1 tane olduğundan 2. ve daha fazla veriyi alırken hata veriyor.

verdiğiniz hex kodunu aynen kullandım, değiştirmek istedim yapanadım,
pic ten ayrı ayrı veri göndertemezyiz..
yani

Dim gelen As String = SerialPort1.ReadByte haricinde başka veri alabilirmiyiz..

Dim gelen1 As String = SerialPort1.ReadByte
Dim gelen2 As String = SerialPort1.ReadByte
Dim gelen3 As String = SerialPort1.ReadByte
Dim gelen4 As String = SerialPort1.ReadByte
Dim gelen5 As String = SerialPort1.ReadByte

şeklinde ayrı ayrı alıp textbox lara yazdırmayı denedim hata verdi...
 
Merhaba
Bildiğim ve de uyguladığım tüm olasılıkları paylaştım.Nerede hata var bilemiyeceğim."dediğimde veriyi optoların konumuna göre 49-50-51-52-53 şeklinde alıyorum"şeklindeki yazınıza göre"
prensip olarak 49,50,51,52 ve de 53 rakkamını text boxtta tek tek görebiliyorsanız problemin %90 çözülmüş ve de PIC'ten PCye 5 ayrı data aktarılmış demektir.Geriye text boxlarda göstermek kalıyor.Onunda yazılımını zaten siz yazdınız.

Dim gelen1 As String = SerialPort1.ReadByte '
If gelen1 = 49 Then
textbox1.text="1"
End If
End Sub

Dim gelen2 As String = SerialPort1.ReadByte '
If gelen2 = 50 Then
textbox2.text="2"
End If
End Sub

Dim gelen3 As String = SerialPort1.ReadByte '
If gelen3 = 51 Then
textbox3.text="3"
End If
End Sub
Başka birşey de gelmiyor aklıma.Kolay gelsin.
 

Forum istatistikleri

Konular
130,059
Mesajlar
932,638
Kullanıcılar
453,041
Son üye
İHSAN DOĞAN

Yeni konular

Geri
Üst