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

📄 basemain.cpp.bak

📁 符合移动协议的见空系统,很有使用简直,希望多下载
💻 BAK
📖 第 1 页 / 共 5 页
字号:
        {
          ShowErrorMsg(Sender, "输入错误: 请严格按照\"192.168.000.012\"格式输入IP地址");
          goto Error1;
        }
      }
      else
      {
        ShowErrorMsg(Sender, "输入错误: 请严格按照\"192.168.000.012\"格式输入IP地址");
        goto Error1;
      }
    }
  }
  else if(code == 0x0150)
  {
    if(*(p1+10) != 0x20 || strlen(p1)!=19)
    {
	    ShowErrorMsg(Sender, "输入错误: 请严格按照\"2006-02-21 01:10:55\"格式输入日期值");
      goto Error1;
    }
    while(*p1)
    {
      if(*p1>='0' && *p1<='9')
        p1++;
      else if(*p1=='-' || *p1==0x20 || *p1 == ':')
        p1++;
      else
      {
  	    ShowErrorMsg(Sender, "输入错误: 请严格按照\"2006-02-21 01:10:55\"格式输入日期值");
        goto Error1;
      }
    }
    try
    {
     	StrToDateTime(dtText);
    }
    catch(...)
    {
	    ShowErrorMsg(Sender, "输入错误: 请严格按照\"2006-02-21 01:10:55\"格式输入日期值");
      goto Error1;
    }
  }
  else if(0x04FC<=code && code<=0x04FF)
  {
    if(*(p1+2) != ':' || *(p1+5)!=':' || *(p1+8)!='-' || *(p1+11)!=':' || *(p1+14)!=':' || strlen(p1)!=17)
    {
	    ShowErrorMsg(Sender, "输入错误: 请严格按照\"05:06:00-07:06:04\"格式输入开关机时间值");
      goto Error1;
    }
    while(*p1)
    {
      if(*p1>='0' && *p1<='9')
        p1++;
      else if(*p1=='-' || *p1 == ':')
        p1++;
      else
      {
  	    ShowErrorMsg(Sender, "输入错误: 请严格按照\"05:06:00-07:06:04\"格式输入开关机时间值");
        goto Error1;
      }
    }
  }
  else if(gObjectValue[code].Object_Length == 2 && gObjectValue[code].bSign == 1)
  {
    if(!Is_WholeNumber(p1, 1, 0))
    {
      ShowErrorMsg(Sender, "输入错误: 请输入-50-50之间的数值");
      goto Error1;
    }
    if(*p1 == '-')
      code = (INT8U)strtol(p1+1, NULL, 10);
    else
      code = (INT8U)strtol(p1, NULL, 10);
    if(code>50)
    {
      ShowErrorMsg(Sender, "输入错误: 请输入-50-50之间的数值");
      goto Error1;
    }
  }
  else if(gObjectValue[code].Object_Length == 2 && gObjectValue[code].bSign == 0)
  {
    if(!Is_WholeNumber(p1, 0, 0))
    {
      ShowErrorMsg(Sender, "输入错误: 请输入0-65535之间的数值");
      goto Error1;
    }
    code = strtol(p1, NULL, 10);
    if(code<0 || code>65535)
    {
      ShowErrorMsg(Sender, "输入错误: 请输入0-65535之间的数值");
      goto Error1;
    }
  }
  else if(gObjectValue[code].bZoom)
  {
    if(!Is_WholeNumber(p1, 0, 1))
    {
      ShowErrorMsg(Sender, "输入错误: 请输入0-25.5之间的数值");
      goto Error1;
    }
    double x = strtod(p1, NULL);
    code = x*10;
    if(code<0 || code>255)
    {
      ShowErrorMsg(Sender, "输入错误: 请输入0-25.5之间的数值");
      goto Error1;
    }
  }
  else if(gObjectValue[code].Object_Length == 1 && gObjectValue[code].bSign==0)
  {
    if(code == 0x0102)
    {
      if(!Is_HexNumber(p1))
      {
        ShowErrorMsg(Sender, "输入错误: 请输入0-FF之间的十六进制数值");
        goto Error1;
      }
    }
    if(!Is_WholeNumber(p1, 0, 0))
    {
      ShowErrorMsg(Sender, "输入错误: 请输入0-255之间的数值");
      goto Error1;
    }
    code = strtol(p1, NULL, 10);
    if(code<0 || code>255)
    {
      ShowErrorMsg(Sender, "输入错误: 请输入0-255之间的数值");
      goto Error1;
    }
  }
  else if(gObjectValue[code].Object_Length == 1 && gObjectValue[code].bSign==1)
  {
    if(!Is_WholeNumber(p1, 1, 0))
    {
      ShowErrorMsg(Sender, "输入错误: 请输入-128-127之间的数值");
      goto Error1;
    }
    if(*p1 == '-')
      code = (INT8U)strtol(p1+1, NULL, 10);
    else
      code = (INT8U)strtol(p1, NULL, 10);
    if(code>=128)
    {
      if(*p1=='-' && code == 128)
        goto Error1;
      ShowErrorMsg(Sender, "输入错误: 请输入-128-127之间的数值");
      goto Error1;
    }
  }
  else if(gObjectValue[code].Object_Length == 4)
  {
    if(code == 0x0101)
    {
      if(!Is_HexNumber(p1))
      {
        ShowErrorMsg(Sender, "输入错误: 请输入0-FFFFFFFF之间的十六进制数值");
        goto Error1;
      }
    }
  }
Error1:
}

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
  gpIniFile->WriteString("配置表", "模块地址", txtAddr->Text);
  gpIniFile->WriteInteger("配置表", "波特率", CmbBand->ItemIndex);
  delete mpcxVCL;
  delete mptvVCL;
  delete gpIniFile;
  EmptyGridData();
}
//---------------------------------------------------------------------------








void __fastcall TForm1::ShowMessage(TMessage &Message)
{
  Form2->SetMsgText(MsgText);
  Form2->ShowModal();
  if(mhSubThread)
  {
    TerminateThread(mhSubThread,-1);
    mhSubThread = NULL;
  }
  if(!this->Visible)
    this->Show();
  if(Form3->Visible)
    Form3->Close();
  if(Message.WParam == 1 && m_bWays)
  {
    RefreshGrid();
  }
  Timer1->Enabled = true;
  Timer2->Enabled = false;
  SetEvent(m_Port.m_hEvent);
}

void TForm1::InitDevice()
{
}




void __fastcall TForm1::NAboutClick(TObject *Sender)
{
  Form4->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
  if(Form3->Visible)
    Form3->pr_Bar_Status->StepIt();
  if(Form3->pr_Bar_Status->Position == Form3->pr_Bar_Status->Max)
    Timer2->Enabled = false;
}
//---------------------------------------------------------------------------



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

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

  PackPos = 1;
  PackCount = 1;
  gSendPackCount = PackCount;
  SinglePack[0] = 0x0;

  miCmd = rucmd[cbxPowerType->ItemIndex];
  str_cpy(&gSPackData.depack_data[6], SinglePack, 0);
  gp_SPack->Build_485Pack(&gSPackData, 0, 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);

  gp_SPack->Send_Data();
  EmptyGridData();
  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);
}
//---------------------------------------------------------------------------


DWORD WINAPI StartSubThread(LPVOID pParam)
{
  (Form1->*gpmemfun)();
  return 0;
}

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

int compareNum( const void *arg1, const void *arg2 )
{
  if(*(float*)arg1 > *(float*)arg2)
    return 1;
  else if(*(float*)arg1 < *(float*)arg2)
    return -1;
  else
    return 0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::EmptyGridData()
{
  ADOTable1->DisableControls();
  ADOTable1->First();
  for(INT8U i = 0; i<ADOTable1->RecordCount; i++)
  {
    ADOTable1->Edit();
    ADOTable1->Fields->Fields[1]->AsString = "";
    ADOTable1->Fields->Fields[2]->AsString = "";
    if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
      ADOTable1->Fields->Fields[3]->AsString = "";
    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }
  ADOTable1->First();
  ADOTable1->Refresh();
  ADOTable1->EnableControls();
}

void __fastcall TForm1::EnabledControl(TWinControl *pControl, bool flag)
{
  for(INT8U i=0; i<pControl->ControlCount; i++)
  {
    TControl *pChild = pControl->Controls[i];
    pChild->Enabled = flag;
  }
  pControl->Enabled = flag;
}


void __fastcall TForm1::PopupMenu1Popup(TObject *Sender)
{
  String dbm, volt;
  dbm = ADOTable1->Fields->Fields[1]->AsString;
  volt = ADOTable1->Fields->Fields[2]->AsString;
  if(dbm.IsEmpty() || volt.IsEmpty())
  {
    N17->Enabled = false;
    N18->Enabled = false;
  }
  else
  {
    N17->Enabled = true;
    N18->Enabled = true;
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N18Click(TObject *Sender)
{
  ADOTable1->Edit();
  ADOTable1->Fields->Fields[1]->AsString = "";
  ADOTable1->Fields->Fields[2]->AsString = "";
  if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
    ADOTable1->Fields->Fields[3]->AsString = "";
  ReDispGridData(ADOTable1->RecNo - 1);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N19Click(TObject *Sender)
{
  EmptyGridData();  
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ReDispGridData(INT8U recno)
{
  String szPt[50], szVolt[50], szVolt2[50];
  String Buf, Temp, Temp2;
  INT8U iNo = 0;
  ADOTable1->First();
  for(INT8U i = 0; i<ADOTable1->RecordCount; i++)
  {
    Buf = ADOTable1->Fields->Fields[1]->AsString;
    Temp = ADOTable1->Fields->Fields[2]->AsString;
    Temp2 = "";
    if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
      Temp2 = ADOTable1->Fields->Fields[3]->AsString;

    if(Buf.IsEmpty() || Temp.IsEmpty())
    {
      if(i==recno)
      {
        szPt[iNo] = "";
        szVolt[iNo] = "";
        szVolt2[iNo++] = "";
      }
      ADOTable1->Next();
      continue;
    }
    szPt[iNo] = Buf;
    szVolt[iNo] = Temp;
    szVolt2[iNo++] = Temp2;

    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }

  EmptyGridData();
  ADOTable1->DisableControls();
  ADOTable1->First();
  for(INT8U i=0; i<iNo; i++)
  {
    ADOTable1->Edit();
    ADOTable1->Fields->Fields[1]->AsString = szPt[i];
    ADOTable1->Fields->Fields[2]->AsString = szVolt[i];
    if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
      ADOTable1->Fields->Fields[3]->AsString = szVolt2[i];
    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }
  ADOTable1->First();
  ADOTable1->EnableControls();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N17Click(TObject *Sender)
{
  String szPt[50], szVolt[50], szVolt2[50];
  String Buf, Temp, Temp2;
  INT8U iNo = 0, recno = ADOTable1->RecNo - 1;
  ADOTable1->First();
  for(INT8U i = 0; i<ADOTable1->RecordCount; i++)
  {
    Buf = ADOTable1->Fields->Fields[1]->AsString;
    Temp = ADOTable1->Fields->Fields[2]->AsString;
    Temp2 = "";
    if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
      Temp2 = ADOTable1->Fields->Fields[3]->AsString;
      
    if(Buf.IsEmpty() || Temp.IsEmpty())
    {
      ADOTable1->Next();
      continue;
    }
    if(i==recno)
    {
      szPt[iNo] = "";
      szVolt[iNo] = "";
      szVolt2[iNo++] = "";
    }
    szPt[iNo] = Buf;
    szVolt[iNo] = Temp;
    szVolt2[iNo++] = Temp2;
    
    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }
  EmptyGridData();
  ADOTable1->DisableControls();
  ADOTable1->First();
  for(INT8U i=0; i<iNo; i++)
  {
    ADOTable1->Edit();
    ADOTable1->Fields->Fields[1]->AsString = szPt[i];
    ADOTable1->Fields->Fields[2]->AsString = szVolt[i];
    if(cbxPowerType->ItemIndex == MAX_POWER_TYPE)
      ADOTable1->Fields->Fields[3]->AsString = szVolt2[i];
    if(ADOTable1->Eof)
      break;
    ADOTable1->Next();
  }
  ADOTable1->First();
  ADOTable1->EnableControls();
  /*for(INT8U i = iNo; i<ADOTable1->RecordCount; i++)
  {
    ADOTable1->Edit();

⌨️ 快捷键说明

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