示例#1
0
        public HidDeviceData.HID_RETURN GetFeature(HidDeviceReport r)
        {
            if (deviceOpened)
            {
                try
                {
                    byte[] buffer = CreateBuffer(FeatureReportByteLength - 1);
                    buffer[0] = r.reportID;

                    bool isGetFeature = HidD_GetFeature(device, buffer, buffer.Length);
                    if (isGetFeature)
                    {
                        var str = BitConverter.ToString(buffer, 0).Replace("-", string.Empty).ToLower();
                        Console.WriteLine(str);
                        return(HidDeviceData.HID_RETURN.SUCCESS);
                    }
                    return(HidDeviceData.HID_RETURN.NO_DEVICE_CONECTED);
                }
                catch
                {
                    EventArgs ex = new EventArgs();
                    OnDeviceRemoved(ex);//发出设备移除消息
                    CloseDevice();
                    return(HidDeviceData.HID_RETURN.NO_DEVICE_CONECTED);
                }
            }
            return(HidDeviceData.HID_RETURN.WRITE_FAILD);;
        }
示例#2
0
 /// <summary>
 /// 事件:数据到达,处理此事件以接收输入数据
 /// </summary>
 protected virtual void OnDataReceived(HidDeviceReport e)
 {
     if (DataReceived != null)
     {
         DataReceived(this, e);
     }
 }
示例#3
0
 public HidDeviceData.HID_RETURN SetFeature(HidDeviceReport r)
 {
     if (deviceOpened)
     {
         try
         {
             byte[] buffer = CreateBuffer(FeatureReportByteLength - 1);
             buffer[0] = r.reportID;
             Array.Copy(r.reportBuff, 0, buffer, 0, r.reportBuff.Length);
             bool isSetFeature = HidD_SetFeature(device, buffer, buffer.Length);
             if (isSetFeature)
             {
                 return(HidDeviceData.HID_RETURN.SUCCESS);
             }
             return(HidDeviceData.HID_RETURN.NO_DEVICE_CONECTED);
         }
         catch
         {
             EventArgs ex = new EventArgs();
             OnDeviceRemoved(ex);//发出设备移除消息
             CloseDevice();
             return(HidDeviceData.HID_RETURN.NO_DEVICE_CONECTED);
         }
     }
     return(HidDeviceData.HID_RETURN.WRITE_FAILD);
 }
示例#4
0
 /// <summary>
 /// 异步读取结束,发出有数据到达事件
 /// </summary>
 /// <param name="iResult">这里是输入报告的数组</param>
 private void ReadCompleted(IAsyncResult iResult)
 {
     byte[] readBuff = (byte[])(iResult.AsyncState);
     try
     {
         hidDevice.EndRead(iResult);//读取结束,如果读取错误就会产生一个异常
         byte[] reportData = new byte[readBuff.Length - 1];
         for (int i = 1; i < readBuff.Length; i++)
         {
             reportData[i - 1] = readBuff[i];
         }
         HidDeviceReport hid = new HidDeviceReport(readBuff[0], reportData);
         OnDataReceived(hid); //发出数据到达消息
         if (!deviceOpened)
         {
             return;
         }
         BeginAsyncRead(); //启动下一次读操作
     }
     catch                 //读写错误,设备已经被移除
     {
         //MyConsole.WriteLine("设备无法连接,请重新插入设备");
         EventArgs ex = new EventArgs();
         OnDeviceRemoved(ex);//发出设备移除消息
         CloseDevice();
     }
 }
示例#5
0
        public void HidDataReceived(object sender, HidDeviceReport e)
        {
            try
            {
                //第一个字节为数据长度,因为Device 的HID数据固定长度为64字节,取有效数据
                byte[] buf = new byte[e.reportBuff[0]];
                Array.Copy(e.reportBuff, 1, buf, 0, e.reportBuff[0]);

                //推送数据
                RaiseEventDataReceived(buf);
            }
            catch
            {
                #region 消息通知
                ReusltString result = new ReusltString();
                result.Result  = false;
                result.message = "Receive Error";
                RaiseEventConnectedState(result.Result);
                #endregion
            }
        }