Scripting: Difference between revisions
Created page with "==Introduction to C#== DXLog.net has been written in a way so that bespoke C# scripts can be written by the end user and will be compiled into DXLog.net at runtime. This makes ..." |
|||
| Line 1: | Line 1: | ||
==Introduction to C#== | ==Introduction to C#== | ||
DXLog.net has been written in a way | DXLog.net has been written in such a way that bespoke C# scripts can be written by the end user and will be compiled into DXLog.net at runtime. | ||
This makes DXLog.net very versatile and with a little C# knowledge a very powerful contest logging tool. | This makes DXLog.net very versatile and with a little C# knowledge a very powerful contest logging tool. | ||
To learn the basics about C# there are is lots of free | To learn the basics about C# there are is lots of free on-line help like http://www.homeandlearn.co.uk/csharp/csharp.html | ||
Microsoft have a free fully functional version of Visual Studio called Community 2013, available from https://www.visualstudio.com/en-us/products/visual-studio-community-vs | |||
==Example_Scripts== | |||
There are example scripts in the download directory http://dxlog.net/sw/download/script_examples/ | |||
The following script is an example of a C# script which keeps the Elecraft K3 keyer speed in sync with the CW speed set in DXLog.net<br> | |||
//INCLUDE_ASSEMBLY System.dll | |||
//INCLUDE_ASSEMBLY System.Windows.Forms.dll | |||
//INCLUDE_ASSEMBLY CWKeyer.dll | |||
using System; | |||
using System.Windows.Forms; | |||
using CWKeyer; | |||
namespace DXLog.net | |||
{ | |||
public class Script : ScriptClass | |||
{ | |||
FrmMain mainForm; | |||
public void Initialize(FrmMain main) | |||
{ | |||
mainForm = main; | |||
if (mainForm._cwKeyer != null) | |||
mainForm._cwKeyer.CWSpeedChange += new CWKey.CWSpeedChangeDelegate(handleCWSpeedChange); | |||
} | |||
public void Deinitialize() | |||
{ | |||
if (mainForm._cwKeyer != null) | |||
mainForm._cwKeyer.CWSpeedChange -= handleCWSpeedChange; | |||
} | |||
public void Main(FrmMain main, ContestData cdata, COMMain comMain) | |||
{ | |||
} | |||
private void handleCWSpeedChange(int radioNumber, int newSpeed) | |||
{ | |||
CATCommon radioObject = mainForm.COMMainProvider.RadioObject(radioNumber); | |||
if (radioObject == null) | |||
{ | |||
mainForm.SetMainStatusText(String.Format("CAT object for radio {0} isn't available!", radioNumber)); | |||
return; | |||
} | |||
radioObject.SendCustomCommand(String.Format("ks0{0};", newSpeed)); | |||
mainForm.SetMainStatusText(String.Format("Radio {0} CW speed changed to {1} wpm!", radioNumber, newSpeed)); | |||
} | |||
} | |||
} | |||
Revision as of 07:07, 12 April 2015
Introduction to C#
DXLog.net has been written in such a way that bespoke C# scripts can be written by the end user and will be compiled into DXLog.net at runtime.
This makes DXLog.net very versatile and with a little C# knowledge a very powerful contest logging tool.
To learn the basics about C# there are is lots of free on-line help like http://www.homeandlearn.co.uk/csharp/csharp.html
Microsoft have a free fully functional version of Visual Studio called Community 2013, available from https://www.visualstudio.com/en-us/products/visual-studio-community-vs
Example_Scripts
There are example scripts in the download directory http://dxlog.net/sw/download/script_examples/
The following script is an example of a C# script which keeps the Elecraft K3 keyer speed in sync with the CW speed set in DXLog.net
//INCLUDE_ASSEMBLY System.dll
//INCLUDE_ASSEMBLY System.Windows.Forms.dll
//INCLUDE_ASSEMBLY CWKeyer.dll
using System;
using System.Windows.Forms;
using CWKeyer;
namespace DXLog.net
{
public class Script : ScriptClass
{
FrmMain mainForm;
public void Initialize(FrmMain main)
{
mainForm = main;
if (mainForm._cwKeyer != null)
mainForm._cwKeyer.CWSpeedChange += new CWKey.CWSpeedChangeDelegate(handleCWSpeedChange);
}
public void Deinitialize()
{
if (mainForm._cwKeyer != null)
mainForm._cwKeyer.CWSpeedChange -= handleCWSpeedChange;
}
public void Main(FrmMain main, ContestData cdata, COMMain comMain)
{
}
private void handleCWSpeedChange(int radioNumber, int newSpeed)
{
CATCommon radioObject = mainForm.COMMainProvider.RadioObject(radioNumber);
if (radioObject == null)
{
mainForm.SetMainStatusText(String.Format("CAT object for radio {0} isn't available!", radioNumber));
return;
}
radioObject.SendCustomCommand(String.Format("ks0{0};", newSpeed));
mainForm.SetMainStatusText(String.Format("Radio {0} CW speed changed to {1} wpm!", radioNumber, newSpeed));
}
}
}