Ejemplo n.º 1
0
        unsafe private CAN_FRAME[] GetCANFrames()
        {
            CAN_SEND_MODE    mSendMode    = (CAN_SEND_MODE)CAN.CAN_SEND_MODE_LIST[this.cbxSendMode.SelectedItem.ToString()];
            CAN_FRAME_TYPE   mFrameType   = (CAN_FRAME_TYPE)CAN.CAN_FRAME_TYPE_LIST[this.cbxFrameType.SelectedItem];
            CAN_FRAME_FORMAT mFrameFormat = (CAN_FRAME_FORMAT)CAN.CAN_FRAME_FORMAT_LIST[this.cbxFrameFormat.SelectedItem];

            uint   id            = Convert.ToUInt32(tbxFrameID.Text, 16);
            uint   mSendNum      = Convert.ToUInt32(this.tbxSendNum.Text, 10);
            double mSendInterval = Convert.ToDouble(this.tbxSendInterval.Text);

            string[] sDataArr = new Regex("[\\s]+").Replace(this.tbxFrameData.Text.Trim(), " ").Split(' ');
            byte     mDataLen = (byte)sDataArr.Length;

            StringBuilder sbBuilder = new StringBuilder("0x");

            for (int index = mDataLen - 1; index >= 0; index--)
            {
                sbBuilder.Append(sDataArr[index].PadLeft(2, '0'));
            }
            ulong data = Convert.ToUInt64(sbBuilder.ToString(), 16);

            bool incID   = chbxIncID.Checked;
            bool incData = chbxIncData.Checked;

            CAN_FRAME[] pCANFrames = new CAN_FRAME[mSendNum];
            for (uint index = 0; index < mSendNum; index++)
            {
                CAN_OBJ pCANObj = new CAN_OBJ();
                if (!incID)
                {
                    pCANObj.ID = id;
                }
                else
                {
                    pCANObj.ID = id + index;
                    if (mFrameFormat == CAN_FRAME_FORMAT.STANDARD_FRAME && pCANObj.ID > CAN.STANDARD_FRAME_ID_MAXIMUM)
                    {
                        pCANObj.ID = CAN.STANDARD_FRAME_ID_MAXIMUM;
                    }
                    else if (mFrameFormat == CAN_FRAME_FORMAT.EXTENDED_FRAME && pCANObj.ID > CAN.EXTENDED_FRAME_ID_MAXIMUM)
                    {
                        pCANObj.ID = CAN.EXTENDED_FRAME_ID_MAXIMUM;
                    }
                }
                //pCANObj.ID = incID ? id + index : id;
                pCANObj.DataLen = mDataLen;

                ulong ulData = incData ? data + index : data;
                Marshal.Copy(BitConverter.GetBytes(ulData), 0, (IntPtr)pCANObj.Data, (int)CAN.FRAME_DATA_LENGTH_MAXIMUM);

                pCANObj.SendType   = (byte)mSendMode;
                pCANObj.RemoteFlag = (byte)mFrameType;
                pCANObj.ExternFlag = (byte)mFrameFormat;
                pCANObj.TimeFlag   = (byte)CAN_FRAME_TIME_FLAG.INVALID;
                pCANObj.TimeStamp  = 0;

                pCANFrames[index] = new CAN_FRAME(pCANObj, DateTime.Now, CAN_FRAME_DIRECTION.SEND, CAN_FRAME_STATUS.UNKNOWN);
            }
            return(pCANFrames);
        }
Ejemplo n.º 2
0
 /************************************************************************************/
 public CAN_DATA(long mQueueIndex, CAN_FRAME pCANFrame, DataGridViewRow row)
 {
     this.QueueIndex = mQueueIndex;
     this.CANFrame   = pCANFrame;
     this.Row        = row;
     this.Init();
 }