Scripting
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));
}
}
}