Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual Basic => Konuyu başlatan: ilhan_mkp - 10 Mayıs 2014, 20:33:10

Başlık: visual basic seriporttan nasil veri alınır
Gönderen: ilhan_mkp - 10 Mayıs 2014, 20:33:10
visual basic express 2010 kurdum amacım seri porttan veri almak biraz örnek buldum ama pek anlayamadım port ayarları seri port nesnesini koyunca kenarda pencere üzerinde yapılıyo ama forma neler eklemeliyim birde bufferi byteler halinde okuma ve bütün bufferi okumak farklı yollarla oluyor sanırım

tanımlama yapmam gerekiyormu
portu nasıl acıcam
gelen byte textbox içini nasıl yazıcam

asıl amacım lrc hesaplaması yapmak verileri dürüst bütün almayı öğrenmeden başlamayayım dedim.
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: muhittin_kaplan - 10 Mayıs 2014, 21:30:43
ilhan yaptığın çalışma ile ilgili kodlarını koyarsan dahada yardımcı oluruz. gayet basit aslında
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: ilhan_mkp - 10 Mayıs 2014, 21:36:58
hocam daha kod yok ortada asıl sorun bu zaten  :-\
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: predator - 10 Mayıs 2014, 22:06:58
vb6 için biliyoum, burdaki kritik nokta mscomm1.rthreshold=1 yapmak, gerisi mscomm1.input, belki 2010da da böyle bişey vardır
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: ilhan_mkp - 10 Mayıs 2014, 22:19:39
hocam bir örnek var aslında ama ben bu kadar seçenek istemiyorum
http://tiktakx.wordpress.com/2010/11/21/serial-port-interfacing-with-vb-net (http://tiktakx.wordpress.com/2010/11/21/serial-port-interfacing-with-vb-net)

daha basit bişi yapmaya çalışıyorum adam butonların isimleri falan değiştirmiş bişi anlamıyom hani buton1 buton1 olarak kalsa kodmu butonun adımı anlıyacam formda 1 kutuda gönderdiğim tek bir byte görülsün istiyorum

bunlar ne için eklendi mesela hiç bir fikrim yok
Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.IO.Ports
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: muhittin_kaplan - 10 Mayıs 2014, 22:43:11
http://muhittinkaplan.com/2013/07/stm32f4discovery-ile-mpu-6050-3-eksen-gyro-ve-3-eksen-ivmeolcer/#more-197 (http://muhittinkaplan.com/2013/07/stm32f4discovery-ile-mpu-6050-3-eksen-gyro-ve-3-eksen-ivmeolcer/#more-197)

mesaj birleştirme:: 10 Mayıs 2014, 22:43:32

hocam burada bir seriport örneği vardır
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: kudretuzuner - 10 Mayıs 2014, 23:13:12
Merhaba,
Seriport1  "SerialPort1_DataReceived"eventına aşağıdaki kod ile PIC PC'ye klavye sıfır yolladığı zaman formdaki
picturebox1'in rengi kırmızı olur.
   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 PC'ye yolladığı bir byte lık data
            PictureBox1.BackColor = Color.Red
        End If
        '--------------------------------------------------------
    End Sub
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: ilhan_mkp - 11 Mayıs 2014, 13:23:33
(http://s28.postimg.cc/bwxp1tpih/v_b.jpg) (http://postimg.cc/image/bwxp1tpih/)
Imports System
Imports System.Threading
Imports System.IO.Ports
Imports System.ComponentModel


Public Class Form1
    '------------------------------------------------
    Dim myPort As Array
    Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data
    '------------------------------------------------
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        myPort = IO.Ports.SerialPort.GetPortNames()
        ComboBox1.Items.AddRange(myPort)



    End Sub
    '------------------------------------------------
    Private Sub ComboBox1_Click(sender As System.Object, e As System.EventArgs) Handles ComboBox1.Click
    End Sub
    '------------------------------------------------
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        SerialPort1.PortName = ComboBox1.Text
        SerialPort1.BaudRate = ComboBox2.Text
        SerialPort1.Open()
        Button1.Enabled = False

        Button4.Enabled = True

    End Sub



    Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
        SerialPort1.Close()
        Button1.Enabled = True

        Button4.Enabled = False
    End Sub

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

    Private Sub ReceivedText(ByVal [text] As String) 'input from ReadExisting
        If Me.RichTextBox2.InvokeRequired Then
            Dim x As New SetTextCallback(AddressOf ReceivedText)
            Me.Invoke(x, New Object() {(text)})
        Else
            Me.RichTextBox2.Text &= [text] 'append text
        End If
    End Sub

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

    End Sub

    Private Sub RichTextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox2.TextChanged

    End Sub
End Class


muhittin hocam sizin koda bakaraktan bulduğum daha basit bir örneği sadeleştirdim gelen bytelar yazılıyo ama ben bu gelen dataları işlemek istiyorum bunları bir array içine nasıl alırım
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: muhittin_kaplan - 11 Mayıs 2014, 15:08:35
ilhan gönderdiğiniz bilgi nasıl bir formatta ?
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: ilhan_mkp - 11 Mayıs 2014, 15:48:59
unsigned char temp[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x0d,0x0a};

hocam ascii olarak gönderdim  yukarıdaki diziyi gönderdim denemek için
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: muhittin_kaplan - 11 Mayıs 2014, 16:04:16
benim genelde uyguladığım yöntem şu bunların hepsini sprintf ile bir string e alıyorum sonuna \r\n kuyuyorum ve gönderiyorum.

pc tarafınnda readline ile alıyorum. bu \r\yi görene kadar alıp bir değişkenin içerisine atıyor.
sonra istediğin gibi böl parçala


mesaj birleştirme:: 11 Mayıs 2014, 16:04:31

sana verdiğim örnek öyle olması lazım
Başlık: Ynt: visual basic seriporttan nasil veri alınır
Gönderen: ilhan_mkp - 12 Mayıs 2014, 00:26:28
hocam veriyi read line ile aldım mesaj boyu her veri paketi geldiğinde uzuyor.
bufferi her veri paketi alımında temizlememmi gerikiyor