Ejemplo n.º 1
0
        /* ���ݸ��������ݼ���CAN/LIN/IO���ģ���ͨ�����ڷ��� */
        private void genericAction(string funcName, double param)
        {
            Byte[] data = new byte[CAN_DATA_LEN] { 0, 0, 0, 0, 0, 0, 0, 0 };
            List<T_GENERIC_INFO> xmlData_List = new List<T_GENERIC_INFO>();
            SeqList.Status_List_t ListNode = new SeqList.Status_List_t();
            Int64 val = new Int64();
            int i;
            double d;
            UInt64 temp = new UInt64();
            UInt64 t2 = new UInt64();
            UInt64 mask = new UInt64();
            byte cmdType, funcID = 0;
            byte dataLen;

            if (uiReloading) return;

            /* ���ݵ�Դ״̬����protocol */
            xmlData_List = GetXMLInfo.GetGenericInfoByFunc(funcName, pwrSts);
            foreach (T_GENERIC_INFO xmlData in xmlData_List)
            {
                d = Convert.ToInt64((param  + xmlData.preoffset) * xmlData.factor + xmlData.offset);
                val = Convert.ToInt64(d);
                dataLen = xmlData.dataLen;

                switch (xmlData.protocol)
                {
                    case "CAN":
                        cmdType = CommondType.CAN;
                        break;
                    case "LIN":
                        cmdType = CommondType.LIN;
                        break;
                    case "IO":
                        cmdType = CommondType.IO;
                        funcID = Convert.ToByte(xmlData.id);
                        break;
                    default:
                        cmdType = CommondType.Other;
                        break;
                }

                ListNode = CAN_Send_Msg_Manage.Get(cmdType, xmlData.id);
                if (ListNode.id == 0x00) /* û��ͬID�ı��ı����͹� */
                {
                    ListNode.cmdType = cmdType;
                    ListNode.id = Convert.ToUInt16(xmlData.id);
                    ListNode.data = data;
                    CAN_Send_Msg_Manage.Add(ListNode); /* ��� */
                }

                // ��֯������
                temp = 0;
                for (i = 0; i < ListNode.data.Length; i++)
                {
                    t2 = ListNode.data[i];
                    temp = temp | (t2 << ((ListNode.data.Length - i - 1) * 8));
                }
                if (val < 0) val = 0;
                // �¾����ݺϲ�
                t2 = (Convert.ToUInt64(val) << xmlData.startBit);
                //mask = Convert.ToUInt64(Math.Pow(2, xmlData.endBit - xmlData.startBit + 1) - 1);
                mask = 0;
                for (int k = xmlData.startBit; k <= xmlData.endBit; k++)
                {
                    UInt64 mask_t = new UInt64();
                    mask_t = Convert.ToUInt64(1) << (k);
                    mask |= mask_t;
                }
                //mask <<= xmlData.startBit;
                temp &= ~mask;
                temp |= t2;
                //Application.DoEvents();
                /* �������������� */
                ListNode.data[0] = (byte)((temp & 0xff00000000000000) >> 56);
                ListNode.data[1] = (byte)((temp & 0x00ff000000000000) >> 48);
                ListNode.data[2] = (byte)((temp & 0x0000ff0000000000) >> 40);
                ListNode.data[3] = (byte)((temp & 0x000000ff00000000) >> 32);
                ListNode.data[4] = (byte)((temp & 0x00000000ff000000) >> 24);
                ListNode.data[5] = (byte)((temp & 0x0000000000ff0000) >> 16);
                ListNode.data[6] = (byte)((temp & 0x000000000000ff00) >> 8);
                ListNode.data[7] = (byte)((temp & 0x00000000000000ff) >> 0);
                CAN_Send_Msg_Manage.Change(ListNode);
                this.FrameMessage.Set_Frame(cmdType, funcID, xmlData.id, ListNode.data, dataLen, xmlData.startBit, xmlData.endBit);
                Uart_C.WriteUART(this.FrameMessage);
                //Application.DoEvents();
                /* ���LOG */
                printCmdHistory(ListNode, xmlData.protocol, xmlData.name, xmlData.desc);
            }
        }
Ejemplo n.º 2
0
        private void btnManualSend_Click(object sender, EventArgs e)
        {
            SeqList.Status_List_t ListNode = new SeqList.Status_List_t();
            ushort dataId = Convert.ToUInt16(txtManualID.Text,16);
            byte dataLen = Convert.ToByte(txtManualDataLen.Text);
            byte cmdType = Convert.ToByte(cbManualType.SelectedIndex + 1);
            byte[] data = {0,0,0,0,0,0,0,0 };
            string dataStr = txtManualContent.Text;
            int i;

            Console.WriteLine(tabPageMisc.Controls[0].Visible);
            ListNode.data = data;
            ListNode.id = dataId;
            dataStr = dataStr.Trim();
            dataStr = dataStr.Replace(" ", "");
            for (i = 0; i < dataLen; i++)
            {
                data[i] = Convert.ToByte(dataStr.Substring(i*2, 2), 16);
            }

            CAN_Send_Msg_Manage.Change(ListNode);
            this.FrameMessage.Set_Frame(cmdType, 0, dataId, ListNode.data, dataLen, 0, 64);
            Uart_C.WriteUART(this.FrameMessage);

            /* ���LOG */
            printCmdHistory(ListNode, cbManualType.Text, "[�ֶ�]", "");
        }