本帖最后由 天翊胤 于 2018-5-9 20:43 编辑
C#用halcon开发一台大恒MER-130-30UM-L相机可以用,但是同时用两台就不行了,不能异步采集图片了。求好心人解决
private void Form1_Load(object sender, EventArgs e)
{
InitCamera();
InitCamera2();
}
bool aaa = true;
bool ttt = true;
public void InitCamera()
{
try
{
//相机设置
HOperatorSet.OpenFramegrabber("GenICamTL", 0, 0, 0, 0, 0, 0, "progressive",
-1, "gray", -1, "false", "default", "MER-130-30UM-L(RH0041008012)", 0,
-1, out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
}
catch { MessageBox.Show("未能找到相机1,请检查相机是否连接"); }
th1 = new Thread(recv);
th1.IsBackground = true;
// th1.Start();
}
public void InitCamera2()
{
try
{
HOperatorSet.OpenFramegrabber("DahengCAM", 1, 1, 0, 0, 0, 0, "interlaced", 8,
"gray", -1, "false", "HV-xx51", "1", 1, -1, out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
}
catch { MessageBox.Show("未能找到相机2,请检查相机是否连接"); }
th2 = new Thread(Recv);
th2.IsBackground = true;
}
public void Recv()
{
while (aaa)
{
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
}
}
public void recv()
{
while (ttt)
{
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
// HOperatorSet.DispObj(ho_Image, hWindowControl1.HalconWindow);
// HOperatorSet.SetPart(hWindowControl1.HalconWindow, 0, 0, hv_Height, hv_Width);
}
}
public void Camera1()
{
try
{
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
//抓取图像
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
public void Camera2()
{
try
{
//开始抓取图片
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
//抓取异步图像
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
private void butAutoRun_Click(object sender, EventArgs e)
{
Camera1();
Camera2();
}
|