Table of contents
No headers
This page is for those who already use the Turbo Dispatch protocol, and want a to use the built in TD parser. See sending example here.
1. Add the following .DLL files as a reference to your project.
turboExchange35.dll
protobuff-net.dll
2. Add the following code decleration the the main static class that starts the program (Program.cs)
TIP: click on "view plain"
static clsTurboMessageMill TurboMessage; static public turboExchange.Network.clsTurboClient turboClient;
3. Add the following code in your Main() procedure
//Initialise TurboExchange Client
TurboMessage = new clsTurboMessageMill();
turboClient = new turboExchange.Network.clsTurboClient(TurboMessage);
//Set username & password
turboClient.Authentication.Username = "MyUsername";
turboClient.Authentication.PasswordString = "MyPassword";
//Start comms connection, with a 1 second delay (gives everything a chance to initialise)
turboClient.ConnectAsyc(turboExchange.Network.clsTurboClient.KeepAlive.Always,1000);
//Listen to comms events
turboClient.EventConnectionStatus += new turboExchange.Network.clsTurboClient.envStatus(turboClient_EventStatus);
turboClient.EventUnsentMessage += new turboExchange.Network.clsTurboClient.envUnsentMessage(turboClient_EventUnsentMessage);
}
static void turboClient_EventUnsentMessage(turboExchange.Messages.MessageWrapper wrap)
{
}
static void turboClient_EventStatus(turboExchange.Network.clsTurboClient.enumStatus eStatus)
{
}
4. Before your application closes
turboClient.Close();
5. Add the following class "clsTurboExchangeMill"
using System;
using System.Text;
using System.IO;
using ProtoBuf;
using turboExchange;
using turboExchange.Messages;
namespace turboExchangeExample
{
class clsTurboMessageMill : turboExchange.ITurboClientMill
{
public turboExchange.Network.clsTurboClient Client { get; set; }
/// <summary>
/// Authentication accepted
/// </summary>
public void LoggedIn()
{
}
/// <summary>
/// Connection Logged out (connection thread may still be active)
/// </summary>
public void LoggedOut()
{
}
public void ProcessMessage(MessageWrapper wrap)
{
try
{
Console.WriteLine("RX message: {0}",wrap._messageType.ToString());
//Turbo Exchange Recovery Data
if ((int)wrap._messageType >= 1000 && (int)wrap._messageType < 2000)
{
//Convert to TD format
String TDData = turboExchange.TurboDispatch.clsTDConverter.ProcessIncomingMessage(wrap);
Console.WriteLine(TDData); //**Turbo Dispatch Data
}
else
{
//Process other Turbo Exchange data (Example)
switch (wrap._messageType)
{
case MessageWrapper.MessageType.turboTurboData:
Console.WriteLine(Encoding.UTF8.GetString(wrap._payload));
break;
case MessageWrapper.MessageType.gpsTrackerMessage:
var gps = wrap._payload.DeserializeProtoBytes<turboExchange.Messages.GPS.TrackerMessage>();
Console.WriteLine(turboExchange.TurboDispatch.clsTDConverter.GPSMessage(gps));
break;
case MessageWrapper.MessageType.serverSMSStatus:
var SMSstatus = wrap._payload.DeserializeProtoBytes<turboExchange.Messages.networkServices.SMSMessageStatus>();
if (SMSstatus._statusMessageSpecified)
Console.WriteLine("TurboExchange SMS Server:\r\n" + SMSstatus._statusMessage);
break;
}
}
}
catch (Exception ex)
{
Console.WriteLine("ProcessMessage Error - " + ex.Message);
}
}
/// <summary>
/// Connection disconnected, may reconnect
/// </summary>
/// <param name="reason"></param>
public void Disconnected(turboExchange.Messages.Authentication.Logout.LogoutReason reason)
{
}
/// <summary>
/// Triggered when the watchdog fires (~1 min or less)
/// </summary>
public void WatchdogTimer()
{
}
/// <summary>
/// Connection is closing (Forced - e.g. application shutdown)
/// </summary>
public void Close()
{
}
}
}
To send a message see example.
