📄 basemain.cpp.bak
字号:
{
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 + -