| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System;
- using System.Text;
- using System.Windows.Forms;
- using Script.Methods;
- using HuarayVMCore;
- using HuarayVMCore.Camera;
- using HuarayVMCore.Core;
- using HuarayVMCore.VisionMaster;
- using ImageConverter = HuarayVMCore.Core.ImageConverter;
- using System.Threading;
- using VM.PlatformSDKCS;
- using VM.Core;
- using ImageSourceModuleCs;
- /************************************
- Shell Module default code: using .NET Framwwork 4.6.1
- *************************************/
- public partial class UserScript : ScriptMethods, IProcessMethods
- {
- //the count of process
- #region 实例
- int processCount;
- private HuarayCamera _camera = null;
- CameraDeviceInfo devInfo = null;
- bool GetImageOK = false;//单帧取像时的结果判断
- #endregion
- //Continuous=连续采集模式 Software=软触发模式 Hardware=外部硬件触发模式
- TriggerMode _TriggerMode = TriggerMode.Hardware;
- // Software-连续 Software=软触发 Line0-Line2 线路触发 CounterOut-CounterOut
- TriggerSource _TriggerSource = TriggerSource.Line0;
- /// <summary>
- /// Initialize the field's value when compiling
- /// </summary>
- public void Init()
- {
- try
- {
- if (_camera != null)
- _camera.Close();
- var _deviceList = HuarayCamera.EnumerateDevices();
- for (int i = 0; i < _deviceList.Count; i++)
- {
- if (_deviceList[i].SerialNumber == SerialNumber)
- {
- _camera = new HuarayCamera();
- _camera.FrameReceived += OnFrameReceived;
- VmSolution.Instance.DisableModulesCallback();//关闭所有回调
- devInfo = _deviceList[i];
- _camera.Open(devInfo);
- //set
- _camera.SetIntFeatureValue("Width", (long)ImgWidth);//设置图像宽高
- _camera.SetIntFeatureValue("Height", (long)ImgHeight);//设置图像宽高
- _camera.SetTriggerMode(_TriggerMode, _TriggerSource);//设置触发模式
- _camera.SetDoubleFeatureValue("ExposureTime", (double)ExposureTime);//设置曝光时间
- _camera.SetDoubleFeatureValue("Gain", (double)Gain);//设置增益
- _camera.SetBufferCount(30);//设置缓冲区数量
- _camera.StartGrabbing();//开始采集
- continue;
- }
- }
- }
- catch
- {
- }
- //You can add other global fields here
- processCount = 0;
- }
- /// <summary>
- /// Enter the process function when running code once
- /// </summary>
- /// <returns></returns>
- public bool Process()
- {
- bool Result= _camera!=null && _camera.IsOpened;
- Message=Result.ToString();
- if(!Result)
- {
- Message="相机连接失败!";
- throw new Exception("相机连接失败!");
- }
- return true;
- }
- /// <summary>
- /// 帧接收事件处理(异步回调取图模式)
- /// </summary>
- private void OnFrameReceived(object sender, FrameReceivedEventArgs e)
- {
- try
- {
- ImageBaseData imageData = ImageConverter.ToImageBaseData(e);
- VmProcedure procedure = VmSolution.Instance[FlowName] as VmProcedure;
- ImageSourceModuleTool module = VmSolution.Instance[FlowName + "." + ToolName] as ImageSourceModuleTool;
- module.SetImageData(imageData);
- procedure.Run();
- GetImageOK = true;
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- }
|