To get started, lets look at the code for the Arduino:
int led = 13;
bool flag = true;
void setup()
{
pinMode(9, OUTPUT);
}
void loop()
{
Serial.begin(9600);
Serial.println("Hello World!");
Serial.end();
Toggle();
delay(500);
}
void Toggle(){
if(flag) digitalWrite(led, HIGH);
else digitalWrite(led, LOW);
flag = !flag;
}
For every 500 milliseconds, the board will send the message "Hello World!" via USB to the computer. Any program listening on that port, will hear the message. (I added a little extra code that toggles an on-board LED on and off after every consecutive message sent - just to signify it itself is functioning properly.)
Serial.begin() primes the USB for data transfer and the (9600) portion is the baud rate (pulses per second - the ancestor of bits per second).
Serial.end() ends the transmission and releases control of the port.
Serial.println() writes ASCII data to the port.
A list of Serial functions can be found on Arduino.cc under References: http://arduino.cc/en/Reference/Serial
Now on to the computer side of things:
using System;
using System.IO.Ports;
using System.Threading;
namespace Arduino_SerialReader
{
class Program
{
static SerialPort port;
static void Main(string[] args)
{
port = new SerialPort("COM", 9600, Parity.None);
Thread reader = new Thread(Read);
port.ReadTimeout = 500;
port.Open();
reader.Start();
}
static void Read()
{
bool flag = true;
while (flag)
{
try
{
string message = port.ReadLine();
Console.WriteLine(message);
}
catch { }
}
}
}
}
First, create a SerialPort object and give it a name: 'COM', the same baud rate set for the Arduino board (9600), and finally, no parity checking. (A parity bit is a simple way of error checking data received; more on parity checking can be found here) Purposefully, I set the timeout to be the same as my first app so to be almost perfectly synchronous.
Open the port and start the Read thread. The read thread is a separate thread that will indefinitely listen for any and all incoming messages on the port and then print them to the console.
So where is the code to write a file? Well, by now you would know enough to take it from here, but if you really need to know how to write a file in C#, here is a simple one-liner hack:
File.WriteAllText("filename.txt", "your string here");
More file handling example can be found here: microsoft OR stackoverflow
Feel free to ask questions!
No comments:
Post a Comment