آقا این مخ منو کار گرفته! هر کاری می کنم نمیشه ، یعنی هرچی که می فرستم همونو می خونه. نه چیزی که از میکرو میاد.
باید بعد از \r\n محتویات متغیر رو خالی کنی تا خود داده جدید توش بشینه.
این روش مال زبان سی نیست؟ منکه بلد نیستم توی بیسیک اجراش کنم!
ولی وقتی کد TextBox2.Text += DataReceived میذرام توی یک دکمه ی دیگه درست کار می کنه ، البته اول همون چیزی که خودش می فرسته رو می خونه و بعدش چیزی که از میکرو میاد.
ولی وقتی TextBox2.Text += DataReceived میذارم توی تابع ReadSerialData همون چیزی رو که می فرسته می خونه. مگر اینکه خیلی تند دکمه ی ارسال رو بزنم تا یه چیزایی بخونه.
کد اینه :
[PHP]
Imports System
Imports System.IO.Ports
Public Class Form1
Dim i As Byte = 0
Dim Entr As Char = Chr(13)
Dim portnames() As String
Dim serialdata As String = ""
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If SerialPort1.IsOpen = False Then
TextBox1.Text = "Opening port..."
SerialPort1.Open()
SerialPort1.Write("mrk" + Entr)
'SerialPort1.Close()
End If
End Sub
Private Delegate Sub SerialWork(ByVal Serial As System.IO.Ports.SerialPort)
Private Delegate Sub SetReadSerialData(ByVal data As String)
Dim DataReceived As String = ""
Private Sub SerialWorkProcedure(ByVal Serial As System.IO.Ports.SerialPort)
If SerialPort1.IsOpen Then
Dim _DataReceived As String = SerialPort1.ReadExisting()
ReadSerialData(_DataReceived)
End If
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim SW As New SerialWork(AddressOf SerialWorkProcedure)
SW.BeginInvoke(SerialPort1, Nothing, Nothing)
End Sub
Private Sub ReadSerialData(ByVal data As String)
If Me.InvokeRequired Then
Try
Dim RSD As New SetReadSerialData(AddressOf ReadSerialData)
Me.Invoke(RSD, data)
Catch generatedExceptionName As Exception
End Try
Else
'inja dade vojud darad!
DataReceived += data
TextBox2.Text += DataReceived
data = ""
DataReceived = ""
SerialPort1.Close()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'TextBox2.Text += DataReceived
'DataReceived = ""
'SerialPort1.Close()
End Sub
End Class
[/PHP]