Go Down

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

auerlg

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

       _serialPort.Open()
       _continue = True
       readThread.Start()

       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
           Else
               _serialPort.WriteLine( _
                   String.Format("<{0}>: {1}", name, message))
           End If
       end while

       readThread.Join()
       _serialPort.Close()
   End Sub

   Public Shared Sub Read()
       While (_continue)
           Try
               Dim message As String = _serialPort.ReadLine()
               Console.WriteLine(message)
           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

pd2kplus10

 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) ?


thanks,
Phil

reak_dk

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.

Regards
   Brian  

dolphin

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!!!


Dolphin

MikMo

#14
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

EDIT :

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