Go Down

Topic: Serial data to Visual Basic, Visual C++, Java (Read 8 times) previous topic - next topic


Hey I think I found the source code for the chat VB application.

Pasting it:

Visual Basic 2005 band up - Chat over serial port

Imports System
Imports System.IO.Ports
Imports System.Threading

Public Class PortChat
   Shared _continue As Boolean
   Shared _serialPort As SerialPort

   Public Shared Sub Main()
       Dim name As String
       Dim message As String
       Dim sComparer As StringComparer = StringComparer.OrdinalIgnoreCase
       Dim readThread As Thread = New Thread(AddressOf Read)

       ' Create a new SerialPort object with default settings.
       _serialPort = New SerialPort()

       ' Allow the user to set the appropriate properties.
       _serialPort.PortName = SetPortName(_serialPort.PortName)
       _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate)
       _serialPort.Parity = SetPortParity(_serialPort.Parity)
       _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits)
       _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits)
       _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake)

       ' Set the read/write timeouts
       _serialPort.ReadTimeout = 500
       _serialPort.WriteTimeout = 500

       _continue = True

       Console.Write("Name: ")
       name = Console.ReadLine()

       Console.WriteLine("Type QUIT to exit")

       While (_continue)
           message = Console.ReadLine()

           If sComparer.Equals("quit", message) Then
               _continue = False
               _serialPort.WriteLine( _
                   String.Format("<{0}>: {1}", name, message))
           End If
       end while

   End Sub

   Public Shared Sub Read()
       While (_continue)
               Dim message As String = _serialPort.ReadLine()
           Catch ex As TimeoutException
               ' Do nothing
           End Try
       End While
   End Sub

   Public Shared Function SetPortName(ByVal defaultPortName As String) As String
       Dim newPortName As String

       Console.WriteLine("Available Ports:")
       Dim s As String
       For Each s In SerialPort.GetPortNames()
           Console.WriteLine("   {0}", s)
       Next s

       Console.Write("COM port({0}): ", defaultPortName)
       newPortName = Console.ReadLine()

       If newPortName = "" Then
           newPortName = defaultPortName
       End If
       Return newPortName
   End Function

   Public Shared Function SetPortBaudRate(ByVal defaultPortBaudRate As Integer) As Integer
       Dim newBaudRate As String

       Console.Write("Baud Rate({0}): ", defaultPortBaudRate)
       newBaudRate = Console.ReadLine()

       If newBaudRate = "" Then
           newBaudRate = defaultPortBaudRate.ToString()
       End If

       Return Integer.Parse(newBaudRate)
   End Function

   Public Shared Function SetPortParity(ByVal defaultPortParity As Parity) As Parity
       Dim newParity As String

       Console.WriteLine("Available Parity options:")
       Dim s As String
       For Each s In [Enum].GetNames(GetType(Parity))
           Console.WriteLine("   {0}", s)
       Next s

       Console.Write("Parity({0}):", defaultPortParity.ToString())
       newparity = Console.ReadLine()

       If newparity = "" Then
           newparity = defaultPortParity.ToString()
       End If

       Return CType([Enum].Parse(GetType(Parity), newParity), Parity)
   End Function

   Public Shared Function SetPortDataBits(ByVal defaultPortDataBits As Integer) As Integer
       Dim newDataBits As String

       Console.Write("Data Bits({0}): ", defaultPortDataBits)
       newDataBits = Console.ReadLine()

       If newDataBits = "" Then
           newDataBits = defaultPortDataBits.ToString()
       End If

       Return Integer.Parse(newDataBits)
   End Function

   Public Shared Function SetPortStopBits(ByVal defaultPortStopBits As StopBits) As StopBits
       Dim newStopBits As String

       Console.WriteLine("Available Stop Bits options:")
       Dim s As String
       For Each s In [Enum].GetNames(GetType(StopBits))
           Console.WriteLine("   {0}", s)
       Next s

       Console.Write("Stop Bits({0}):", defaultPortStopBits.ToString())
       newStopBits = Console.ReadLine()

       If newStopBits = "" Then
           newStopBits = defaultPortStopBits.ToString()
       End If

       Return CType([Enum].Parse(GetType(StopBits), newStopBits), StopBits)
   End Function

   Public Shared Function SetPortHandshake(ByVal defaultPortHandshake As Handshake) As Handshake
       Dim newHandshake As String

       Console.WriteLine("Available Handshake options:")
       Dim s As String
       For Each s In [Enum].GetNames(GetType(Handshake))
           Console.WriteLine("   {0}", s)
       Next s

       Console.Write("Stop Bits({0}):", defaultPortHandshake.ToString())
       newHandshake = Console.ReadLine()

       If newHandshake = "" Then
           newHandshake = defaultPortHandshake.ToString()
       End If

       Return CType([Enum].Parse(GetType(Handshake), newHandshake), Handshake)
   End Function
End Class


 Thanks auerlg.

  I'm messing around with Processing right now ... not as easy as I initially thought it would be. I figured out last night how to print my data to a window using text();   ... still trying to figure out how to refresh it without overlapping the previous value.

 I guess I should still look into using VB. Is that code for the 2 way chat program? If so ... how easy would it be for me to use this for one-way communication (Arduino to VB) ?



Hello All.

Are there anybody that has a VB 2008 Express program running to control the Arduino.
maby someone can make a toturical on switching a led on and off from VB,
and reading a bottom press in VB from Arduino input.

Just to get us beginners started.



I don't know if you are interested, but I adapted some serial C++ class for its use under linux.

The code is posted in this website https://webfiles.uci.edu/cagell/news/news.htm, along with some other useful codes.

Let me know if it helped!!!



May 16, 2008, 04:49 pm Last Edit: May 16, 2008, 04:51 pm by MikMo Reason: 1
sorry for the delay. i just got sidetracked by work and new grilfriend :-)

Here's a link to my VB projekt. It's only one way Arduino -> VB, but i should be a piece of cake to also send the other way.

If anbody modify it please post here so we can share our VB <-> Arduino experiences


Wouldn't it be nice to make some kind of "generalised" VB class or component to interface with Arduino, mabe even some kind of dataexchange protocol on top of it ?

Go Up