private static TorqueEventArgs ParseOpenProtocal(byte[] data) { string str; Int32 ival; TorqueEventArgs args = new TorqueEventArgs(); str = ASCIIEncoding.ASCII.GetString(data, 2, 4); args.mCellID = Convert.ToInt32(str); str = ASCIIEncoding.ASCII.GetString(data, 8, 2); args.mChannelID = Convert.ToInt32(str); args.mControllerName = ASCIIEncoding.ASCII.GetString(data, 12, 25); args.mVIN = ASCIIEncoding.ASCII.GetString(data, 39, 25); str = ASCIIEncoding.ASCII.GetString(data, 66, 2); args.mJobNo = Convert.ToInt32(str); str = ASCIIEncoding.ASCII.GetString(data, 70, 3); args.mPSetNo = Convert.ToInt32(str); str = ASCIIEncoding.ASCII.GetString(data, 75, 4); args.mBatchSize = Convert.ToInt32(str); str = ASCIIEncoding.ASCII.GetString(data, 81, 4); args.mBatchCount = Convert.ToInt32(str); args.mTorqueStatus = (StatusType)(data[90] - 48); args.mAngleStatus = (StatusType)(data[93] - 48); //data[87] return 53 ... should be 48 or 49 ... need to investigate args.mSuccess = (args.mTorqueStatus == StatusType.OK && args.mAngleStatus == StatusType.OK); str = ASCIIEncoding.ASCII.GetString(data, 96, 6); ival = Convert.ToInt32(str); args.mTorqueMin = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 104, 6); ival = Convert.ToInt32(str); args.mTorqueMax = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 112, 6); ival = Convert.ToInt32(str); args.mTorqueTarget = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 120, 6); ival = Convert.ToInt32(str); args.mTorque = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 128, 5); ival = Convert.ToInt32(str); args.mAngleMin = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 135, 5); ival = Convert.ToInt32(str); args.mAngleMax = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 142, 5); ival = Convert.ToInt32(str); args.mAngleTarget = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 149, 5); ival = Convert.ToInt32(str); args.mAngle = ival / 100.0F; str = ASCIIEncoding.ASCII.GetString(data, 156, 10); str += " "; str += ASCIIEncoding.ASCII.GetString(data, 167, 8); args.mTimestamp = Convert.ToDateTime(str); str = ASCIIEncoding.ASCII.GetString(data, 177, 10); str += " "; str += ASCIIEncoding.ASCII.GetString(data, 188, 8); args.mLastPSetChange = Convert.ToDateTime(str); args.mBatchStatus = (BatchStatusType)(data[198] - 48); str = ASCIIEncoding.ASCII.GetString(data, 201, 10); args.mTighteningID = Convert.ToInt32(str.Trim()); return args; }
public static bool TryParse(Protocal protocal, byte[] data, out TorqueEventArgs args) { args = null; try { switch (protocal) { case Protocal.OpenProtocal: args = ParseOpenProtocal(data); return true; default: return false; } } catch { return false; } }