/// <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]; } report e = new report(readBuff[0], reportData); OnDataReceived(e); //发出数据到达消息 BeginAsyncRead(); //启动下一次读操作 } catch (IOException) //读写错误,设备已经被移除 { EventArgs ex = new EventArgs(); OnDeviceRemoved(ex);//发出设备移除消息 CloseDevice(); } }
/// <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]; report e = new report(readBuff[0], reportData); OnDataReceived(e); //发出数据到达消息 BeginAsyncRead();//启动下一次读操作 } catch (IOException)//读写错误,设备已经被移除 { EventArgs ex = new EventArgs(); OnDeviceRemoved(ex);//发出设备移除消息 CloseDevice(); } }
private void usbHID_DataReceived(object sender, EventArgs e) { report myRP = (report)e; if (InvokeRequired) { Invoke(new EventHandler(usbHID_DataReceived), new object[] { sender, e }); } else { lib_dev1_ng.Items.Clear(); //if (myRP.reportBuff[0] == 0x00) if ((myRP.reportBuff[0] & 0x27) == 0x00) { lib_dev1_ng.Items.Add(lb_dev1_rlt.Text); if ((int)(myRP.reportBuff[7] - 128) <= Convert.ToInt16(this.rssimin.Text.Substring(1))) { lb_dev1_rlt.Text = "OK" + " , -" + Convert.ToString((int)(myRP.reportBuff[7] - 128)) + "dB"; lb_dev1_rlt.ForeColor = Color.Green; } else { lb_dev1_rlt.Text = "信号强度低"; lb_dev1_rlt.ForeColor = Color.Red; } } //receive disconnect report else if (System.Text.Encoding.ASCII.GetString(myRP.reportBuff).IndexOf("disconne") > -1) { this.lb_dev1_rlt.Text = "测试结果"; lb_dev1_rlt.ForeColor = Color.Blue; } else if (System.Text.Encoding.ASCII.GetString(myRP.reportBuff).IndexOf("goahead") > -1) { this.lb_dev1_rlt.Text = "检测中,勿开箱"; lb_dev1_rlt.ForeColor = Color.Red; } //receive scantimeout report else if (System.Text.Encoding.ASCII.GetString(myRP.reportBuff).IndexOf("nodevice") > -1) { this.lb_dev1_rlt.Text = "搜索失败"; lb_dev1_rlt.ForeColor = Color.Red; } else { lb_dev1_rlt.Text = "NG"; lb_dev1_rlt.ForeColor = Color.Red; if ((myRP.reportBuff[0] & 0x01) == 0x01) { lib_dev1_ng.Items.Add("Flash ID错误"); } if ((myRP.reportBuff[0] & 0x02) == 0x02) { lib_dev1_ng.Items.Add("Flash 读写错误"); } if ((myRP.reportBuff[0] & 0x04) == 0x04) { lib_dev1_ng.Items.Add("G-sensor ID错误"); } if ((myRP.reportBuff[0] & 0x08) == 0x08) { lib_dev1_ng.Items.Add("G-sensor 自检失败"); } /*if ((myRP.reportBuff[0] & 0x10) == 0x10) * { * lib_dev1_ng.Items.Add("PPG传感器错误"); * }*/ if ((myRP.reportBuff[0] & 0x20) == 0x20) { lib_dev1_ng.Items.Add("ADC错误"); } /*if ((myRP.reportBuff[0] & 0x40) == 0x40) * { * lib_dev1_ng.Items.Add("PPG电流检测失败"); * } * if ((myRP.reportBuff[0] & 0x80) == 0x80) * { * lib_dev1_ng.Items.Add("没有检测到充电状态"); * }*/ } byte[] byte_macaddr = new byte[6]; for (cid = 0; cid < 6; cid++) { byte_macaddr[cid] = myRP.reportBuff[6 - cid]; } string str_macaddr = USBHID.ByteToHexString(byte_macaddr); this.pb_dev1_barcode.Image = null; System.Drawing.Image image; int width = pb_dev1_barcode.Size.Width, height = pb_dev1_barcode.Size.Height; string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "barcode.jpg"; GetBarcode(height, width, BarcodeLib.TYPE.CODE128, str_macaddr, out image, fileSavePath); FileStream fileStream = new FileStream(fileSavePath, FileMode.Open, FileAccess.Read); this.pb_dev1_barcode.Image = Image.FromStream(fileStream); fileStream.Close(); fileStream.Dispose(); //this.pb_dev1_barcode.Image = Image.FromFile("barcode.jpg"); } }