Scripting

From DXLog.net
Revision as of 07:07, 12 April 2015 by M0cke (talk | contribs) (Introduction to C#)
Jump to navigation Jump to search

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