private void chkMode_CheckedChanged(object sender, EventArgs e) { if (chkMode.Checked) { runMode = ERunMode.普通老化房模式; } else { runMode = ERunMode.自动线模式; } }
/// <summary> /// 初始化设备 /// </summary> /// <param name="canBand"></param> /// <param name="runMode"></param> /// <param name="filter"></param> /// <param name="accCode"></param> /// <param name="accMark"></param> /// <returns></returns> public bool InitalCanBus(UInt32 canBusId, ECanBaud canBand, out string er, UInt32 accCode = 0x0, UInt32 accMark = 0xFFFFFFFF, ERunMode runMode = ERunMode.正常模式, EFilter filter = EFilter.单滤波 ) { er = string.Empty; try { if (!_devOpen) { er = "CanBus总线未打开"; return(false); } VCI_INIT_CONFIG config = new VCI_INIT_CONFIG(); config.AccCode = accCode; config.AccMask = accMark; config.Timing0 = BTR0[(int)canBand]; config.Timing1 = BTR1[(int)canBand]; config.Filter = (Byte)filter; config.Mode = (Byte)runMode; if (VCI_InitCAN(_devType, _canBusId, canBusId, ref config) != STATUS_OK) { er = "初始化【" + ((EVCI)_devType).ToString() + "】设备【" + canBusId.ToString() + "】失败"; return(false); } return(true); } catch (Exception ex) { er = ex.ToString(); return(false); } }
/// <summary> /// 从监控板读取电压及各个状态数据,电压数据基于同步AC ON/OFF信号 /// </summary> /// <param name="wAddr"></param> /// <param name="rVolt"></param> /// <param name="er"></param> /// <returns></returns> public bool ReadVolt(int wAddr, out List <double> rVolt, out int rOnOff, out string er, ESynON synNo = ESynON.步, ERunMode mode = ERunMode.自动线模式) { return(_devMon.ReadVolt(wAddr, out rVolt, out rOnOff, out er, synNo, mode)); }
/// <summary> /// 从监控板读取电压及各个状态数据,电压数据基于同步AC ON/OFF信号 /// </summary> /// <param name="wAddr"></param> /// <param name="rVolt"></param> /// <param name="er"></param> /// <param name="synNo"></param> /// <param name="mode">主控ACONOFF的工作模式:普通老化房模式</param> /// <returns></returns> public bool ReadVolt(int wAddr, out List <double> rVolt, out int rOnOff, out string er, ESynON synNo = ESynON.步, ERunMode mode = ERunMode.自动线模式) { rVolt = new List <double>(); for (int i = 0; i < 32; i++) { rVolt.Add(0); } rOnOff = 0; er = string.Empty; try { string wCmd = string.Empty; string rData = string.Empty; string rVal = string.Empty; if (mode == ERunMode.普通老化房模式) { wCmd = "00" + "00" + "05" + "04"; wCmd = SOI + wCmd + CalCheckSum(wCmd) + EOI; if (!com.send(wCmd, 0, out rData, out er, _TimeOut)) { return(false); } System.Threading.Thread.Sleep(2000); } if (synNo == ESynON.异步) { wCmd = wAddr.ToString("X2") + "02" + "01" + "04"; } else { wCmd = wAddr.ToString("X2") + "02" + "02" + "04"; } wCmd = SOI + wCmd + CalCheckSum(wCmd) + EOI; int rLen = 1 + 1 + 2 + 1 + 32 * 3 + 1 + 2 + 1 + 1 + 1; if (!com.send(wCmd, rLen, out rData, out er, _TimeOut)) { return(false); } if (!ToCheckSum(rData, ref rVal)) { er = "检验和错误:" + rData; return(false); } string pol = rVal.Substring(32 * 4 - 1, 64); string status = rVal.Substring(rVal.Length - 8, 8); for (int i = 0; i < 32; i++) { int valTemp = System.Convert.ToInt32(rVal.Substring(i * 4, 4), 16); rVolt[i] = ((double)valTemp) / 1000; if (pol.Substring(i * 2, 2) == "2D") { rVolt[i] *= -1; } } rOnOff = System.Convert.ToInt16(status.Substring(0, 2), 16); return(true); } catch (Exception e) { er = e.ToString(); return(false); } }