用C#开发JAI相机的过程和问题用C#开发JAI相机的过程和问题

拿到工业相机以后需要自己写个程序实现对于相机同时拍照和获取的图像自动保存的功能,所以要通过winform自己开发。以下是开发的代码,现在已经能调用相机了。
下面想实现保存并且能自动命名的功能,如果有意向的可以自己试试。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Jai_FactoryDotNET;
using System.IO;

namespace SimpleImageDisplaySample
{
public partial class Form1 : Form
{
// 主要的 factory 对象
CFactory myFactory = new CFactory();

    // 打开的相机对象
    CCamera myCamera;
    private int i;

    public Form1()
    {
        InitializeComponent();

        Jai_FactoryWrapper.EFactoryError error = Jai_FactoryWrapper.EFactoryError.Success;

        // 使用默认注册表数据库打开工厂
        error = myFactory.Open("");
    }
    private void StartButton_Click(object sender, EventArgs e)
    {
        if (myCamera != null)
        {
            // 用picturebox窗口句柄开始图像采集。如果操作为IntPtr.Zero,将创建一个新窗口。
            myCamera.StartImageAcquisition(true, 5, pictureBox1.Handle);

            StartButton.Enabled = false;
            StopButton.Enabled = true;

            Jai_FactoryWrapper.RECT newRectSize;
            newRectSize = new Jai_FactoryWrapper.RECT(0, 0, pictureBox1.Width, pictureBox1.Height);
            Jai_FactoryWrapper.J_Image_ResizeChildWindow(myCamera.WindowHandle, ref newRectSize);
        }
    }

    private void StopButton_Click(object sender, EventArgs e)
    {
        if (myCamera != null)
        {
            myCamera.StopImageAcquisition();

            StartButton.Enabled = true;
            StopButton.Enabled = false;
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        {
            for (int i = 0; i < 7; i++)
                Cbobodynumber.Items.Add(i);
        }
        if (null != myCamera)
        {
            if (myCamera.IsOpen)
            {
                myCamera.Close();
            }

            myCamera = null;
        }

        // 使用myFactory查找GigE和/或通用GenTL设备。更新相机列表(在本例中为GigE摄像机指定过滤器驱动程序)。
        myFactory.UpdateCameraList(Jai_FactoryDotNET.CFactory.EDriverType.FilterDriver);

        // 打开相机 -首先检查一下 GigE 设备
        for (int i = 0; i < myFactory.CameraList.Count; i++)
        {
            myCamera = myFactory.CameraList[i];
            if (Jai_FactoryWrapper.EFactoryError.Success == myCamera.Open())
            {
                break;
            }
        }

        if (null != myCamera && myCamera.IsOpen)
        {

            if (myCamera.NumOfDataStreams > 0)
            {
                StartButton.Enabled = true;
                StopButton.Enabled = true;
            }
            else
            {
                StartButton.Enabled = false;
                StopButton.Enabled = false;
            }
        }
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (myCamera != null)
        {
            StopButton_Click(null, null);
            myCamera.Close();
        }
    }

    private void SaveButton_Click(object sender, EventArgs e)
    {
        Directory.CreateDirectory(@"C:\Users\13333\Desktop\picture\Images");
        for (int i = 0; i < myFactory.CameraList.Count; i++) ;
        {
            string sModelName = myFactory.CameraList[i].ModelName;
            string sSubDirName = @"C:\Users\13333\Desktop\picture\Images\Device" + i.ToString();
            Directory.CreateDirectory(sSubDirName);
        }
        Jai_FactoryWrapper.J_Camera_Open
    }
}

}


版权声明:本文为weixin_42023419原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。