I would like to take the opportunity and introduce myself to the community. I’m a happy owner of a G120E dev board and just like everyone else in the community, I have tons of ideas I would love to implement. My name is Stylianos and I am based in Athens, Greece. I’m a Control & Systems engineer with extensive experience in power plants having executed numerous projects in Greece, Ireland and USA. I’m posting below a youtube video showcasing my early experimentation with NetMF. I hope you enjoy it!
In addition to linking, you can also embed videos using the video tag…look for the camera icon in the editor toolbar. Just stick the video URL between the tags, like so:
@ Mr. John Smith - Yes it is. My blown IC count so far is zero! Lol, I witnessed my father blowing too many capacitors and ICs over the years that I learned his lesson ;D
@ Mr. John Smith - Yes, I’ve seen a few posts on forums regarding their reliability. I have been using them for about a year now without any problems so far. The truth is that I’ve been using G120E/Arduino Uno 5V output to supply them. The temperature of their ICs looks normal (not overheating) so far. I’ll let you know if they fail.
@ Dave McLaughlin - Yes, it is the Xminilab indeed. They come with a software oscilloscope (via USB) that looks pretty descent so far. Do you mean a software voltage/current monitor or a hardware one?
@ polytronic - really great Video! I’d like to know a liitle bit more about your USB-Camera sample. Which USB-Camera did you use? Can you give some hints at the code?
@ RoSchmi - Certainly, I’m posting below the camera class. It’s based on GHI.Usb.Host.Webcam object.
using System;
using System.Threading;
using GHI.Usb.Host;
using Microsoft.SPOT;
public class UsbCamera
{
private Bitmap lcd;
private Webcam webCamera;
private Webcam.ImageFormat[] imageFormats;
private Webcam.ImageFormat usedFormat;
private Thread videoThread;
private int selectedformatindex = 0;
public UsbCamera(int width, int height, Webcam dev)
{
lcd = new Bitmap(width, height);
webCamera = dev;
webCamera.Disconnected += OnDisconnected;
}
private void OnDisconnected(BaseDevice sender, EventArgs eventArgs)
{
webCamera.StopStreaming();
videoThread.Abort();
Running = false;
}
public void Start()
{
if (Running) return;
if (null != webCamera)
{
imageFormats = webCamera.SupportedFormats;
if (imageFormats.Length > 0)
{
usedFormat = imageFormats[selectedformatindex];
webCamera.StartStreaming(usedFormat);
Running = true;
// run a thread to display the video
videoThread = new Thread(VideoThread);
videoThread.Start();
}
}
}
public void Stop()
{
webCamera.StopStreaming();
videoThread.Abort();
Running = false;
}
private void VideoThread()
{
try
{
lcd.Clear();
while (true)
{
if (null != webCamera && webCamera.IsNewImageAvailable())
{
webCamera.GetImage(lcd,
(lcd.Width - webCamera.CurrentStreamingFormat.Width) / 2,
(lcd.Height - webCamera.CurrentStreamingFormat.Height) / 2,
webCamera.CurrentStreamingFormat.Width,
webCamera.CurrentStreamingFormat.Height
);
lcd.Flush();
}
}
}
catch (Exception e)
{
Debug.Print("Exception: " + e.Message);
}
}
public bool Running { get; set; }
}
In order to use it you exploit the GHI.Usb.Host.Controller.WebcamConnected event. At the handler of that event you pass the GHI.Usb.Host.Webcam object that you receive to the above class constructor (third parameter)