By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,960 Members | 1,142 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,960 IT Pros & Developers. It's quick & easy.

help for the code

P: 32
Can somebody help? Really need help.
I got this sample from internet but there some parts I could not understand well why we have to use the thing for ..

Hope can seek some advice through this forum...thanks..

Expand|Select|Wrap|Line Numbers
  1. Private Sub Receiver(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles COMPort.DataReceived
  2.   ' Note this subroutine is executed on the serial port thread - not the UI thread.
  3.   Dim RXByte, Nibble As Byte
  4.   Dim RXArray(2047) As Char
  5.   Dim I As Integer = 0
  6.   Do
  7.     RXByte = COMPort.ReadByte
  8.     Nibble = (RXByte >> 4) + 48          ' Convert received byte to Hex
  9.  
  10.     If Nibble > 57 Then
  11.       Nibble = Nibble + 7
  12.     End If
  13.     RXArray(I) = Chr(Nibble)
  14.     I = I + 1
  15.     Nibble = (RXByte And 15) + 48
  16.     If Nibble > 57 Then
  17.       Nibble = Nibble + 7
  18.     End If
  19.     RXArray(I) = Chr(Nibble)
  20.     I = I + 1
  21.     RXArray(I) = " "
  22.     I = I + 1
  23.     SpaceCount = (SpaceCount + 1) And 31 ' Insert spaces and CRLF for better readability
  24.     If SpaceCount = 0 Then               ' Insert CRLF after 32 numbers
  25.       RXArray(I) = Chr(13) ' CR
  26.       I = I + 1
  27.       RXArray(I) = Chr(10) ' LF
  28.       I = I + 1
  29.     Else
  30.       If (SpaceCount And 3) = 0 Then   ' Insert two extra spaces for each 4 numbers
  31.         RXArray(I) = " "
  32.         I = I + 1
  33.         RXArray(I) = " "
  34.         I = I + 1
  35.       End If
  36.     End If
  37.   Loop Until (COMPort.BytesToRead = 0)
  38.   Dim RxString As New String(RXArray, 0, I) ' Convert the first part of the Char Array to a String
  39.   ' Put a message with a delegate, which points to the display routine and holds the RxString,
  40.   '   on the message queue and return immediately.
  41.   Me.BeginInvoke(New StringSubPointer(AddressOf Display), RxString)
  42. End Sub
  43.  
  44. ' Text display routine, which appends the received string to any text in the Received TextBox.
  45.  
  46. Private Sub Display(ByVal Buffer As String)
  47.   Received.AppendText (Buffer)
  48. End Sub
  49.  
  50. ' Transmitter subroutine.
  51.  
  52. Private Sub Transmitter(ByVal sender As Object, ByVal e As EventArgs) Handles SendButton.Click
  53.   Received.AppendText ("TX" & vbCrLf)       ' Switch to a new line after every transmission
  54.   SpaceCount = 0
  55.   Dim TextString As String
  56.   Dim TXArray(2047) As Byte
  57.   Dim I As Integer
  58.   Dim J As Integer = 0
  59.   Dim Ascii As Boolean = False
  60.   Dim Quote As Boolean = False
  61.   Dim Temp As Boolean
  62.   Dim Second As Boolean = False
  63.   Dim TXByte As Byte = 0
  64.   Dim CharByte As Byte
  65.  
  66.   If COMPort.IsOpen Then
  67.     TextString = Transmitted.Text
  68.     For I = 0 To TextString.Length - 1
  69.       CharByte = Asc(TextString.Chars(I))
  70.       If CharByte = 34 Then ' If " Then
  71.         Temp = Ascii
  72.         Ascii = Ascii Or Quote
  73.         Quote = Not (Temp And Quote)
  74.       Else
  75.         Ascii = Ascii Xor Quote
  76.         Quote = False
  77.       End If
  78.       If Not Quote Then
  79.         If Ascii Then
  80.           TXArray(J) = CharByte
  81.           J = J + 1
  82.         Else
  83.           If (CharByte <> 32) And (CharByte <> 10) And (CharByte <> 13) Then ' Skip spaces, LF and CR
  84.             CharByte = (CharByte - 48) And 31 ' And 31 makes it case insensitive
  85.             If CharByte > 16 Then
  86.               CharByte = CharByte - 7
  87.             End If
  88.             If Second Then
  89.               TXArray(J) = TXByte + CharByte
  90.               Second = False
  91.               J = J + 1
  92.             Else
  93.               TXByte = CharByte << 4
  94.               Second = True
  95.             End If
  96.           End If
  97.         End If
  98.       End If
  99.     Next
  100.     Try
  101.       COMPort.Write(TXArray, 0, J)
  102.     Catch ex As Exception
  103.       MsgBox (ex.Message & "  Check CTS signal or set Flow Control to None.")
  104.     End Try
  105.   Else
  106.     thanks again..
  107.     MsgBox ("COM port is closed. Please select a COM port")
  108.   End If
  109. End Sub
  110.  
Sep 6 '07 #1
Share this Question
Share on Google+
1 Reply


P: 32
dyc
RXByte = COMPort.ReadByte

How we can noe how byte it is for the COMPort, in this case the COMPort is a variable name for the serial Port..
thanks..I totally lsot...
Sep 6 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.