//设备状态改变事件响应 public void DevChangeEventHandler(int type, int idx, int dbt) { if (1 == type) { if (1 == dbt)//设备到达 { EloamDevice tempDevice = (EloamDevice)global.CreateDevice(1, idx); deviceList.Add(tempDevice); selectDevice.Items.Add(tempDevice.GetFriendlyName()); if (-1 == selectDevice.SelectedIndex) { selectDevice.SelectedIndex = 0;//改变所选设备 } } else if (2 == dbt)//设备丢失 { EloamDevice tempDevice = deviceList[idx]; if (null != video) { EloamDevice tempDevice2 = (EloamDevice)video.GetDevice(); if (tempDevice == tempDevice2) { // closeVideo_Click(new object(), new EventArgs()); toolStripButton_stop_Click(new object(), new EventArgs()); } } deviceList[idx].Destroy(); deviceList.RemoveAt(idx); selectDevice.Items.RemoveAt(idx); if (-1 == selectDevice.SelectedIndex) { if (0 != deviceList.Count) { selectDevice.SelectedIndex = 0; } else { selectDevice.Items.Clear(); selectMode.Items.Clear(); selectResolution.Items.Clear(); } } } } }
private void selectDevice_SelectedIndexChanged(object sender, EventArgs e) { int idx = selectDevice.SelectedIndex;//记录当前所选设备 selectMode.Items.Clear(); if (-1 != idx) { EloamDevice tempDevice = deviceList[idx]; //加载模式列表 int subtype = tempDevice.GetSubtype(); if (0 != (subtype & 1)) { selectMode.Items.Add("YUY2"); } if (0 != (subtype & 2)) { selectMode.Items.Add("MJPG"); } if (0 != (subtype & 4)) { selectMode.Items.Add("UYVY"); } //若为辅摄像头,优先选择MJPG方式 if (1 != tempDevice.GetEloamType() && 0 != (subtype & 2)) { selectMode.SelectedIndex = 1; } else { selectMode.SelectedIndex = 0; } this.toolStripButton_preview_start.Enabled = true; } else { this.toolStripButton_preview_start.Enabled = false; } }
private void toolStripButton_preview_start_Click(object sender, EventArgs e) { int devIdx = selectDevice.SelectedIndex; string curModeString = selectMode.SelectedItem.ToString(); int modeIdx = (curModeString == "YUY2" ? 1 : (curModeString == "MJPG" ? 2 : (curModeString == "UYVY" ? 4 : -1))); int resIdx = selectResolution.SelectedIndex; if (-1 != devIdx) { if (null != video) { video.Destroy(); video = null; } EloamDevice tempDevice = deviceList[devIdx]; video = (EloamVideo)tempDevice.CreateVideo(resIdx, modeIdx); if (null != video) { eloamView.SelectVideo(video); eloamView.SetText("打开视频中,请等待...", RGB(255, 255, 255)); selectDevice.Enabled = false; selectResolution.Enabled = false; selectMode.Enabled = false; //openVideo.Enabled = false; //closeVideo.Enabled = true; } } this.toolStripButton_preview_start.Enabled = false; this.toolStripButton_preview_stop.Enabled = true; }