Basler相机SDK官方用例,改成集合多相机一起使用,已在项目中使用
/// <summary>
/// 相机列表
/// </summary>
public List<UserViev> camera = new List<UserViev>();
public Basler_Main()
{
InitializeComponent();
UpdateDeviceList();
}
//更新设备列表
private void UpdateDeviceList()
{
try
{
// 向camera finder询问相机设备列表。
List<ICameraInfo> allCameras = CameraFinder.Enumerate();
ListView.ListViewItemCollection items = deviceListView.Items;
// 在所有找到的摄像机上循环
foreach (ICameraInfo cameraInfo in allCameras)
{
//循环查看摄影机列表中的所有摄影机
bool newitem = true;
foreach (ListViewItem item in items)
{
ICameraInfo tag = item.Tag as ICameraInfo;
// 摄像头是否已在摄像头列表中找到?
if ( tag[CameraInfoKey.FullName] == cameraInfo[CameraInfoKey.FullName])
{
tag = cameraInfo;
newitem = false;
break;
}
}
// 如果相机不在列表中,请将其添加到列表中
if (newitem)
{
// 创建要显示的项目.
ListViewItem item = new ListViewItem(cameraInfo[CameraInfoKey.FriendlyName]);
// 创建工具提示文本
string toolTipText = "";
foreach( KeyValuePair<string, string> kvp in cameraInfo)//ModelName acA5472-5gm SerialNumber 22991190
{
if (kvp.Key== "ModelName")
{
toolTipText = kvp.Value;
}
//toolTipText += kvp.Key + ": " + kvp.Value + "\n";
}
// 在显示的项目中存储摄像头信息
item.Tag = cameraInfo;
item.ToolTipText = toolTipText;
item.Text = toolTipText;
// 附加设备数据
comboBoxCam.Items.Add(item);
}
}
// 移除已断开连接的旧相机设备.
foreach (ListViewItem item in items)
{
bool exists = false;
// 对于列表中的每个摄像头,检查是否可以通过枚举找到
foreach (ICameraInfo cameraInfo in allCameras)
{
if (((ICameraInfo)item.Tag)[CameraInfoKey.FullName] == cameraInfo[CameraInfoKey.FullName])
{
exists = true;
break;
}
}
// 如果没有找到摄像头,请将其从列表视图中删除.
if (!exists)
{
deviceListView.Items.Remove(item);
}
}
}
catch (Exception exception)
{
ShowException(exception);
}
}
private void imgeEventCallback(string grabException, Image imge, string itemtex)
{
label1.Text = grabException;
fr_IMV_Vision.imgeEventCallback( grabException, imge, itemtex);
}
// 显示异常窗口
private void ShowException(Exception exception)
{
MessageBox.Show("Exception caught:\n" + exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void deviceListView_KeyDown(object sender, KeyEventArgs ev)
{
if (ev.KeyCode == Keys.F5)
{
ev.Handled = true;
// Update the list of available camera devices.
UpdateDeviceList();
}
}
private void comboBoxCam_SelectedIndexChanged(object sender, EventArgs e)
{
panel1.Controls.Clear();
camera[(int)comboBoxCam.SelectedIndex].Dock = DockStyle.Fill;
panel1.Controls.Add(camera[(int)comboBoxCam.SelectedIndex]);
}
加载在项目中应用部分
//触发相机部分
MV.Basler_Mai.camera[Cam_Inex].OneShot();
for (int i = 0; i < 500; i++)
{
Thread.Sleep(10);
if (imgeEventwc == true /*|| (MV.Basler_Mai.camera[Cam_Inex].IsValid)*/)
{
return true;
}
}
//图像获取事件
public static void imgeEventCallback(string grabException, Image imge1, string itemtex)
{
ImvWin_mian.WImage = image;
imgeEventwc = true;
}
下载地址:[(https://mp.csdn.net/console/upDetailed)]