Difference between revisions of "Scripting"
 (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 ...")  | 
				 (→Introduction to C#)  | 
				||
| 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));
         }
     }
 }