Import Soul Wouldn’t it be nice if things just worked

14Sep/090

Arduino and MSN

Since somebody asked i have written up how to get MSN and Arduino to communicate.

Firstly, i use Windows Live Messenger Plus (Go here to find out about it if you dont have it). MSN Plus allows you to download plug-ins for MSN, and it mean you can write your own, the scripts are written in a variant of Microsoft's JScript 5.6.

From there all i had to do was find out how to connect to a serial port useing JScript, i found you could open a serial port like a file like this

com = fso.OpenTextFile("COM7:9600,N,8,1",2);

However that only seemed to work if the serial port had been opened previously so i kind of cheated and just made a Python file that opens the serial port and then disconnects.

import serial
import time

ser = serial.Serial('COM7',9600)
time.sleep(2) ## wait for the arduino to do its software reset thing
ser.close()

Now that that the msn is able to connect to the Arduino is simple to write strings to it but don't forget to close it and don't forget that when you close the serial connection the Arduino resets.

com = fso.OpenTextFile("COM7:9600,N,8,1",2);
com.Write("Something");
com.Close();

I wont post the full code here for my script to turn on msn lights unless somebody particularly wants it as i don't think it is written very well

function OnEvent_Initialize(MessengerStart)
{
fso = new ActiveXObject("Scripting.FileSystemObject");

// run the python script that wakes up the serial port
oShell = new ActiveXObject("WScript.Shell");
var command = "\"C:\\Program Files\\Python25\\python.exe\" \"C:\\Program Files\\Messenger Plus! Live\\Scripts\\wallchart\\open.py\"";
Debug.Trace(oShell.Run( command,0,true)); // wait for it to finish

// Connect to the serial port make sure you wait at least 2 seconds before writeing to it
fso = new ActiveXObject("Scripting.FileSystemObject");
com = fso.OpenTextFile("COM7:9600,N,8,1",2);
}

function OnEvent_ContactSignIn(email)
{
// Say something about who logged in to the serial
com.Write(data);
}

function OnEvent_ContactSignOut(email)
{
// Say something about who logged out to the serial
com.Write(data);
}

function OnEvent_Uninitialize(MessengerStart)
{
// Close the serial port when messenger closes
com.Close()
Debug.Trace("Closed");
}

Well that's it and i hope i managed to explain how to get MSN and arduino to talk to each other, there are many more events that would could catch data from to send to the arduino i recommend for people to read though the MSN plus developers manual here

Also this method is slightly flawed in that it is one way, i will look into a way that can read and write data to the serial port without disconnecting and reconnecting.

Good luck

EDIT: Raymond found out that this method only works with single digit COM ports e.g. COM7 as opposed to COM15

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

No trackbacks yet.