Skip to content

fatalwall/vshed.Tasks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vshed.Tasks

Configurable task runner for exteranl calls

Example - Enumerating Task Items

Configuraiton File

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="Tasks" type="vshed.Tasks.Tasks, vshed.Tasks" requirePermission="false"/>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <Tasks>
    <Task Type="Process" 
          Name="ipconfig Fail" 
          FileName="ipconfig" 
          Arguments="/all" 
          SuccessRegex="\s{3}Connection-specific DNS Suffix[\s,\.]*: \R\s{3}Description[\s,\.]*: PANTECH UML290 Mobile Broadband.*\R\s{3}(Physical Address)[\s,\.]*: (..-..-..-..-..-..)\R\s{3}DHCP Enabled[\s,\.]*: (:?No|Yes)\R\s{3}Autoconfiguration Enabled[\s,\.]*: Yes\R\s{3}Link-local IPv6 Address[\s,\.]*: .{1,4}::.{1,4}:.{1,4}:.{1,4}:.......\(Preferred\) \R\s{3}(IPv4 Address)[\s,\.]*: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\(Preferred\) \R\s{3}(Subnet Mask)[\s,\.]*: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\R\s{3}(Default Gateway)[\s,\.]*: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})" 
          />
    <Task Type="Process" 
          Name="ipconfig Success" 
          FileName="ipconfig" 
          Arguments="/all" 
          SuccessRegex="(IPv4 Address)[\s,\.]*: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})" 
          />
    <Task Type="Process" Name="Pause" FileName="timeout" Arguments="/t 60" />
    <Task Type="Process" Name="Pause2" FileName="ping " Arguments="localhost -n 60" />
    <Task Type="SerialCommand" 
          Name="Get Cellular Modem Number" 
          Command="AT+CNUM" 
          SuccessRegex="OK" PortName="COM 3"
          BaudRate="9600" 
          DataBits="8" 
          Parity="None" 
          StopBits="One" 
          Encoding="ISO-8859-1" 
          DtrEnable="true" 
          RtsEnable="true" 
          />
    <Task Type="SerialCommand" 
          Name="Get Cellular Modem IMEI" 
          Command="AT+CGSN" SuccessRegex="OK" 
          PortName="COM 3" 
          BaudRate="9600" 
          DataBits="8" Parity="None" 
          StopBits="One" 
          Encoding="ISO-8859-1" 
          DtrEnable="true" 
          RtsEnable="true" 
          />
    <Task Type="SerialCommand" 
          Name="Get Cellular Modem ICCID" 
          Command="AT+ICCID" SuccessRegex="OK" 
          PortName="COM 3" 
          BaudRate="9600" DataBits="8" 
          Parity="None" 
          StopBits="One" Encoding="ISO-8859-1" 
          DtrEnable="true" 
          RtsEnable="true" />
    <Processes>
      <Process Name="Pause3" FileName="ping " Arguments="localhost -n 60" />
      <Process Name="Pause2" FileName="ping " Arguments="localhost -n 60" />
    </Processes>
    <SerialCommands>
      <SerialCommand Name="Get Cellular Modem ICCID3" 
                     Command="AT+ICCID" SuccessRegex="OK" 
                     PortName="COM 3" 
                     BaudRate="9600" DataBits="8" 
                     Parity="None" StopBits="One" 
                     Encoding="ISO-8859-1" 
                     DtrEnable="true" 
                     RtsEnable="true" />
    </SerialCommands>
  </Tasks>
</configuration>

Code

vshed.Tasks.Tasks Settings = ConfigurationManager.GetSection("Tasks") as vshed.Tasks.Tasks;
Settings.Processes["Confirming Network is Up"].Start();
System.Diagnostics.Debug.WriteLine(String.Format("Processes: {0}", Settings.Processes.Count));
foreach (var p in Settings.Processes) 
  System.Diagnostics.Debug.WriteLine(String.Format("  {0}", p.ToString()));
System.Diagnostics.Debug.WriteLine(String.Format("SerialCommands: {0}", Settings.SerialCommands.Count));
foreach (var p in Settings.SerialCommands) 
  System.Diagnostics.Debug.WriteLine(String.Format("  {0}", p.ToString()));

Debug Output

Processes: 5
  Pause3
  Pause2
  ipconfig Fail
  ipconfig Success
  Pause
SerialCommands: 4
  Get Cellular Modem ICCID3
  Get Cellular Modem Number
  Get Cellular Modem IMEI
  Get Cellular Modem ICCID

About

Configurable task runner for exteranl calls

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published