//public void DoVD_InteropDataTask() //{ //} public void DoVD_InteropData(string devName, System.DateTime dt) { VDDeviceWrapper dev = htVDDevices[devName] as VDDeviceWrapper; VDDeviceWrapper predev = dev.PreDevice as VDDeviceWrapper; VDDeviceWrapper nextdev = dev.NextDevice as VDDeviceWrapper; RemoteInterface.MFCC.VD1MinCycleEventData preData=null, nextData=null; if (predev != null && predev.IsConnected && Program.matrix.line_mgr[predev.lineid].getSectionByMile(predev.direction, predev.mile_m).sectionId == Program.matrix.line_mgr[dev.lineid].getSectionByMile(dev.direction, dev.mile_m).sectionId) try { preData = predev.getRemoteObj().getVDLatest1MinData(predev.deviceName); } catch { ;} if (nextdev != null && nextdev.IsConnected && Program.matrix.line_mgr[nextdev.lineid].getSectionByMile(nextdev.direction, nextdev.mile_m).sectionId == Program.matrix.line_mgr[dev.lineid].getSectionByMile(dev.direction, dev.mile_m).sectionId) try { nextData = nextdev.getRemoteObj().getVDLatest1MinData(nextdev.deviceName); } catch { ;} int vol=0, speed=0, occ=0; RemoteInterface.MFCC.VD1MinCycleEventData[] data = new RemoteInterface.MFCC.VD1MinCycleEventData[2] { preData, nextData }; int cnt=0; for (int i = 0; i < data.Length; i++) { if (data[i] == null || !data[i].IsValid) continue; if (System.DateTime.Now.Subtract(data[i].datatime).TotalMinutes > 10) continue; vol += data[i].vol; speed += data[i].speed; occ += data[i].occupancy; cnt++; } if (cnt == 0) { Program.matrix.dbServer.SendSqlCmd("update tblVDData1min set datavalidity='I' where devicename='"+devName+"' and timestamp='"+DbCmdServer.getTimeStampString(dt)+"'"); return; } vol /= cnt; speed /= cnt; occ /= cnt; string sql="update tblVDData1min set Car_Volume={0},Car_Speed={1},Average_Occupancy={2},datavalidity='V',Utility=2 where devicename='{3}' and timestamp='{4}' "; Program.matrix.dbServer.SendSqlCmd(string.Format(sql, vol, speed, occ,devName,DbCmdServer.getTimeStampString(dt))); // Util.SysLog("interop.log", predev.deviceName + "," + devName + "," + nextdev.deviceName + ",vol=" + vol + ",spd=" + speed + ",occ=" + occ); }
private void tmrvd_Tick(object sender, EventArgs e) { this.BindingContext[ds, "tblVD5Min"].EndCurrentEdit(); ds.tblVD5Min.AcceptChanges(); foreach (DataSet1.tblVD5MinRow r in ds.tblVD5Min.Rows) { try { RemoteInterface.MFCC.VD1MinCycleEventData data = new RemoteInterface.MFCC.VD1MinCycleEventData(r.DeviceName, System.DateTime.Now, r.Speed, r.Vol, r.Occupancy, r.Length, r.Interval, null, null, true); (this.MdiParent as FrmMain).rhost.setVDFiveMinData(r.DeviceName, data); } catch (Exception ex) { MessageBox.Show(ex.Message); } } }