public CCTimer(ITagOp tagOp, string tagName, string outTagName, int onLast = 1000, string offOutTagName = "", int offLast = 1000) : base(tagName) { TagOp = tagOp; OnLastMs = onLast; OffLastMs = offLast; Func <bool?> check = () => { if (tagOp != null) { return(tagOp.ReadBit(tagName)); } else { return(null); } }; Name = $"{tagName}-{outTagName}:{onLast}-{offOutTagName}:{offLast}"; CheckFunc = check; OnLastMs = onLast; OffLastMs = offLast; ThreadStart = new ControlledThreadStart(RunCheck); ThreadController = new ThreadController(ThreadStart, null, Name); StartThread(); OutTag = outTagName; OffOutTag = offOutTagName; OutChanged += Task_OutChanged; OffOutChanged += Task_OffOutChanged; }
public static object ReadTag(this ITagOp tagOp, string tag) { if (!tagOp.CConnected) { return(null); } return(tagOp.InvokeFunc(() => { return tagOp.ReadTagReal(tag); })); }
public static void WriteTag(this ITagOp tagOp, string tag, object value) { if (!tagOp.CConnected) { return; } tagOp.InvokeAction(() => { tagOp.WriteTagReal(tag, value); }); }
/// <summary> /// 反转位 /// </summary> /// <param name="ps"></param> public static void InvertBit(this ITagOp tagOp, List <CCParameter> ps) { try { string tag = ps[0].DisplayValue; } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
/// <summary> /// 置位位 /// </summary> /// <param name="ps"></param> public static void SetBit(this ITagOp tagOp, List <CCParameter> ps) { try { string tag = ps[0].DisplayValue; tagOp.WriteTag(tag, true); } catch (Exception ex) { Console.WriteLine("SetBit" + ex.ToString()); } }
public static void InvertBit(this ITagOp tagOp, string tag) { try { bool current = (bool)tagOp.ReadTag(tag); bool toggle = !current; tagOp.WriteTag(tag, toggle); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
private static object ReadTagReal(this ITagOp tagOp, string tag) { string[] tagNames = new string[1] { tag }; ITag itag = tagOp.TAG; object result = itag.ReadTag(tagOp.RegisterCookie, tagNames); if (result is Array) { object[] ra = (object[])result; return(ra[0]); } return(result); }
public static bool?ReadBit(this ITagOp tagOp, string tag) { try { var bit = tagOp.ReadTag(tag); if (bit == null) { return(null); } else { return((bool)bit); } }catch (Exception ex) { } return(null); }
private static void WriteTagReal(this ITagOp tagOp, string tag, object value) { try { string[] tagNames = new string[1] { tag }; object[] values = new object[1] { value }; ITag itag = tagOp.TAG; itag.WriteTag(tagOp.RegisterCookie, tagNames, values); } catch (Exception ex) { ExceptionViewer ev = new ExceptionViewer("WriteTagReal", ex); ev.ShowDialog(); } }