/// <summary> /// 定时执行考勤机业务 /// </summary> /// <param name="obj"></param> void tmWorkGather(object obj) { QueryDataRes query = new QueryDataRes("门禁管理"); NameObjectList ps = new NameObjectList(); DataTable tab = query.getTable("门禁管理", ps); if (null == tab || tab.Rows.Count < 1) return; myLog.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " 启动定时执行"); CommiManager commimgr = CommiManager.GlobalManager; for (int i = 0; i < tab.Rows.Count; i++) { DataRow dr = tab.Rows[i]; if (null == dr || DBNull.Value == dr["ID"] || DBNull.Value == dr["站址"]) continue; if ("考勤机" != Convert.ToString(dr["控制器类型"])) continue; string devid = Convert.ToString(dr["ID"]); int station = Convert.ToInt32(dr["站址"]); string devname = devname = Convert.ToString(dr["名称"]); myLog.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " 考勤设备:" + Convert.ToString(dr["站址"]) + " " + devname); CommiTarget target = this.getTarget(dr); if (null == target) continue; DeviceDoor device = new DeviceDoor(); target.setProtocol(Protocol.PTLDoor); device.IsPatrol = false; device.dtBeat = DateTime.Now; device.SetDevice(commimgr, target, devid, station); string msg = device.GatherData(true); string cardnum = basefun.valtag(msg, "{卡号}"); myLog.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " 采集信息 0:" + msg); if ("0" == cardnum || "16777215" == cardnum) { if (device.IsEndReadDevice(-1)) continue; } int index = 1; while (!string.IsNullOrEmpty(cardnum)) { msg = device.GatherData(false); myLog.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " 采集信息" + Convert.ToString(index++).PadLeft(4, ' ') + ":" + msg); cardnum = basefun.valtag(msg, "{卡号}"); if ("0" == cardnum || "16777215" == cardnum) { if (device.IsEndReadDevice(-1)) break; } } } }