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