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

📄 basemain.cpp.bak

📁 符合移动协议的见空系统,很有使用简直,希望多下载
💻 BAK
📖 第 1 页 / 共 5 页
字号:
    ADOTable1->Fields->Fields[1]->AsString = "";
    ADOTable1->Fields->Fields[2]->AsString = "";
    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }
  ADOTable1->First();*/
}
//---------------------------------------------------------------------------




void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  for(INT16U i = 0x0300; i<0x03FF; i++)
  {
    if(!gp_ComGrid[i].bUsed || gp_ComGrid[i].pShp->Brush->Color == clGreen)
      continue;
    if(gp_ComGrid[i].pShp->Brush->Color == clRed)
      gp_ComGrid[i].pShp->Brush->Color = clMaroon;
    else
      gp_ComGrid[i].pShp->Brush->Color = clRed;
    gp_ComGrid[i].pShp->Refresh();
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListFromSystem(void)
{
  TRegistry *pReg = new TRegistry();
  TStringList *names=NULL;
  AnsiString sPName;
  int iPortNo;
  try
  {
     try
     {
        names = new TStringList;
        pReg->RootKey=HKEY_LOCAL_MACHINE;
        pReg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM",false);
        pReg->GetValueNames(names);
        for(int i=0; i<names->Count; i++)
        {
          try
          {
             sPName = pReg->ReadString(names->Strings[i]);
             if(sPName.Pos("COM") == 0)
                continue;
             CmbPort->Items->Add(sPName);
          }
          catch(Exception&e)
          {
              //ignore   errors
          }
        }
        //_PortList->CustomSort(PortListSortCompare);
        //_bFromSysDrv   =   true;
     }
     catch(Exception&e)
     {
       //ignore   errors
     }
   }
   __finally
   {
     if(names) delete names;
     pReg->CloseKey();
     delete pReg;
   }
}







void __fastcall TForm1::ChangeSelectBox(TObject *Sender)
{
  INT16U uiTab, code;
  uiTab = ((TMaskEdit*)Sender)->Tag;
  code = (uiTab - 1000)/2;
  gp_ComGrid[code].pCb->Checked = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::NHelpClick(TObject *Sender)
{
  ShellExecute(Application->Handle,"open","data\\softhelp.chm",NULL,NULL,SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------



void TForm1::FrequencyTest()
{
}




//---------------------------------------------------------------------------






void __fastcall TForm1::MonthCalendar1Click(TObject *Sender)
{
  //MonthCalendar1->Visible = false;
}
//---------------------------------------------------------------------------




void __fastcall TForm1::RefreshPowerTable()
{
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add(m_sqlstr);
  ADOQuery1->Open();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn10Click(TObject *Sender)
{
  m_sqlstr="select * From tTran ORDER BY Oper_Date DESC";
  RefreshPowerTable();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BitBtn8Click(TObject *Sender)
{
	if(m_Port.m_hComm==NULL)
	{
    Form2->SetMsgText("请打开串行口!");
    Form2->ShowModal();
    return;
	}
	else
	{
    if(!gb_Direct)
    {
      Form2->SetMsgText("对不起,该功能仅用于直连模式!");
      Form2->ShowModal();
      return;
    }
    SetEvent(m_Port.m_hEvent);
    Form3->InitShow(DELAY_DIRECT/1000 * 9);
    gpmemfun = &TForm1::PtTblDownload;
    StartThread();
    Form3->ShowModal();
	}
}
//---------------------------------------------------------------------------

void TForm1::PtTblDownload()
{
  String InfoLine, InfoTitle;
  char buf[_1K];
  INT8U SinglePack[MAX_PACK_SIZE];
  INT16U PackLen;
  DWORD Event;
  INT8U wucmd[] = {0xE4, 0xE7, 0xEA, 0};
  INT8U rucmd[] = {0xE5, 0xE8, 0xEB, 0};

  strcpy(buf, "00");

  PackPos = 1;
  PackCount = 1;
  gSendPackCount = PackCount;
  PackLen = CollectTblData(SinglePack);

  miCmd = wucmd[cbxPowerType->ItemIndex];

  str_cpy(&gSPackData.depack_data[6], SinglePack, PackLen);
  gp_SPack->Build_485Pack(&gSPackData, PackLen, miCmd);

  InfoLine = INT8U_2_Str(gSPackData.depack_data, gSPackData.len_depack);
  InfoTitle.sprintf("正在发送数据包:%s", InfoLine);
  MergeObjectInfo(InfoTitle);
  Form3->st_Status->Caption = "正在发送1包数据....";
  ResetEvent(gOkEvent);
  ResetEvent(gErrEvent);
  EmptyGridData();
  gp_SPack->Send_Data();

  Timer2->Enabled = true;
  Form3->pr_Bar_Status->Position = 0;
  Event = WaitForMultipleObjects(2, m_hEventArray, FALSE, DELAY_DIRECT);
  Timer2->Enabled = false;
  if(Event == WAIT_TIMEOUT || Event == 1)
  {
    goto Exit;
  }
  gSendPackCount--;
  InfoLine.sprintf("成功接受数据包%s", INT8U_2_Str(gReceivePackData.depack_data, gReceivePackData.len_depack));
  MergeObjectInfo(InfoLine);
  DealReceivePack();
Exit:
  if(Form3->Visible)
    Form3->Close();
  if(gSendPackCount == 0)
    MsgText = "数据发送成功";
  else
    MsgText = "通讯超时:发送数据失败!";
  SendMessage(this->Handle, MESSAGE_SHOW, 0, 0);
}
//---------------------------------------------------------------------------

INT8U __fastcall TForm1::CollectTblData(INT8U *pStr, CWorkFile *wk)
{
  String Buf;
  INT8U  i, *pt = pStr, iCol;
  ADOTable1->DisableControls();
  ADOTable1->First();
  if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
    iCol = 2;      
  else
    iCol = 3;
  for(i = 0; i<ADOTable1->RecordCount; i++)
  {
    for(INT8U j = 1; j<iCol; j++)
    {
      Buf = ADOTable1->Fields->Fields[j]->AsString;
      if(Buf.IsEmpty() && (ADOTable1->Fields->Fields[1]->AsString).IsEmpty())
        goto Exit;
      if(!Is_WholeNumber(Buf.c_str(), true, false))
      {
        MsgText.sprintf("表数据中第%d行第%d列格式错误!", i+1, 2);
        if(Form3->Visible)
           Form3->Close();
        ADOTable1->EnableControls();
        SendMessage(this->Handle, MESSAGE_SHOW, 0, 0);
        return false;
      }
      if(Buf.IsEmpty())  Buf = "0";
      if(wk)
      {
        if(j == 1)
          fprintf(wk->fp, "%s", Buf);
        else
          fprintf(wk->fp, "\t%s", Buf);
      }
      *pt++ = StrToInt(Buf);
    }
    if(wk)
      fprintf(wk->fp, "\n");
    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }
Exit:
  ADOTable1->First();
  ADOTable1->EnableControls();
  if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
    return (i*3);
  else
    return  (i*2);
}
//---------------------------------------------------------------------------


void __fastcall TForm1::DealRevFunc()
{
  String szPt[20];
  INT8U i = 0;
  INT8U *ptPos, *ptPackEnd;
  char buf[10];

  ptPos = &gReceivePackData.depack_data[6];
  ptPackEnd = &gReceivePackData.depack_data[0] + gReceivePackData.len_depack - 3;
  while(ptPos < ptPackEnd)
  {
    //szPt[i++] = IntToStr(INT8Upt_2_INT16U(ptPos));
    //ptPos += 2;
    char ps = *ptPos;
    sprintf(buf, "%d", ps);
    szPt[i++] = buf;
    ptPos += 2;
  }
  gpADOQuery->SQL->Clear();
  gpADOQuery->SQL->Add(" Insert into tTran ");
  gpADOQuery->SQL->Add(" (Oper_Date, PowerDN,PowerUP, PowerTS0, PowerTS1, PowerTS2, PowerTS3, PowerTS4,PowerTS5,PowerTS6)");
  gpADOQuery->SQL->Add(" Values( '" + FormatDateTime("YYYY-MM-DD HH:mm:ss",Now()) +"', '" + szPt[0] + "','" + szPt[1] + "','" + szPt[2] + "','" + szPt[3] + "','" + szPt[4] + "','" + szPt[5] + "','" + szPt[6] + "','" + szPt[7] + "','" + szPt[8] + "')");
  gpADOQuery->ExecSQL();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N23Click(TObject *Sender)
{
  Sleep(1500);
  ADOQuery1->DisableControls();
  RefreshPowerTable();
  ADOQuery1->EnableControls();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::cbxPowerTypeChange(TObject *Sender)
{
  ADOTable1->Close();
  if(cbxPowerType->ItemIndex < MAX_POWER_TYPE)
  {
    ADOTable1->TableName = "ExtaP";
    DBGrid3->Columns->Items[1]->Visible = true;
    //DBGrid3->Columns->Items[1]->Title->Caption = "功率值(dBm)";
  }
  else
  {
    ADOTable1->TableName = "tTemp";
    DBGrid3->Columns->Items[1]->Visible = false;
  }
  ADOTable1->Open();
  ADOTable1->Active = true;
  ADOTable1->First();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ArrangeGridData(INT8U *pStr)
{
  INT8U uiLine = *pStr, *pt = pStr+1, iCol;
  String Buf;
  ADOTable1->DisableControls();
  ADOTable1->First();

  if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
    iCol = 1;
  else
    iCol = 2;
  for(INT8U i = 0; i<uiLine/iCol; i++)
  {
    ADOTable1->Edit();

    char tt = *pt, temp[10];
    sprintf(temp, "%d", tt);
    ADOTable1->Fields->Fields[1]->AsString = temp;
    if(cbxPowerType->ItemIndex < MAX_POWER_TYPE)
      ADOTable1->Fields->Fields[2]->AsString = IntToStr(*(pt+1));
    pt += iCol;
    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }
  ADOTable1->First();
  ADOTable1->EnableControls();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SettingTDValue(INT8U *pstr)
{
    INT8U iCount = *pstr++;
    INT8U *pt = pstr;
    for(INT8U i=0; i<iCount; i++,pt++)
    {
      char buf[10];
      if(gObjectValue[0x0201+i].bSingle)
      {
        gp_ComGrid[0x0201+i].pCbx->ItemIndex = *pt;
        gp_ComGrid[0x0201+i].pCb->Checked = true;
      }
      else
      {
        if(gObjectValue[0x0201+i].bSign == 1)
        {
          char tt = *pt;
          sprintf(buf, "%d", tt);
        }
        else
          sprintf(buf, "%d", *pt);
        gp_ComGrid[0x0201+i].pEd->Text = buf;
      }
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::DealReceivePack()
{
  INT16U iObjectId;
  INT8U PosCRC;
  INT8U *ptPosLen, uPackCmd;
  char buf[10];
  
	PosCRC = gReceivePackData.len_depack;
	PosCRC -= 3;
	gReceivePackData.depack_data[PosCRC++] = 0x00;
	gReceivePackData.depack_data[PosCRC] = 0x00;

  uPackCmd = gReceivePackData.depack_data[3];
	ptPosLen = &gReceivePackData.depack_data[5];

  if(uPackCmd == 0x11)
    SettingUnitValue(ptPosLen);
  else if(uPackCmd == 0x30)
  {
    SettingTDValue(ptPosLen);
  }
  else if(uPackCmd == 0xDB)
    SettingTimePower(ptPosLen);
  /*else if(uPackCmd == 0xDE)
  {
    sprintf(buf, "%d:%d", *(ptPosLen+1), 6 - *(ptPosLen+1));
    gp_ComGrid[miSelCmd].pEd->Text = buf;
  }
  else if(uPackCmd == 0xDF)
  {
    INT16U code = INT8Upt_2_INT16U(ptPosLen+1);
    INT16S scode = code;
    sprintf(buf, "%ld", scode);
    gp_ComGrid[0x26].pEd->Text = buf;
  }
  else if(uPackCmd == 0xF4)
  {
    gp_ComGrid[0x201].pCbx->ItemIndex = *(ptPosLen+1);
    gp_ComGrid[0x202].pCbx->ItemIndex = *(ptPosLen+2);
  }
  else if(uPackCmd == 0xF5)
  {
    if(*ptPosLen>0)
    {
      gp_ComGrid[0x20F].pEd->Text = IntToStr(*(ptPosLen+1));
      gp_ComGrid[0x210].pEd->Text = IntToStr(*(ptPosLen+2));
    }
  }
  else if(uPackCmd == 0xF6)
  {
    if(*ptPosLen>0)
    {
      char tt = *(ptPosLen+1);
      sprintf(buf, "%d", tt);
      gp_ComGrid[0x211].pEd->Text = tt;

      tt = *(ptPosLen + 2);
      sprintf(buf, "%d", tt);
      gp_ComGrid[0x212].pEd->Text = tt;
    }
  }*/
  else if((uPackCmd >= 0x22 && uPackCmd <= 0x27) ||(uPackCmd >= 0xD0 && uPackCmd <= 0xD9))
  {
    if(gObjectValue[miSelCmd].bSingle == 1)
      gp_ComGrid[miSelCmd].pCbx->ItemIndex = *(ptPosLen + 1);
    else if(gObjectValue[miSelCmd].bSign == 1)
    {
       char tt = *(ptPosLen+1);
       sprintf(buf, "%d", tt);
       gp_ComGrid[miSelCmd].pEd->Text = buf;
    }
    else if(gObjectValue[miSelCmd].bZoom == 1)
    {
      sprintf(buf, "%.1f", *(ptPosLen+1)/10.0);
      gp_ComGrid[miSelCmd].pEd->Text = buf;
    }
    else
    {
      sprintf(buf, "%d", *(ptPosLen+1));
      gp_ComGrid[miSelCmd].pEd->Text = buf;
    }
  }
  else
  {
    //EmptyGridData();
    ArrangeGridData(ptPosLen);
  }
}

//---------------------------------------------------------------------------

void __fastcall TForm1::SettingUnitValue(INT8U *pStr)
{
  INT8U iCount = *pStr++, *pt = pStr, uTemp;
  INT8U i = 0;
  uTemp = *pt++;
  gp_ComGrid[0x01].pCbx->ItemIndex = uTemp>>7;
  gp_ComGrid[0x02].pCbx->ItemIndex = (uTemp&0x40)>>6;
  gp_ComGrid[0x03].pCbx->ItemIndex = (uTemp&0x20)>>5;
  gp_ComGrid[0x04].pCbx->ItemIndex = (uTemp&0x10)>>4;
  gp_ComGrid[0x05].pCbx->ItemIndex = (uTemp&0x08)>>3;
  gp_ComGrid[0x06].pCbx->ItemIndex = (uTemp&0x04)>>2;

  uTemp = *pt++;
  gp_ComGrid[0x09].pCbx->ItemIndex = uTemp>>7;
  gp_ComGrid[0x0A].pCbx->ItemIndex = (uTemp&0x40)>>6;

  gp_ComGrid[0x01].pCb->Checked = true;
  gp_ComGrid[0x02].pCb->Checked = true;
  gp_ComGrid[0x03].pCb->Checked = true;
  gp_ComGrid[0x04].pCb->Checked = true;
  gp_ComGrid[0x05].pCb->Checked = true;
  gp_ComGrid[0x06].pCb->Checked = true;
  gp_ComGrid[0x09].pCb

⌨️ 快捷键说明

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