⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcutools.cpp

📁 MCUTool.exe 源代码 !!!超级单片机开发工具!!! 单片机开发过程中用到的多功能工具
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        // Read the vars from ini file
        int varcount;
        varcount = ini->ReadInteger("Var Count","Count",0);
        if (varcount>0){
                TListItem * item;
                for(int i=0;i<varcount;i++){
                        item = lvCOMVars->Items->Add();
                        item->Caption = i;
                        item->Checked = true;
                        item->SubItems->CommaText = ini->ReadString("Var List",i,"");
                }
        }

        // Read the master command for communication
        varcount = ini->ReadInteger("Master Command Count","Count",0);
        if (varcount>0){
                for(int i=0;i<varcount;i++){
                        clbInteractive->Items->Add(ini->ReadString("Master Command List",i,""));
                }
        }

        // Read the slaver command & answer pairs
        varcount = ini->ReadInteger("Slaver Command Count","Count",0);
        if (varcount>0){
                ini->ReadSectionValues("Slaver Command List",vleInteractive->Strings);
        }

        if(rbMemMap->Checked ){
                s = "0x" + leMemStart->Text;
                DispOffset = s.ToInt();
        } else {
                DispOffset = 0;
        }

        strRadix = new TStringList();
        strRadix->Add("Hex=0");
        strRadix->Add("Dec=1");
        strRadix->Add("Bin=2");
        strType = new TStringList();
        strType->Add("char=0");
        strType->Add("int=1");
        strType->Add("long=2");
        strType->Add("float=3");
        strType->Add("double=4");
        strType->Add("BitMask=5");
        strType->Add("Array=6");

        pStatus.PortOpen = false;

        delete ini;
        delete my;
        delete myp;
        delete ParallelPorts;
}
//---------------------------------------------------------------------------


void __fastcall TfrmMain::btnEncodeClick(TObject *Sender)
{
    WORD patA,patA1,patA2,patB,patC,patD,patD1,patD2,patE,patF,patG,patG1,patG2,patH,patJ,patK,patL,patM,patN;
    typedef union {
         unsigned char ar[2];
         unsigned int  wd;
    }LEDs;
    LEDs led[256];
    String s,prefix,postfix;
    unsigned int i;
    unsigned int pat;
    bool fCustom=false;

//    if(rbLED14->Checked || rbLED7->Checked || rbLED16->Checked){
        if(rbLED16->Checked){
            try{
            patA1 = (1<<edLED16A1->Text.ToInt());
            patA2 = (1<<edLED16A2->Text.ToInt());
            patB = (1<<edLED16B->Text.ToInt());
            patC = (1<<edLED16C->Text.ToInt());
            patD1 = (1<<edLED16D1->Text.ToInt());
            patD2 = (1<<edLED16D2->Text.ToInt());
            patE = (1<<edLED16E->Text.ToInt());
            patF = (1<<edLED16F->Text.ToInt());
            patG1 = (1<<edLED16G1->Text.ToInt());
            patG2 = (1<<edLED16G2->Text.ToInt());
            patH = (1<<edLED16H->Text.ToInt());
            patJ = (1<<edLED16J->Text.ToInt());
            patK = (1<<edLED16K->Text.ToInt());
            patL = (1<<edLED16L->Text.ToInt());
            patM = (1<<edLED16M->Text.ToInt());
            patN = (1<<edLED16N->Text.ToInt());
            }
            catch(EConvertError &E)
            {
                        Application->MessageBox("Please input bit information correctly!","Error",MB_OK | MB_ICONERROR);
                        return;
            }

            if(vleLEDCodec->RowCount > 2 || !vleLEDCodec->Cells[1][1].IsEmpty() ){
                for(i=1;i<vleLEDCodec->RowCount ;i++){
                        if(vleLEDCodec->Cells[1][i].IsEmpty()){
                                led[i].wd = 0;
                                continue;
                        }
                        try{
                                pat = vleLEDCodec->Cells[1][i].ToInt();
                        }catch(...){
                                pat = 0;
                        }
                        led[i].wd =  (patA1  & ((pat & (1<<0))?0xffff:0x0000))
                                     |(patA2 & ((pat & (1<<1))?0xffff:0x0000))
                                     |(patB  & ((pat & (1<<2))?0xffff:0x0000))
                                     |(patC  & ((pat & (1<<3))?0xffff:0x0000))
                                     |(patD1 & ((pat & (1<<4))?0xffff:0x0000))
                                     |(patD2 & ((pat & (1<<5))?0xffff:0x0000))
                                     |(patE  & ((pat & (1<<6))?0xffff:0x0000))
                                     |(patF  & ((pat & (1<<7))?0xffff:0x0000))
                                     |(patG1 & ((pat & (1<<8))?0xffff:0x0000))
                                     |(patG2 & ((pat & (1<<9))?0xffff:0x0000))
                                     |(patH  & ((pat & (1<<10))?0xffff:0x0000))
                                     |(patJ  & ((pat & (1<<11))?0xffff:0x0000))
                                     |(patK  & ((pat & (1<<12))?0xffff:0x0000))
                                     |(patL  & ((pat & (1<<13))?0xffff:0x0000))
                                     |(patM  & ((pat & (1<<14))?0xffff:0x0000))
                                     |(patN  & ((pat & (1<<15))?0xffff:0x0000));
                        fCustom = true;
                }
            }else{
                led[0].wd = patA1|patA2|patB|patC|patE|patF|patG1|patG2;        //A
                led[1].wd = patF|patE|patG1|patG2|patC|patD1|patD2;             //B
                led[2].wd = patA1|patA2|patD1|patD2|patE|patF;                  //C
                led[3].wd = patA1|patA2|patB|patC|patD1|patD2|patM|patJ;        //D
                led[4].wd = patA1|patA2|patD1|patD2|patE|patF|patG1|patG2;      //E
                led[5].wd = patA1|patA2|patE|patF|patG1|patG2;                  //F
                led[6].wd = patC|patD1|patD2|patE|patF|patG2;                   //G
                led[7].wd = patB|patC|patE|patF|patG1|patG2;                    //H
                led[8].wd = patA1|patA2|patD1|patD2|patM|patJ;                  //I
                led[9].wd = patB|patC|patD1|patD2;                              //J
                led[10].wd = patG1|patE|patF|patK|patL;                         //K
                led[11].wd = patD1|patD2|patE|patF;                             //L
                led[12].wd = patB|patC|patE|patF|patH|patK;                     //M
                led[13].wd = patB|patC|patE|patF|patH|patL;                     //N
                led[14].wd = patA1|patA2|patB|patC|patD1|patD2|patE|patF;       //O
                led[15].wd = patA1|patA2|patB|patE|patF|patG1|patG2;            //P
                led[16].wd = patA1|patA2|patB|patC|patD1|patD2|patE|patF|patL;  //Q
                led[17].wd = patA1|patA2|patB|patE|patF|patG1|patG2|patL;       //R
                led[18].wd = patA1|patA2|patC|patD1|patD2|patF|patG1|patG2;     //S
                led[19].wd = patA1|patA2|patM|patJ;                             //T
                led[20].wd = patB|patC|patD1|patD2|patE|patF;                   //U
                led[21].wd = patE|patF|patN|patK;                               //V
                led[22].wd = patB|patC|patE|patF|patL|patN;                     //W
                led[23].wd = patH|patK|patL|patN;                               //X
                led[24].wd = patB|patC|patD1|patD2|patF|patG1|patG2;            //Y
                led[25].wd = patA1|patA2|patK|patN|patD1|patD2;                 //Z

                led[26].wd = patA1|patA2|patB|patC|patD1|patD2|patE|patF;                      //0
                led[27].wd = patB|patC;                                                        //1
                led[28].wd = patA1|patA2|patB|patD1|patD2|patE|patG1|patG2;                    //2
                led[29].wd = patA1|patA2|patB|patC|patD1|patD2|patG1|patG2;                    //3
                led[30].wd = patB|patC|patF|patG1|patG2;                                       //4
                led[31].wd = patA1|patA2|patC|patD1|patD2|patF|patG1|patG2;                    //5
                led[32].wd = patA1|patA2|patC|patD1|patD2|patE|patF|patG1|patG2;               //6
                led[33].wd = patA1|patA2|patB|patC;                                            //7
                led[34].wd = patA1|patA2|patB|patC|patD1|patD2|patE|patF|patG1|patG2;          //8
                led[35].wd = patA1|patA2|patB|patC|patD1|patD2|patF|patG1|patG2;               //9
                led[36].wd = patA1|patA2|patB|patC|patE|patF|patG1|patG2;                      //A
                led[37].wd = patF|patE|patG1|patG2|patC|patD1|patD2;                           //B
                led[38].wd = patA1|patA2|patD1|patD2|patE|patF;                                //C
                led[39].wd = patA1|patA2|patB|patC|patD1|patD2|patM|patJ;                      //D
                led[40].wd = patA1|patA2|patD1|patD2|patE|patF|patG1|patG2;                    //E
                led[41].wd = patA1|patA2|patE|patF|patG1|patG2;                                //F
            }

            if(cbLEDReverse->Checked){
                if(fCustom){
                        for (i=1;i<vleLEDCodec->RowCount;i++){
                                led[i].wd ^= 0xffff;
                        }
                }else{
                        for (i=0;i<42;i++){
                                led[i].wd ^= 0xffff;
                        }
                }
            }

            if(rb4Bits->Checked){
                if(rbASM->Checked ){
                    if(rbPre->Checked){
                        prefix = edHex->Text.Trim();
                    }else{
                        postfix = edHex->Text.Trim();
                    }
                  if(fCustom){
                    mLEDCode->Text = "LED16Codec:\t\t; Character Encode";     // Character
                    for (i=1;i<vleLEDCodec->RowCount;i++){
                        s = vleLEDCodec->Keys[i];
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex(led[i].ar[0] & 0x0f,2)+ postfix + "\t\t; "+ s + " LSB");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex((led[i].ar[0]>>4) & 0x0f,2)+ postfix + "\t\t; "+ s + " ...");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex(led[i].ar[1] & 0x0f,2)+ postfix + "\t\t; "+ s + " ...");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex((led[i].ar[1]>>4) & 0x0f,2)+ postfix + "\t\t; "+ s + " MSB");
                    }

                    mLEDCode->Lines->Add(" ");
                  }else{
                    mLEDCode->Text = "LED16Char:\t\t; Character Encode";     // Character
                    for (i=0;i<26;i++){
                        s.printf("%c",'A'+i);
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex(led[i].ar[0] & 0x0f,2)+ postfix + "\t\t; "+ s + " LSB");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex((led[i].ar[0]>>4) & 0x0f,2)+ postfix + "\t\t; "+ s + " ...");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex(led[i].ar[1] & 0x0f,2)+ postfix + "\t\t; "+ s + " ...");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex((led[i].ar[1]>>4) & 0x0f,2)+ postfix + "\t\t; "+ s + " MSB");
                    }

                    mLEDCode->Lines->Add(" ");
                    mLEDCode->Lines->Add("LED16Num:\t\t; Number Encode");      // Number
                    for (i=26;i<42;i++){
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex(led[i].ar[0] & 0x0f,2)+ postfix + "\t\t; "+ s.IntToHex(i-26,1) + " LSB");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex((led[i].ar[0]>>4) & 0x0f,2)+ postfix + "\t\t; "+ s.IntToHex(i-26,1) + " ...");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex(led[i].ar[1] & 0x0f,2)+ postfix + "\t\t; "+ s.IntToHex(i-26,1) + " ...");
                        mLEDCode->Lines->Add("\t"+edLEDDB->Text.Trim()+"\t" + prefix + s.IntToHex((led[i].ar[1]>>4) & 0x0f,2)+ postfix + "\t\t; "+ s.IntToHex(i-26,1) + " MSB");
                    }
                  }
                } else {
                  if(fCustom){
                    mLEDCode->Text = "const unsigned char LED16Char[]={\t\t// Character Encode";  // Character
                    for (i=1;i<vleLEDCodec->RowCount;i++){
                        s = vleLEDCodec->Keys[i];
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex(led[i].ar[0] & 0x0f,2)+ (",\t\t// ")+ s + " LSB");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex((led[i].ar[0]>>4) & 0x0f,2)+ (",\t\t// ")+ s + " ...");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex(led[i].ar[1] & 0x0f,2)+ (",\t\t// ")+ s + " ...");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex((led[i].ar[1]>>4) & 0x0f,2)+ (i==vleLEDCodec->RowCount-1?"\t\t// ":",\t\t// ")+ s + " MSB");
                    }
                    mLEDCode->Lines->Add("};");
                  }else{
                    mLEDCode->Text = "const unsigned char LED16Char[]={\t\t// Character Encode";  // Character
                    for (i=0;i<26;i++){
                        s.printf("%c",'A'+i);
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex(led[i].ar[0] & 0x0f,2)+ (",\t\t// ")+ s + " LSB");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex((led[i].ar[0]>>4) & 0x0f,2)+ (",\t\t// ")+ s + " ...");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex(led[i].ar[1] & 0x0f,2)+ (",\t\t// ")+ s + " ...");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex((led[i].ar[1]>>4) & 0x0f,2)+ (i==25?"\t\t// ":",\t\t// ")+ s + " MSB");
                    }
                    mLEDCode->Lines->Add("};");

                    mLEDCode->Lines->Add(" ");
                    mLEDCode->Lines->Add("const unsigned char LED16Num[]={\t\t// Number Encode");   // Number
                    for (i=26;i<42;i++){
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex(led[i].ar[0] & 0x0f,2)+ (",\t\t// ")+ s.IntToHex(i-26,1) + " LSB");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex((led[i].ar[0]>>4) & 0x0f,2)+ (",\t\t// ")+ s.IntToHex(i-26,1) + " ...");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex(led[i].ar[1] & 0x0f,2)+ (",\t\t// ")+ s.IntToHex(i-26,1) + " ...");
                        mLEDCode->Lines->Add("\t0x" + s.IntToHex((led[i].ar[1]>>4) & 0x0f,2)+ (i==41?"\t\t// ":",\t\t// ")+ s.IntToHex(i-26,1) + " MSB");
                    }
                    mLEDCode->Lines->Add("};");
                  }
                }
            } else {
                if(rbASM->Checked ){
                    if(rbPre->Checked){
                        prefix = edHex->Text.Trim();
                    }else{
                        postfix = edHex->Text.Trim();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -