public ArrayList Camera_YZW_List(String cCameraID) { ArrayList KeyList = new ArrayList(); try { uint uiBufferSize = (uint)Marshal.SizeOf(typeof(IVS_PTZ_PRESET)) * 10; uint uiPTZPresetNum = 0;; IntPtr pPTZPresetList = Marshal.AllocHGlobal((int)uiBufferSize); int iCode = IVS_API.IVS_SDK_GetPTZPresetList(ApplicationEvent.iSession, cCameraID, pPTZPresetList, uiBufferSize, ref uiPTZPresetNum); if (iCode == 0) { IntPtr tempPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IVS_PTZ_PRESET))); byte[] tempByte = new byte[Marshal.SizeOf(typeof(IVS_PTZ_PRESET))]; for (int index = 0; index < uiPTZPresetNum && index < 10; index++) { Marshal.Copy(pPTZPresetList + index * Marshal.SizeOf(typeof(IVS_PTZ_PRESET)), tempByte, 0, Marshal.SizeOf(typeof(IVS_PTZ_PRESET))); for (int i = 4; i < 88; i++) { if (tempByte[i] == 0) { for (int j = i; j < 88; j++) { tempByte[j] = 0; } break; } } Marshal.Copy(tempByte, 0, tempPtr, Marshal.SizeOf(typeof(IVS_PTZ_PRESET))); IVS_PTZ_PRESET preset = (IVS_PTZ_PRESET)Marshal.PtrToStructure(tempPtr, typeof(IVS_PTZ_PRESET)); KeyList.Add(preset); } Marshal.FreeHGlobal(tempPtr); } } catch (Exception ex) { log4net.WriteLogFile("查询预置位失败"); } return(KeyList); }
private void timPreset_Tick(object sender, EventArgs e) { timPreset.Enabled = false; int iCode = 0; try { Boolean AllowWait = false; int idx = -1; if (YWZ_VAL_LIST.Count > 0) { idx = YWZ_VAL_LIST.Count - 1; IVS_PTZ_PRESET vPreset = (IVS_PTZ_PRESET)YWZ_VAL_LIST[idx]; YWZ_VAL_LIST.RemoveAt(idx); YWZ_TXT_LIST.Items.RemoveAt(idx); int pLockStatus = 0; iCode = IVS_API.IVS_SDK_PtzControl(ApplicationEvent.iSession, ActiveCameraCode, 11, vPreset.cPresetName, "3", ref pLockStatus); if (iCode > 0) { log4net.WriteLogFile("调用预置位失败"); return; } else { AllowWait = true; } } if (AllowWait) { Boolean isAbort = false; int iORD = 0; while (!isAbort) { Application.DoEvents(); Thread.Sleep(200); iORD++; if (iORD > 15) { isAbort = true; } } } isPlay = true; String cAppDir = INIConfig.ReadString("ALARM", "FILE_PATH", ""); if (Directory.Exists(cAppDir)) { Directory.CreateDirectory(cAppDir); } int iPRESET_ID = 9999; String cKeyID = ""; string cKeyGuid = ""; if (idx != -1) { cKeyID = AutoID.getAutoID() + "_" + String.Format("{0:0#00}", idx); cKeyGuid = ActiveCameraCode + "X" + String.Format("{0:0#00}", idx); iPRESET_ID = idx; } else { cKeyID = AutoID.getAutoID() + "_0000"; cKeyGuid = ActiveCameraCode + "X" + "0000"; iPRESET_ID = 9999; } cAppDir = cAppDir + cKeyID.Substring(0, 8); if (Directory.Exists(cAppDir)) { Directory.CreateDirectory(cAppDir); } String cFileName = cAppDir + "\\" + cKeyID + ".jpg"; Application.DoEvents(); iCode = IVS_API.IVS_SDK_LocalSnapshot(ApplicationEvent.iSession, (UInt32)ulRealPlayHandle, 1, cFileName); if (iCode == 0) { cAppDir = INIConfig.ReadString("ANALYSE", "FILE_PATH", ""); String cAnalyseFile = cAppDir + cKeyID + ".jpg"; try { String cFilePath = Path.GetDirectoryName(cAnalyseFile); if (!Directory.Exists(cFilePath)) { Directory.CreateDirectory(cFilePath); } File.Copy(cFileName, cAnalyseFile); } catch (Exception ex) { log4net.WriteLogFile(ex.Message); } log4net.WriteLogFile("IVS_SDK_LocalSnapshot成功!" + cFileName); String cKeyText = IMGAI.getImageText(cFileName); List <String> sqls = new List <string>(); String cDayTime = DateTime.Now.ToString("yyyyMMddHHmmss"); JActiveTable aMaster = new JActiveTable(); aMaster.TableName = "XT_IMG_REC"; aMaster.AddField("REC_ID", cKeyID); aMaster.AddField("CAMERA_ID", ActiveCameraCode); aMaster.AddField("PRESET_ID", iPRESET_ID); aMaster.AddField("AI_FLAG", 0); aMaster.AddField("ALARM_FLAG", 0); aMaster.AddField("ALARM_CHECKED", 0); aMaster.AddField("IMAGE_REDRAW", 0); if (!String.IsNullOrEmpty(cKeyText)) { aMaster.AddField("P", IMGAI.getP(cKeyText)); aMaster.AddField("T", IMGAI.getT(cKeyText)); aMaster.AddField("X", IMGAI.getX(cKeyText)); } aMaster.AddField("FILE_URL", "/dfs/" + cKeyID.Substring(0, 8) + "/" + cKeyID + ".jpg"); aMaster.AddField("CREATE_TIME", cDayTime); aMaster.AddField("UPLOAD_FLAG", 1); String cMasterSQL = aMaster.getInsertSQL(); JActiveTable aSlave = new JActiveTable(); aSlave.TableName = "XT_CAMERA_STATUS"; aSlave.AddField("UPDATE_TIME", cDayTime); String cSlaveSQL = aSlave.getUpdateSQL("CAMERA_ID = '" + ActiveCameraCode + "' "); sqls.Add(cMasterSQL); sqls.Add(cSlaveSQL); iCode = WebSQL.ExecSQL(sqls); if (iCode > 0) { log4net.WriteLogFile(cKeyID + "插入数据库成功"); } } Application.DoEvents(); } catch (Exception ex) { log4net.WriteLogFile("Camera_YZW_List失败!" + ex.Message); } finally { if (YWZ_VAL_LIST.Count > 0) { timPreset.Enabled = true; } else if (YWZ_VAL_LIST.Count == 0) { timAfter.Enabled = true; } } }
private void timAfter_Tick(object sender, EventArgs e) { timAfter.Enabled = false; int iCode = 0; try { iCode = IVS_API.IVS_SDK_StopRealPlay(ApplicationEvent.iSession, (UInt32)ulRealPlayHandle); } catch (Exception ex) { log4net.WriteLogFile("IVS_SDK_StopRealPlay失败!"); } try { String cORG_ID = INIConfig.ReadString("Config", AppConfig.ORG_ID); if (getTaskCameraCode(cORG_ID)) { log4net.WriteLogFile("剩余任务:" + ActiveLeftCount + ",当前任务:" + ActiveDevice_ID); int idx = CAMEAR_CODE_LIST.IndexOf(ActiveDevice_ID); if (idx == -1) { log4net.WriteLogFile("未找到匹配的摄像机!"); } else { Object objInfo = CAMEAR_INF_LIST[idx]; IVS_CAMERA_BRIEF_INFO rowKey = (IVS_CAMERA_BRIEF_INFO)objInfo; IVS_REALPLAY_PARAM para = new IVS_REALPLAY_PARAM(); para.bDirectFirst = false; para.bMultiCast = false; para.uiProtocolType = 2; para.uiStreamType = 1; ActiveCameraCode = rowKey.cCode; ActiveCameraName = rowKey.cName; this.txtCameraName.Text = ActiveCameraName; this.btnStartReal_Click(null, null); ArrayList YWZList = Camera_YZW_List(ActiveCameraCode); YWZ_TXT_LIST.Items.Clear(); YWZ_VAL_LIST.Clear(); // for (int i = 0; (YWZList != null) && (i < YWZList.Count); i++) if (YWZList.Count > 0) { for (int i = YWZList.Count - 1; i >= 0; i--) { IVS_PTZ_PRESET vPreset = (IVS_PTZ_PRESET)YWZList[i]; YWZ_TXT_LIST.Items.Add(vPreset.uiPresetIndex + ":" + vPreset.cPresetName); YWZ_VAL_LIST.Add(vPreset); } } } } } catch (Exception ex) { log4net.WriteLogFile(ActiveCameraName + "[" + ActiveCameraCode + "]" + ":" + ex.Message); } finally { timPreset.Enabled = true; } }