virtual public void UpdateMonData() { mondata_old.Copy(mondata); mondata = new CMonData(signLen); ReadIO(); if (g_jifenQueue.Count >= g_jifennum) { g_jifenQueue.RemoveAt(0); } g_jifenQueue.Add(mondata.GetSignals(Shared.SignalType.GAN)); if (x_jifenQueue.Count >= x_jifennum) { x_jifenQueue.RemoveAt(0); } x_jifenQueue.Add(mondata.GetSignals(Shared.SignalType.XIAN)); CSignals gsign = JiFen(g_jifenQueue.ToArray(), g_jifennum, Shared.SignalType.GAN, ganlen); CSignals xsign = JiFen(x_jifenQueue.ToArray(), x_jifennum, Shared.SignalType.XIAN, xianlen); mondata.SetSignals(Shared.SignalType.GAN, gsign); mondata.SetSignals(Shared.SignalType.XIAN, xsign); mondata_cur.Copy(mondata); }
virtual protected void ReadIO() { CMonData mod = mondata; sbyte tmpreturn = 0; for (int i = 0; i < 6; i++) { iorw.write(0x378, (byte)i); Thread.Sleep(lvbodelaytime); tmpreturn = (sbyte)iorw.read(0x379); mod.GetSignals(SignalType.GAN)[i] = readbit(tmpreturn, (sbyte)ganpos); mod.GetSignals(SignalType.XIAN)[i] = readbit(tmpreturn, (sbyte)xianpos); mod.GetSignals(SignalType.CHE)[i] = readbit(tmpreturn, (sbyte)chepos); } //信号处理 sbyte[] garr = mod.GetSignals(SignalType.GAN).SignalArray; sbyte[] xarr = mod.GetSignals(SignalType.XIAN).SignalArray; sbyte[] carr = mod.GetSignals(SignalType.CHE).SignalArray; //取反 mondata_qf(ref garr, adminQFGan); mondata_qf(ref xarr, adminQFXian); //管理员屏蔽 mondata_adminpb(ref garr, adminPBGan); mondata_adminpb(ref xarr, adminPBXian); //屏蔽 mondata_pb(ref carr, SignalType.CHE, PBChe); mondata_pb(ref garr, SignalType.GAN, PBGan); mondata_pb(ref xarr, SignalType.XIAN, PBXian); }