This example illustrates communicating with a VectorNav sensor over a serial port.
class Program
{
static void Main(string[] args)
{
const string SensorPort = "COM1";
const UInt32 SensorBaudrate = 115200;
var vs = new VnSensor();
vs.Connect(SensorPort, SensorBaudrate);
var mn = vs.ReadModelNumber();
Console.WriteLine("Model Number: {0}", mn);
var ypr = vs.ReadYawPitchRoll();
Console.WriteLine("Current YPR: {0}", ypr);
var ymaa = vs.ReadYawPitchRollMagneticAccelerationAndAngularRates();
Console.WriteLine("Current YPR: {0}", ymaa.YawPitchRoll);
Console.WriteLine("Current Magnetic: {0}", ymaa.Mag);
Console.WriteLine("Current Acceleration: {0}", ymaa.Accel);
Console.WriteLine("Current Angular Rates: {0}", ymaa.Gyro);
var oldHz = vs.ReadAsyncDataOutputFrequency();
vs.WriteAsyncDataOutputFrequency(2);
var newHz = vs.ReadAsyncDataOutputFrequency();
Console.WriteLine("Old Async Frequency: {0} Hz", oldHz);
Console.WriteLine("New Async Frequency: {0} Hz", newHz);
var vpeReg = vs.ReadVpeBasicControl();
Console.WriteLine("Old Heading Mode: {0}", vpeReg.HeadingMode);
vs.WriteVpeBasicControl(vpeReg);
vpeReg = vs.ReadVpeBasicControl();
Console.WriteLine("New Heading Mode: {0}", vpeReg.HeadingMode);
var asyncType = vs.ReadAsyncDataOutputType();
Console.WriteLine("ASCII Async Type: {0}", asyncType);
vs.AsyncPacketReceived += AsyncPacketReceived;
Console.WriteLine("Starting sleep...");
Thread.Sleep(5000);
vs.AsyncPacketReceived -= AsyncPacketReceived;
var bor = new BinaryOutputRegister(
200,
vs.WriteBinaryOutput1(bor);
vs.AsyncPacketReceived += AsciiOrBinaryAsyncPacketReceived;
Console.WriteLine("Starting sleep...");
Thread.Sleep(5000);
vs.AsyncPacketReceived -= AsciiOrBinaryAsyncPacketReceived;
vs.Disconnect();
}
private static void AsyncPacketReceived(object sender, PacketFoundEventArgs packetFoundEventArgs)
{
var packet = packetFoundEventArgs.FoundPacket;
return;
return;
vec3f ypr;
packet.ParseVNYPR(out ypr);
Console.WriteLine("ASCII Async YPR: {0}", ypr);
}
private static void AsciiOrBinaryAsyncPacketReceived(object sender, PacketFoundEventArgs packetFoundEventArgs)
{
var packet = packetFoundEventArgs.FoundPacket;
{
vec3f ypr;
packet.ParseVNYPR(out ypr);
Console.WriteLine("ASCII Async YPR: {0}", ypr);
}
{
if (!packet.IsCompatible(
return;
var timeStartup = packet.ExtractUint64();
var ypr = packet.ExtractVec3f();
Console.WriteLine("Binary Async TimeStartup: {0}", timeStartup);
Console.WriteLine("Binary Async YPR: {0}", ypr);
}
}
}