【发布时间】:2011-09-20 07:50:03
【问题描述】:
我正在使用 Quartz .NET 作业定期从串行端口获取数据。 问题是,如果串行端口被另一个程序使用,则作业应该重新安排自己,以便在 30 分钟内再次尝试。我怎样才能做到这一点?
public virtual void Execute(JobExecutionContext context)
{
SetYModemEvents();
JobDataMap data = context.JobDetail.JobDataMap;
string COM = data.GetString("COM");
string BAUD = data.GetString("BAUD");
string name = data.GetString("NAME");
_yModem.AllowDisconnect = true;
_connection.Port.PortName = COM;
try
{
_connection.Port.BaudRate = int.Parse(BAUD);
}catch(FormatException)
{
_connection.Port.BaudRate = 9600;
}
try
{
_connection.Port.Open();
}catch(UnauthorizedAccessException ex)
{
//Reschedule this job
}
_connection.Port.DataReceived += new SerialDataReceivedEventHandler(DataReceviedHandler);
DeadManSwitch.Tick += new EventHandler(DeadManSwitch_Tick);
DeadManSwitch.Start();
if(Properties.Settings.Default.UseBubbels)
{
ReadOutHelperClass.ShowNotifiy(name, mynotifyicon);
}
//Starten der Auslesung
_connection.Write(protocoll.ReadLoggerData(), 0, protocoll.ReadLoggerData().Length);
DeadManSwitch.Interval = DeadManTimeOut;
}
【问题讨论】:
-
我在这里写了我的解决方案:stackoverflow.com/a/42744559/1393052
标签: c# triggers serial-port scheduled-tasks quartz.net