dcsimg
Results 1 to 3 of 3

Thread: RS232 end transmission character

  1. #1

    Thread Starter
    New Member
    Join Date
    Oct 2011
    Posts
    3

    RS232 end transmission character

    Like the title says, i have a code written in vb.net that receives data from a PIC microcontroller via rs232, but i need a way to know when te trasmission ends. I have put the word "END" in the microcontroller code so that after he sends all the data , will send the word "END" ..so i need to implement this in my vb.net code and when "END" is received to display "finish" popup message.
    Thanks verry much , Maria
    Code:
    Imports System
    Imports System.ComponentModel
    Imports System.Threading
    Imports System.IO.Ports
    Public Class form3
        Dim myPort As Array  'COM Ports detected on the system will be stored here
        Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data
    
        Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'When our form loads, auto detect all serial ports in the system and populate the cmbPort Combo box.
            myPort = IO.Ports.SerialPort.GetPortNames() 'Get all com ports available
            cmbBaud.Items.Add(9600)     'Populate the cmbBaud Combo box to common baud rates used   
            cmbBaud.Items.Add(19200)
            cmbBaud.Items.Add(38400)
            cmbBaud.Items.Add(57600)
            cmbBaud.Items.Add(115200)
    
            For i = 0 To UBound(myPort)
                cmbPort.Items.Add(myPort(i))
            Next
            cmbPort.Text = cmbPort.Items.Item(0)    'Set cmbPort text to the first COM port detected
            cmbBaud.Text = cmbBaud.Items.Item(0)    'Set cmbBaud text to the first Baud rate on the list
    
            btnDisconnect.Enabled = False           'Initially Disconnect Button is Disabled
    
        End Sub
    
        Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
            SerialPort1.PortName = cmbPort.Text         'Set SerialPort1 to the selected COM port at startup
            SerialPort1.BaudRate = cmbBaud.Text         'Set Baud rate to the selected value on 
    
            'Other Serial Port Property
            SerialPort1.Parity = IO.Ports.Parity.None
            SerialPort1.StopBits = IO.Ports.StopBits.One
            SerialPort1.DataBits = 8            'Open our serial port
            SerialPort1.Open()
    
            btnConnect.Enabled = False          'Disable Connect button
            btnDisconnect.Enabled = True        'and Enable Disconnect button
    
        End Sub
    
        Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
            SerialPort1.Close()             'Close our Serial Port
    
            btnConnect.Enabled = True
            btnDisconnect.Enabled = False
        End Sub
    
        Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
            SerialPort1.Write(txtTransmit.Text & vbCr) 'The text contained in the txtText will be sent to the serial port as ascii
            'plus the carriage return (Enter Key) the carriage return can be ommitted if the other end does not need it
        End Sub
    
        Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            ReceivedText(SerialPort1.ReadExisting())    'Automatically called every time a data is received at the serialPort
        End Sub
        Private Sub ReceivedText(ByVal [text] As String)
            'compares the ID of the creating Thread to the ID of the calling Thread
            If Me.rtbReceived.InvokeRequired Then
                Dim x As New SetTextCallback(AddressOf ReceivedText)
                Me.Invoke(x, New Object() {(text)})
            Else
                Me.rtbReceived.Text &= [text]
            End If
        End Sub
    
        Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged
            If SerialPort1.IsOpen = False Then
                SerialPort1.PortName = cmbPort.Text         'pop a message box to user if he is changing ports
            Else                                            'without disconnecting first.
                MsgBox("Valid only if port is Closed", vbCritical)
            End If
        End Sub
    
        Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged
            If SerialPort1.IsOpen = False Then
                SerialPort1.BaudRate = cmbBaud.Text         'pop a message box to user if he is changing baud rate
            Else                                            'without disconnecting first.
                MsgBox("Valid only if port is Closed", vbCritical)
            End If
        End Sub
    End Class

  2. #2
    Fanatic Member
    Join Date
    Sep 2009
    Location
    Lakewood, Colorado
    Posts
    621

    Re: RS232 end transmission character

    Maria,

    I do not see the code for SetTextCallback delegate. This method should be invoked to add text to your textbox. Inside the delegate method, you can add code that scans all of the text in the textbox to locate the "END" part of the message -- then you can add code to do something useful at that point.

    Dick
    Richard Grier, Consultant, Hard & Software
    Microsoft MVP (Visual Basic)

  3. #3

    Thread Starter
    New Member
    Join Date
    Oct 2011
    Posts
    3

    Re: RS232 end transmission character

    thx , SOLVED

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Featured


Click Here to Expand Forum to Full Width