using System;
|
using System.Collections.Generic;
|
using System.Diagnostics;
|
using System.Drawing;
|
using System.Reflection;
|
|
namespace LB_VisionProcesses.Cameras
|
{
|
public class Total
|
{
|
public int iImageCount { get; set; } = 0;
|
public int iScanCount { get; set; } = 0;
|
|
public Total() { }
|
|
public Total(int iImageCount, int iScanCount)
|
{
|
this.iImageCount = iImageCount;
|
this.iScanCount = iScanCount;
|
}
|
|
public void Clear()
|
{
|
iImageCount = 0;
|
iScanCount = 0;
|
}
|
}
|
public interface ICamera : IDisposable
|
{
|
|
#region operate
|
|
Dictionary<string, List<Bitmap>> CollectedImages { get; set; }
|
/// <summary>
|
/// 获取相机SN枚举
|
/// </summary>
|
/// <returns></returns>
|
List<string> GetListEnum();
|
|
/// <summary>
|
/// 初始化相机
|
/// </summary>
|
/// <param name="CamInfo"></param>
|
/// <returns></returns>
|
bool InitDevice(string SN, object Handle);
|
|
/// <summary>
|
/// 注销相机
|
/// </summary>
|
bool CloseDevice();
|
|
/// <summary>
|
/// 软触发模式 启动相机
|
/// </summary>
|
/// <returns></returns>
|
bool StartWith_SoftTriggerModel();
|
|
/// <summary>
|
/// 硬触发模式 启动相机
|
/// </summary>
|
/// <param name="hardtriggeritem"></param>
|
/// <returns></returns>
|
bool StartWith_HardTriggerModel(TriggerSource hardtriggeritem = TriggerSource.Line0);
|
|
/// <summary>
|
/// 等待硬触发获取图像
|
/// </summary>
|
/// <param name="bitmap"></param>
|
/// <param name="outtime"></param>
|
/// <returns></returns>
|
bool GetImage(out Bitmap bitmap, int outtime = 3000);
|
|
/// <summary>
|
/// 软触发获取图像
|
/// </summary>
|
/// <param name="bitmap"></param>
|
/// <param name="outtime"></param>
|
/// <returns></returns>
|
bool GetImageWithSoftTrigger(out Bitmap bitmap, int outtime = 3000);
|
|
/// <summary>
|
/// 软触发
|
/// </summary>
|
/// <returns></returns>
|
bool SoftTrigger();
|
|
#endregion
|
|
#region SettingConfig
|
/// <summary>
|
/// 设置相机参数
|
/// </summary>
|
/// <param name="config"></param>
|
void SetCamConfig(CameraConfig config);
|
/// <summary>
|
/// 获取相机参数
|
/// </summary>
|
/// <param name="config"></param>
|
void GetCamConfig(out CameraConfig config);
|
|
/// <summary>
|
/// 设置触发模式及触发源
|
/// </summary>
|
/// <param name="mode"></param>
|
/// <param name="triggerEnum"></param>
|
/// <returns></returns>
|
bool SetTriggerMode(TriggerMode mode, TriggerSource source = TriggerSource.Line0);
|
|
/// <summary>
|
/// 获取触发模式及触发源
|
/// </summary>
|
/// <param name="mode"></param>
|
/// <param name="hardTriggerModel"></param>
|
/// <returns></returns>
|
bool GetTriggerMode(out TriggerMode mode, out TriggerSource source);
|
|
/// <summary>
|
/// 设置曝光时长
|
/// </summary>
|
/// <param name="value"></param>
|
/// <returns></returns>
|
bool SetExpouseTime(double value);
|
|
/// <summary>
|
/// 获取曝光时长
|
/// </summary>
|
/// <param name="value"></param>
|
/// <returns></returns>
|
bool GetExpouseTime(out double value);
|
|
/// <summary>
|
/// 设置硬触发极性
|
/// </summary>
|
/// <param name="polarity"></param>
|
/// <returns></returns>
|
bool SetTriggerPolarity(TriggerPolarity polarity);
|
|
/// <summary>
|
/// 获取硬触发极性
|
/// </summary>
|
/// <param name="polarity"></param>
|
/// <returns></returns>
|
bool GetTriggerPolarity(out TriggerPolarity polarity);
|
|
/// <summary>
|
/// 设置触发滤波时间 (us)
|
/// </summary>
|
/// <param name="flitertime"></param>
|
/// <returns></returns>
|
bool SetTriggerFliter(double flitertime);
|
|
/// <summary>
|
/// 获取触发滤波时间 (us)
|
/// </summary>
|
/// <param name="flitertime"></param>
|
/// <returns></returns>
|
bool GetTriggerFliter(out double flitertime);
|
|
/// <summary>
|
/// 设置触发延时
|
/// </summary>
|
/// <param name="delay"></param>
|
/// <returns></returns>
|
bool SetTriggerDelay(double delay);
|
|
/// <summary>
|
/// 获取触发延时
|
/// </summary>
|
/// <param name="delay"></param>
|
/// <returns></returns>
|
bool GetTriggerDelay(out double delay);
|
|
/// <summary>
|
/// 设置增益
|
/// </summary>
|
/// <param name="gain"></param>
|
/// <returns></returns>
|
bool SetGain(double gain);
|
|
/// <summary>
|
/// 获取增益值
|
/// </summary>
|
/// <param name="gain"></param>
|
/// <returns></returns>
|
bool GetGain(out double gain);
|
|
/// <summary>
|
/// 设置信号线模式
|
/// </summary>
|
/// <param name="line"></param>
|
/// <param name="mode"></param>
|
/// <returns></returns>
|
bool SetLineMode(IOLines line, LineMode mode);
|
|
/// <summary>
|
/// 设置信号线电平状态
|
/// </summary>
|
/// <param name="line"></param>
|
/// <param name="linestatus"></param>
|
/// <returns></returns>
|
bool SetLineStatus(IOLines line, LineStatus linestatus);
|
|
/// <summary>
|
/// 获取信号线电平状态
|
/// </summary>
|
/// <param name="line"></param>
|
/// <param name="lineStatus"></param>
|
/// <returns></returns>
|
bool GetLineStatus(IOLines line, out LineStatus lineStatus);
|
|
/// <summary>
|
/// 自动白平衡
|
/// </summary>
|
/// <returns></returns>
|
bool AutoBalanceWhite();
|
|
/// <summary>
|
/// 开始采图
|
/// </summary>
|
/// <returns></returns>
|
bool StartGrabbing();
|
|
/// <summary>
|
/// 停止采图
|
/// </summary>
|
/// <returns></returns>
|
bool StopGrabbing();
|
#endregion
|
}
|
|
public enum CameraBrand
|
{
|
/// <summary>
|
/// 华睿工业相机
|
/// </summary>
|
HRCamera,
|
/// <summary>
|
/// 兰宝工业相机
|
/// </summary>
|
LBCamera,
|
/// <summary>
|
/// 未知相机
|
/// </summary>
|
UNSUPPORTED
|
}
|
|
public enum IOLines
|
{
|
Line0,
|
Line1,
|
Line2,
|
Line3,
|
Line4,
|
Line5
|
}
|
|
public enum LineMode
|
{
|
Input,
|
Output
|
}
|
|
public enum LineStatus
|
{
|
Hight,
|
Low
|
}
|
|
public enum TriggerMode
|
{
|
Off,
|
On
|
}
|
|
public enum TriggerPolarity
|
{
|
RisingEdge,
|
FallingEdge,
|
HighLevel,
|
LowLevel
|
}
|
|
public enum TriggerSource
|
{
|
Software,
|
Line0,
|
Line1,
|
Line2,
|
Line3,
|
Line4,
|
Line5,
|
None
|
}
|
|
public class CameraEventArgs
|
{
|
public string SN { get; set; }
|
|
public Bitmap Bitmap { get; set; }
|
|
public string[] arrResult;
|
public CameraEventArgs() { }
|
|
public CameraEventArgs(string sn, Bitmap bitmap, string[] arrResult = null)
|
{
|
this.SN = sn;
|
this.Bitmap = bitmap;
|
this.arrResult = arrResult;
|
}
|
}
|
}
|