0
Offline
Jr. Member
Karma: 0
Posts: 50
Arduino rocks
|
 |
« on: April 26, 2008, 08:38:14 am » |
Hello all,
I'm interested in sending serial data from an arduino to my PC and have it displayed on either VB,VC++ or Java program. I'm not sure which one would be easiest to do. I would like to be able to make a simple program rather quickly ... nothing too fancy. I just need to display a reading from one sensor.
thanks, Phil
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 38
Arduino rocks
|
 |
« Reply #1 on: April 26, 2008, 03:34:13 pm » |
You might try Processing at http://processing.org/. It uses much the same IDE as the Arduino and is similar in many other respects. There are many examples on the Forum and elsewhere to provide the capability you are seeking.
|
|
|
|
|
Logged
|
|
|
|
|
Tønsberg, Norway
Offline
Full Member
Karma: 0
Posts: 148
Arduino rocks hard!
|
 |
« Reply #2 on: April 30, 2008, 04:22:50 am » |
If you use Visual Basic, communicating with the Arduino is pretty simple stuff. 1. Add the object Microsoft Comm Control 6.0 to your project, and put it on the form. 2. Set the correct properties for MSComm1 (baud-rate, com-port, etc.) This depends on your Arduino-code and your computer setup. 3. Add the following code to the Form_Load() event (double click the form): Private Sub Form_Load() MSComm1.PortOpen = True End Sub 4. Add a Timer to your form (the small clock-symbol-thingie) and set it's interval to something like 100ms (Interval: 100) 5. Add the following code to the timer (double click the timer-object on the form) Private Sub Timer1_Timer() If MSComm1.InBufferCount > 0 Then Dim buf as string buf = MSComm1.Input End If End Sub 6. To send data back to the Arduino, you place the following code in your program (in a button_Click() event or something like that) MSComm1.Output "whatever you want to send"
|
|
|
|
|
Logged
|
Dreaming of extra senses through sensory substitution/agumentation since.. well, for ever.. =P Going to automate my home, just gotta find the perfect DIY solution first!
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 50
Arduino rocks
|
 |
« Reply #3 on: April 30, 2008, 07:44:29 am » |
Thanks guys for the help. I think for now I'm going to start with Processing. It seems to be a lot easier to work with. I would like to play around with some VB & C++ , but I don't think I'm ready for it at the moment.
Thanks for the code Plastbox. That was very helpful. The only thing is ... I don't have VB 6.0 .. I have the free VB 2008 Express. I don't think it has MS Comm. It does have SerialPort.
thanks, Phil
|
|
|
|
|
Logged
|
|
|
|
|
Tønsberg, Norway
Offline
Full Member
Karma: 0
Posts: 148
Arduino rocks hard!
|
 |
« Reply #4 on: April 30, 2008, 07:48:12 am » |
Aaah, ok. I just assumed VB6 as it is by far the most easy windows environment and language to get started with. Also, people whine constantly about the performance and such of programs made with VB6. Up yours, people! When one is talking about small utility-applications and stuff like that, performance doesn't even come into play. 
|
|
|
|
|
Logged
|
Dreaming of extra senses through sensory substitution/agumentation since.. well, for ever.. =P Going to automate my home, just gotta find the perfect DIY solution first!
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 50
Arduino rocks
|
 |
« Reply #5 on: May 01, 2008, 07:01:13 am » |
Yeah ... I don't know why people complain about VB. I don't care about performance differences. It's not like I'm programming a 3D shooter or anything. Besides... I was reading that most programmers aren't even good enough to code in C++ to make it any faster than if it were in VB. I definitely know that I'm not good enough.
I'm more of a hardware guy than a programmer. I would just like to make some quick and easy windows apps that are functional.
Phil
|
|
|
|
|
Logged
|
|
|
|
|
Copenhagen / Denmark
Offline
Edison Member
Karma: 5
Posts: 2346
Do it !
|
 |
« Reply #6 on: May 01, 2008, 10:34:24 am » |
The newer versions of VB ( the .net versions) are not quite as easy to program to use the serial port. But it's possible.
I have some kode that recieves data from Arduino if anybody is interested.
It's a very simple app.
And by the way, in the new versions there is no speed penalty for using VB, it's compiled to the same intermediary language as the other .net languages.
|
|
|
|
« Last Edit: May 01, 2008, 10:35:32 am by MikMo »
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 50
Arduino rocks
|
 |
« Reply #7 on: May 01, 2008, 03:10:08 pm » |
Hello MikMo,
Please do post the code. I would like to see it.
thanks, Phil
|
|
|
|
|
Logged
|
|
|
|
|
Copenhagen / Denmark
Offline
Edison Member
Karma: 5
Posts: 2346
Do it !
|
 |
« Reply #8 on: May 05, 2008, 12:58:32 am » |
I just realized the the VB program is on a computer that i stuffed under my bed to make room for a major party.
I will have it back in place again in a couple of days. My code is based on a small VB sample app. i found somewhere on the internet. It was something like a small two way chat program using a serial line to ceooent two PC's.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 50
Arduino rocks
|
 |
« Reply #9 on: May 05, 2008, 04:07:25 pm » |
Cool
thanks, Phil
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 1
Arduino rocks
|
 |
« Reply #10 on: May 06, 2008, 04:08:05 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 50
Arduino rocks
|
 |
« Reply #11 on: May 07, 2008, 05:00:44 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 3
Arduino rocks
|
 |
« Reply #12 on: May 14, 2008, 06:49:36 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 15
Arduino rocks
|
 |
« Reply #13 on: May 14, 2008, 06:37:34 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Copenhagen / Denmark
Offline
Edison Member
Karma: 5
Posts: 2346
Do it !
|
 |
« Reply #14 on: May 16, 2008, 09:49:45 am » |
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 ?
|
|
|
|
« Last Edit: May 16, 2008, 09:51:35 am by MikMo »
|
Logged
|
|
|
|
|
|