/// <summary> /// 读取数据 /// </summary> /// <param name="e"></param> void dataCommunication_DataRecieved(DataRecievedArgs e) { var buffer = e.Buffer.GetBytes(0xFA, 9); while (buffer != null) { ResponsePackage responsePackage = null; //判断数据类型 int dataType = buffer[1]; switch (dataType) { case ResponseCodes.BendStretchData: responsePackage = GetBendStretchData(buffer, 2); break; case ResponseCodes.RotationData: responsePackage = GetRotationData(buffer, 2); break; case ResponseCodes.OtherData: responsePackage = GetOtherData(buffer, 2); break; case ResponseCodes.Alarm: responsePackage = GetAlarm(buffer, 2); break; case ResponseCodes.Version: responsePackage = GetVersion(buffer, 2); break; } if (responsePackage != null) { if (DataPackRecieved != null) { DataPackReceivedEventArgs args = new DataPackReceivedEventArgs(); args.ResponsePackageData = responsePackage; myThreadPool.QueueUserWorkItem((x) => { DataPackRecieved(args); }, null); } } buffer = e.Buffer.GetBytes(0xFA, 9); } }
/// <summary> /// 接收数据 /// </summary> private void Recieve() { uint len = 0; VCI_ERR_INFO errinfo = new VCI_ERR_INFO(); VCI_CAN_OBJ[] frameinfos = new VCI_CAN_OBJ[1]; while (isOpen) { try { do { len = VCI_Receive(DEVICETYPE, DeviceInd, CNDInd, ref frameinfos[0], 1, 0); if (len <= 0) { VCI_ReadErrInfo(DEVICETYPE, DeviceInd, CNDInd, ref errinfo); } else { foreach (var frameinfo in frameinfos) { if (frameinfo.DataLen > 0 && frameinfo.Data != null) { if (frameinfo.Data.Length < frameinfo.DataLen) { WriteLog("数据格式不正确!"); } buffer.Add(0xFA);//加数据包头 //buffer.Add(0xe1); //buffer.Add(0x08); //buffer.Add(0); //buffer.Add(0); for (int i = 1; i < frameinfo.DataLen + 1; i++) { buffer.Add(frameinfo.Data[i - 1]); } DataRecievedArgs args = new DataRecievedArgs(); args.Buffer = buffer; //System.Diagnostics.Debug.WriteLine(frameinfo.Data[7]); //args.Buffer1 = new byte[frameinfo.DataLen]; ////args.Buffer[0] = 0xe1; ////args.Buffer[1] = 0x08; ////args.Buffer[2] = 0; ////args.Buffer[3] = 0; //for (int i = 0; i < frameinfo.DataLen; i++) //{ // args.Buffer1[i] = frameinfo.Data[i]; //} if (DataReceived != null) DataReceived(args); } } } } while (len <= 0); } catch { } //System.Diagnostics.Debug.WriteLine("end:" + DateTime.Now.Millisecond); //VCI_ClearBuffer(VCI_USBCAN1, DeviceInd, CNDInd); Thread.Sleep(1); } }