Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Serial Port

Başlatan furkan87, 23 Şubat 2012, 09:02:41

furkan87

Problem çözüldü yardımlarınız için çok teşekkür ederim.

kudretuzuner

Merhaba
Bu komutla sürekli gelen datayı (msgbox)'da görebilirsiniz.

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        Dim gelen As String = SerialPort1.ReadLine
        MsgBox(gelen)
    End Sub
Amatör

muhittin_kaplan

serialport1.readexiting() olması gerekiyor bir araştırınız

furkan87

#3
Kudret bey merhabalar.Kodu çalıştırmayı denedim olmadı.Yine kilitleniyor.

Muhittin Bey,serialport1.readexiting() kullanınca kilitlenme olmuyor.Veriyide alıyor,fakat tamamını alamıyor(alınacak veri 24 bytelık bir dizi).

Benim yazdığım;
            Dim data(25) As Byte
            SerialPort1.Read(data, 0, 24)
            TextBox43.Text = Chr(data(4)) + Chr(data(5)) + Chr(data(6))

Bu kodda eğer uC'den pcye cevap gelirse sıkıntı olmadan verileri alıyorum.Fakat cevap gelmeyince VB kilitleniyor.

muhittin_kaplan

kodun tamamını eklermisiniz. neden kilitleniyor anlamadım.
siz serialport datareceive event inde yapmıyormusunuz ?

furkan87

#5

;D

muhittin_kaplan

Yanlış Anlıyorsam düzelt lütfen.
Sen bir buton yardımı ile vei gönderiyorsun. ve belli bir zaman aralığında kurulmuş olan timer ı çalıştırıp bilgiyi almaya çalışıyorsun.. Böyle mi anlamam gerek ?

eğer böyleyse yanlış yapıyorsun. Yapman gereken datarecieve olayının altına yazman gerek
şimdi burada ne oluyor? seri porta bilgi geldiğinde Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

olayı tetikleniyor. gerisi sana kalmış ByteByte okumak istersen readbyte,null değer gelenne kadar okumak istersen readline gibi metodları kullanabilirsin.

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
        DataSend(0) = (1)
        DataSend(1) = (5)
      
            SerialPort1.Write( DataSend, 0, 2)
     

    End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As 
System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
       Dim data(25) As Byte
        SerialPort1.Read(data, 0, 24)
        TextBox43.Text = Chr(data(4)) + Chr(data(5)) + Chr(data(6)) 
    End Sub

muhittin_kaplan

ama burada da hata verecek ve tread lar farklı olduğundan senden delegate tanımlamanı isteyecektir..
ben kendi bloguma giremiyorum..
muhittin-kaplan.blogspot.com da ivmeölçer başlığında açık kaynaklı bir serial port çalışmam vardı yardımcı olur..

furkan87

#8
Yardımlarınız için çok teşekkür ederim.

Kabil ATICI

gönderdiğin verinin karşılığını bekleliyorsan; yani veri akış trafiği kontrolu bilgisayarda ise
gönderdiğin her veri  tipi için bir bayrak atarsın, cevap olarak gelen veriyi (farklı bir veri gelmeyeceği varsayımı üzerinden) bu bayrağa göre değerlendirirsin.
Ama kontrol bilgisayarın değilse o zaman bu çözüm yeterli olmaz.
ambar7