Newer
Older
CaptureEye / IrisCtrl / USBHID / HIDControl.cs
yxw on 14 Aug 2020 2 KB first commt
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IrisCtrl.USBHID
{
    public class HIDControl
    {

        #region parameter Define
        HIDInterface hid = new HIDInterface();

        struct connectStatusStruct
        {
            public bool preStatus;
            public bool curStatus;
        }

        connectStatusStruct connectStatus = new connectStatusStruct();

        //推送连接状态信息
        public delegate void isConnectedDelegate(bool isConnected);
        public isConnectedDelegate isConnectedFunc;

        //推送接收数据信息
        public delegate void PushReceiveDataDele(byte[] datas);
        public PushReceiveDataDele pushReceiveData;
        #endregion

        //第一步需要初始化,传入vid、pid,并开启自动连接
        public void Initial()
        {
            hid.StatusConnected = StatusConnected;
            hid.DataReceived = DataReceived;

            HIDInterface.HidDevice hidDevice = new HIDInterface.HidDevice();
            hidDevice.vID = 0x06CB;
            hidDevice.pID = 0x000F;
            hidDevice.serial = "";
            hid.AutoConnect(hidDevice);
        }

        //不使用则关闭
        public void Close()
        {
            hid.StopAutoConnect();
        }

        //发送数据
        public bool SendBytes(byte[] data)
        {

            return hid.Send(data);

        }

        //接受到数据
        public void DataReceived(object sender, byte[] e)
        {
            if (pushReceiveData != null)
                pushReceiveData(e);
        }

        //状态改变接收
        public void StatusConnected(object sender, bool isConnect)
        {
            connectStatus.curStatus = isConnect;
            if (connectStatus.curStatus == connectStatus.preStatus)  //connect
                return;
            connectStatus.preStatus = connectStatus.curStatus;

            if (connectStatus.curStatus)
            {
                isConnectedFunc(true);
                //ReportMessage(MessagesType.Message, "连接成功");
            }
            else //disconnect
            {
                isConnectedFunc(false);
                //ReportMessage(MessagesType.Error, "无法连接");
            }
        }


    }
}