Forum
merhaba arkadaşlar
visual basic 2010 .net kullanmaktayım. bir konuda takıldım yardımcı olabilirmisiniz. acaba. seriport tan gelen bilgiyi textbox a yazdırmak istiyorum. formun üzerine bir tane timer ekledim. bir tanede seriport1 ve textbox1. seri porta gelen veriyi textboxa nasıl aktarabilirim acaba. aşağıda bir kod var ama bununlada bir türlü çalışmıyor
SerialPort1.Open()
SerialPort1.Read(Chr(TextBox1.Text))
SerialPort1.Close()
Private Sub DataAL()
Dim Data As Variant
Do
DoEvents
Loop Until Serialport1.InBufferCount > 0
Data = Serialport1.Input
textbox1.text= Data
End Sub
merhaba, yardımlarınız için teşekkür ederim. yalnız bu kodlar visual basic 2010 da çalışmıyor. ben bir yerde hatamı yapıyorum acaba
Projende "Imports System.IO.Ports " class ı eklimi ?
portu açma olayını timer in dışında yapmayı denermisin? hatta tüm işlemleri timer ın dışında yap.Timer olayının interval süresi içersinde herhangi bir data alınmadığında textboxa yazmaz. Bir buton koy butona tıklandığında portu açsın sonra döngü kurarak gelen veriyi textboxa aktarabilirisn.
"SerialPort1.Read(Chr(TextBox1.Text)) " bu komut satırını
aşağıdaki gibi yaparak deneyebilirsin.
data=SerialPort1.ReadLine()
textbox1.text=data
merhaba, söylediğiniz şekilde yaptığımda hata veriyor. data komutunun alt satırı hatalı şeklinde uyarısı var. öncelikle şunu anlatayım. bir tane dışardan çalışan özel bir buton var. özel yapım bir buton. butona basınca programda textboxın içerisinde "A1" şeklinde bir komut geliyor. timer nesnesi eklememin nedeni sürekli sorgu yapması. timer ı kullanmak benimde işime gelmiyor. şimdi aşağıdaki şekilde komutları kullandığım da seri port tan veri alışı yapmayı başardım. ama timer nesnesi canımı sıkıyor. aşağıdaki kodları incelerseniz eğer timer nesnesi olmadan nasıl veriyi alabilirim.
Public Class Form1
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If SerialPort1.IsOpen Then
Dim data As String = SerialPort1.ReadExisting()
Try
TextBox1.Text = data
Catch ex As Exception
End Try
End If
If TextBox1.Text = "1.bant" Then TextBox2.Text = "1.BANT"
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Show()
Try
SerialPort1.Close()
SerialPort1.PortName = "COM2"
SerialPort1.Open()
TextBox1.Text = SerialPort1.ReadChar
Catch ex As Exception
MessageBox.Show(ex.Message, "COM2")
End Try
End Sub
End Class
************ Verinin otomatik olarak çekilmesi
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, _ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _Handles SerialPort1.DataReceived
inputData = SerialPort1.ReadExisting
Me.Invoke(New EventHandler(AddressOf GelenData))
End Sub
************* Alınan verinin kontrollerde gösterilmesi
Public Sub GelenData()
TextBox1.Text = TextBox1.Text & inputData
End Sub