public int SetTrigMode(int encChn, JFCompareTrigMode mode) { if (!IsOpen) { return((int)ErrorDef.NotOpen); } if (encChn < 0 || encChn >= EncoderChannels) { throw new ArgumentOutOfRangeException("SetTrigMode(encChn ,...) fialed By:encChn = " + encChn + " is outof range:0~" + (EncoderChannels - 1)); } if (mode == trigModes[encChn]) { return((int)ErrorDef.Success); } if (trigModes.ContainsKey(encChn)) { trigModes[encChn] = mode; } else { trigModes.Add(encChn, mode); } _jf168Cfg.Save(); return((int)ErrorDef.Success); }
public int GetTrigMode(int encChn, out JFCompareTrigMode mode) { mode = JFCompareTrigMode.disable; if (!IsOpen) { return((int)ErrorDef.NotOpen); } if (encChn < 0 || encChn >= EncoderChannels) { throw new ArgumentOutOfRangeException("GetTrigMode(encChn ,...) fialed By:encChn = " + encChn + " is outof range:0~" + (EncoderChannels - 1)); } mode = trigModes[encChn]; return((int)ErrorDef.Success); }
public int SetTrigMode(int encChn, JFCompareTrigMode mode) { if (!IsOpen) { return((int)ErrorDef.NotOpen); } if (encChn < 0 || encChn >= EncoderChannels) { throw new ArgumentOutOfRangeException("SetTrigMode(encChn ,...) fialed By:encChn = " + encChn + " is outof range:0~" + (EncoderChannels - 1)); } int err = 0; if (mode == trigModes[encChn]) { return((int)ErrorDef.Success); } int ret = (int)ErrorDef.ParamError; switch (mode) { case JFCompareTrigMode.disable: err = HTM.SetLinTrigEnable(devIndexes[devIndexes[encChn]], 0); if (err != 0) { return((int)ErrorDef.InvokeFailed); } if (trigType == TriggerType.PosTrig) { for (int i = 0; i < trigTables[encChn].Length; i++) //HTM点表触发只支持2个点 { err = HTM.SetPtTrigEnable(devIndexes[encChn], i, 0); if (err != 0) { return((int)ErrorDef.InvokeFailed); } } } ret = (int)ErrorDef.Success; trigModes[encChn] = mode; break; case JFCompareTrigMode.liner: err = HTM.SetLinTrigEnable(devIndexes[encChn], 1); if (err != 0) { ret = (int)ErrorDef.InvokeFailed; break; } if (trigType == TriggerType.PosTrig) { for (int i = 0; i < trigTables[encChn].Length; i++) //HTM点表触发只支持2个点 { err = HTM.SetPtTrigEnable(devIndexes[encChn], i, 0); if (err != 0) { return((int)ErrorDef.InvokeFailed); } } } ret = (int)ErrorDef.Success; trigModes[encChn] = mode; break; case JFCompareTrigMode.table: err = HTM.SetLinTrigEnable(devIndexes[encChn], 0); //先禁用线性触发 if (err != 0) { return((int)ErrorDef.InvokeFailed); } //if (trigType == TriggerType.PosTrig) { for (int i = 0; i < trigTables[encChn].Length; i++) //HTM点表触发只支持2个点 { err = HTM.SetPtTrigEnable(devIndexes[encChn], i, 1); if (err != 0) { return((int)ErrorDef.InvokeFailed); } } } ret = (int)ErrorDef.Success; trigModes[encChn] = mode; break; default: break; } return(ret); }
/// <summary> /// /// </summary> public void AdjustView() { if (InvokeRequired) { Invoke(new Action(AdjustView)); return; } if (null == _module) { lbID.Text = "空对象"; tbEnc.Text = ""; tbTrigCount.Text = ""; btResetCnt.Enabled = false; cbMode.Text = "";//cbMode.SelectedIndex = 0; cbMode.Enabled = false; btSoftTrig.Enabled = false; btCfg.Enabled = false; btSync.Enabled = false; return; } lbID.Text = _id; double dVal = 0; int err = _module.GetEncoderCurrPos(_encChn, out dVal); if (err != 0) { tbEnc.Text = "Err:" + _module.GetErrorInfo(err); } else { tbEnc.Text = dVal.ToString(); } int nVal = 0; int[] trigChns = null; err = _module.GetEncoderTrigBind(_encChn, out trigChns);//一个编码器输入可能会绑定多个触发输出 if (err != 0) { tbTrigCount.Text = "Err:" + _module.GetErrorInfo(err); } else { StringBuilder sb = new StringBuilder(); for (int i = 0; i < trigChns.Length; i++) { int trigChn = trigChns[i]; err = _module.GetTriggedCount(trigChn, out nVal); if (err != 0) { sb.Append("Err"); } else { sb.Append(nVal.ToString()); } if (i < trigChns.Length - 1) { sb.Append("|"); } } tbTrigCount.Text = sb.ToString(); } btSync.Enabled = true; btResetCnt.Enabled = true; cbMode.Enabled = true; JFCompareTrigMode trigMode = JFCompareTrigMode.disable; err = _module.GetTrigMode(_encChn, out trigMode); if (err != 0) { cbMode.Text = "Err"; } else { cbMode.SelectedIndex = (int)trigMode; } btSoftTrig.Enabled = true; btCfg.Enabled = true; }