📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <inifiles.hpp>
#include <stdio.h>
#pragma hdrstop
#include <string.h>
#include <shellapi.h>
#include "Main.h"
#include "Setup.h"
#include "Download.h"
#include "Upload.h"
#include "Dialer.h"
#include "AnswerCall.h"
#include "About.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain *frmMain;
COM_CONFIG UploadComConfig,DownloadComConfig;
TComport *Com;
extern bool CommandUpload;
extern bool CommandDownload;
char DownloadPath[128];
char UploadFileNames[30][128];
char UploadShortFileNames[30][128];
int UploadFileCount;
extern char MachineName[128];
//---------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
UploadComConfig.Comport = 1;
UploadComConfig.Baudrate = 38400;
UploadComConfig.UseIrDA = True;
UploadComConfig.UseModem = False;
UploadComConfig.ModemConnectMode = 1;
UploadComConfig.ModemAnswerMode = 0;
DownloadComConfig.Comport = 1;
DownloadComConfig.Baudrate = 38400;
DownloadComConfig.UseIrDA = True;
DownloadComConfig.UseModem = False;
DownloadComConfig.ModemConnectMode = 1;
DownloadComConfig.ModemAnswerMode = 0;
Com = new TComport;
}
//---------------------------------------------------------------------------
void TfrmMain::AddFiles(void)
{
int i;
if( ListBox1->Items->Count>=14 )
{
Application->MessageBox("一次最多只能上载14个文件!\n\n","",MB_OK);
return;
};
if( OpenDialog1->Execute()==False )return;
for( i=0;i<OpenDialog1->Files->Count;i++ )
{
if( ListBox1->Items->Count<14 )
{
ListBox1->Items->Add( OpenDialog1->Files->Strings[i] );
};
};
}
void DisplayFiles(void)
{
}
void __fastcall TfrmMain::DirectoryListBox1Change(TObject *Sender)
{
DisplayFiles();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::DirectoryListBox1DblClick(TObject *Sender)
{
DisplayFiles();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::DirectoryListBox1Click(TObject *Sender)
{
DisplayFiles();
}
//---------------------------------------------------------------------------
void TfrmMain::StartDownload(void)
{
redo:
Com->Port = DownloadComConfig.Comport;
Com->BaudRate = DownloadComConfig.Baudrate;
Com->UseIrDA = DownloadComConfig.UseIrDA;
Com->IrDAType = DownloadComConfig.IrDAType;
if( Com->Open()==false )
{
Application->MessageBox("打开串口错误!","错误",MB_ICONERROR|MB_OK);
goto end;
//return;
};
if( CheckBox3->Checked )
{
frmMain->WindowState = wsMinimized;
frmMain->Update();
};
if( DownloadComConfig.UseModem==True )
{
if( DownloadComConfig.ModemConnectMode==0 )
{
frmDialer->Com = Com;
frmDialer->ShowModal();
if( frmDialer->ErrorNo!=0 )
{
Sleep(200);
Com->Close();
goto end;
//return;
};
};
if( DownloadComConfig.ModemConnectMode==1 )
{
frmAnswer->Com = Com;
frmAnswer->CheckBox1->Checked = (DownloadComConfig.ModemAnswerMode==0);
frmAnswer->ShowModal();
if( frmAnswer->ErrorNo!=0 )
{
Sleep(200);
Com->Close();
goto end;
//return;
};
};
};
strcpy(DownloadPath,Label2->Caption.c_str());
frmDownload->ShowModal();
Sleep(200);
Com->Close();
DirectoryListBox1->Update();
FileListBox1->Update();
end:
frmMain->WindowState = wsNormal;
frmMain->Update();
if( CheckBox3->Checked )
{
goto redo;
};
}
void TfrmMain::StartUpload(void)
{
int i;
redo:
strcpy( MachineName,frmSetup->Edit1->Text.c_str() );
Com->Port = UploadComConfig.Comport;
Com->BaudRate = UploadComConfig.Baudrate;
Com->UseIrDA = UploadComConfig.UseIrDA;
Com->IrDAType = UploadComConfig.IrDAType;
if( Com->Open()==False )
{
Application->MessageBox("打开串口错误!","错误",MB_ICONERROR|MB_OK);
goto end;
//return;
};
if( CheckBoxAlwaysSend->Checked )
{
frmMain->WindowState = wsMinimized;
frmMain->Update();
};
if( UploadComConfig.UseModem==True )
{
if( UploadComConfig.ModemConnectMode==0 )
{
frmDialer->Com = Com;
frmDialer->ShowModal();
if( frmDialer->ErrorNo!=0 )
{
Sleep(200);
Com->Close();
goto end;
//return;
};
};
if( UploadComConfig.ModemConnectMode==1 )
{
frmAnswer->Com = Com;
frmAnswer->CheckBox1->Checked = (UploadComConfig.ModemAnswerMode==0);
frmAnswer->ShowModal();
if( frmAnswer->ErrorNo!=0 )
{
Sleep(200);
Com->Close();
goto end;
};
};
};
for( i=0;i<ListBox1->Items->Count;i++ )
{
strcpy( UploadFileNames[i],ListBox1->Items->Strings[i].c_str() );
};
UploadFileCount = i;
frmUpload->ShowModal();
Sleep(200);
Com->Close();
end:
frmMain->WindowState = wsNormal;
frmMain->Update();
if( CheckBoxAlwaysSend->Checked )
{
goto redo;
};
}
void __fastcall TfrmMain::Image1Click(TObject *Sender)
{
frmAbout->ShowModal();
}
//---------------------------------------------------------------------------
void SaveSettings(void)
{
TIniFile *Ini;
String FilePath;
char FileName[256];
String UploadFileName;
char buf[32];
int i;
FilePath=ExtractFilePath(Application->ExeName);
strcpy( FileName,FilePath.c_str() );
if( FileName[strlen(FileName)-1]!='\\' )strcat( FileName,"\\" );
strcat( FileName,"SFT.ini" );
Ini=new TIniFile(FileName);
try
{
Ini->WriteInteger("Upload Setting","Comport",UploadComConfig.Comport);
Ini->WriteInteger("Upload Setting","Baudrate",UploadComConfig.Baudrate);
Ini->WriteBool("Upload Setting","UseIrDA",UploadComConfig.UseIrDA);
Ini->WriteBool("Upload Setting","IrDAType",UploadComConfig.IrDAType);
Ini->WriteBool("Upload Setting","UseModem",UploadComConfig.UseModem);
Ini->WriteInteger("Upload Setting","ModemConnectMode",UploadComConfig.ModemConnectMode);
Ini->WriteInteger("Upload Setting","ModemAnswerMode",UploadComConfig.ModemAnswerMode);
Ini->WriteString("Upload Setting","MachineName",frmSetup->Edit1->Text);
Ini->WriteInteger("Download Setting","Comport",DownloadComConfig.Comport);
Ini->WriteInteger("Download Setting","Baudrate",DownloadComConfig.Baudrate);
Ini->WriteBool("Download Setting","UseIrDA",DownloadComConfig.UseIrDA);
Ini->WriteBool("Download Setting","IrDAType",DownloadComConfig.IrDAType);
Ini->WriteBool("Download Setting","UseModem",DownloadComConfig.UseModem);
Ini->WriteInteger("Download Setting","ModemConnectMode",DownloadComConfig.ModemConnectMode);
Ini->WriteInteger("Download Setting","ModemAnswerMode",DownloadComConfig.ModemAnswerMode);
Ini->WriteString("Download Setting","DownloadTo",frmMain->Label2->Caption);
Ini->WriteString("PhoneNumber","Tel",frmDialer->EditPhoneNumber->Text);
Ini->WriteBool("Download Setting","AddMachineIDAndTimeToFileName",frmMain->CheckBox1->Checked );
for( i=0;i<14;i++ )
{
sprintf(buf,"FILE%d",i+1);
UploadFileName="";
if( i<frmMain->ListBox1->Items->Count )UploadFileName=frmMain->ListBox1->Items->Strings[i];
Ini->WriteString("Upload Files",buf,UploadFileName);
};
}
catch(...)
{
};
delete Ini;
}
void LoadSettings(void)
{
TIniFile *Ini;
String FilePath;
char FileName[256];
String UploadFileName;
char buf[256];
int i;
FilePath=ExtractFilePath(Application->ExeName);
strcpy( FileName,FilePath.c_str() );
if( FileName[strlen(FileName)-1]!='\\' )strcat( FileName,"\\" );
strcat( FileName,"SFT.ini" );
Ini=new TIniFile(FileName);
try
{
UploadComConfig.Comport=Ini->ReadInteger("Upload Setting","Comport",1);
UploadComConfig.UseIrDA=Ini->ReadBool("Upload Setting","UseIrDA",False);
UploadComConfig.IrDAType=Ini->ReadInteger("Upload Setting","IrDAType",0);
UploadComConfig.Baudrate=Ini->ReadInteger("Upload Setting","Baudrate",19200);
UploadComConfig.UseModem=Ini->ReadBool("Upload Setting","UseModem",False);
UploadComConfig.ModemConnectMode=Ini->ReadInteger("Upload Setting","ModemConnectMode",0);
UploadComConfig.ModemAnswerMode=Ini->ReadInteger("Upload Setting","ModemAnswerMode",0);
frmSetup->Edit1->Text=Ini->ReadString("Upload Setting","MachineName","");
DownloadComConfig.Comport=Ini->ReadInteger("Download Setting","Comport",1);
DownloadComConfig.Baudrate=Ini->ReadInteger("Download Setting","Baudrate",19200);
DownloadComConfig.UseIrDA=Ini->ReadBool("Download Setting","UseIrDA",False);
DownloadComConfig.IrDAType=Ini->ReadBool("Download Setting","IrDAType",0);
DownloadComConfig.UseModem=Ini->ReadBool("Download Setting","UseModem",False);
DownloadComConfig.ModemConnectMode=Ini->ReadInteger("Download Setting","ModemConnectMode",0);
DownloadComConfig.ModemAnswerMode=Ini->ReadInteger("Download Setting","ModemAnswerMode",0);
frmMain->CheckBox1->Checked = Ini->ReadBool("Download Setting","AddMachineIDAndTimeToFileName",False );
FilePath=Ini->ReadString("Download Setting","DownloadTo","c:\\");
strcpy( buf,FilePath.c_str() );
frmMain->DriveComboBox1->Drive=buf[0];
frmMain->DirectoryListBox1->Directory = FilePath;
frmDialer->EditPhoneNumber->Text=Ini->ReadString("PhoneNumber","Tel","");
frmMain->ListBox1->Clear();
for( i=0;i<14;i++ )
{
sprintf(buf,"FILE%d",i+1);
UploadFileName=Ini->ReadString("Upload Files",buf,"");
if( strlen(UploadFileName.c_str())>0 )frmMain->ListBox1->Items->Add(UploadFileName);
};
}
catch(...)
{
};
delete Ini;
}
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
SaveSettings();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormShow(TObject *Sender)
{
if(CommandUpload==True)
{
ShowWindow(Application->Handle,SW_HIDE);
StartUpload();
frmMain->WindowState = wsMinimized;
Close();
};
if(CommandDownload==True)
{
ShowWindow(Application->Handle,SW_HIDE);
StartDownload();
frmMain->WindowState = wsMinimized;
Close();
};
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::ListBox1DblClick(TObject *Sender)
{
char FileName[256];
if( ListBox1->ItemIndex<0 )return;
strcpy( FileName,ListBox1->Items->Strings[ListBox1->ItemIndex].c_str() );
ShellExecute(Application->Handle,"Open",FileName,"","",SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FileListBox1DblClick(TObject *Sender)
{
char FileName[256];
if( FileListBox1->ItemIndex<0 )return;
strcpy( FileName,FileListBox1->Items->Strings[FileListBox1->ItemIndex].c_str() );
ShellExecute(Application->Handle,"Open",FileName,"","",SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::ListBox1KeyPress(TObject *Sender, char &Key)
{
if( Key==13 )ListBox1DblClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FileListBox1KeyPress(TObject *Sender, char &Key)
{
if( Key==13 )FileListBox1DblClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::N2Click(TObject *Sender)
{
if( FileListBox1->ItemIndex >=0 )
{
if( Application->MessageBox("确定删除文件吗?","警告",MB_ICONQUESTION+MB_YESNO)==mrNo )return;
DeleteFile( FileListBox1->FileName );
FileListBox1->Update();
};
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::N1Click(TObject *Sender)
{
if( FileListBox1->ItemIndex >=0 )
{
String file;
String Path,Name;
Path = ExtractFilePath(FileListBox1->FileName);
Name = ExtractFileName(FileListBox1->FileName);
file=InputBox("文件改名","New File Name:",Name);
if( Path.c_str()[strlen(Path.c_str())-1]!='\\' )Path = Path + "\\";
file = Path + file;
RenameFile(FileListBox1->FileName,file);
FileListBox1->Update();
};
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button1Click(TObject *Sender)
{
StartUpload();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button2Click(TObject *Sender)
{
AddFiles();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button3Click(TObject *Sender)
{
ListBox1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button4Click(TObject *Sender)
{
memcpy(&frmSetup->ComConfig,&UploadComConfig,sizeof(COM_CONFIG));
frmSetup->Caption="发送设置";
frmSetup->Label3->Visible=true;
frmSetup->Edit1->Visible=true;
frmSetup->ShowModal();
memcpy(&UploadComConfig,&frmSetup->ComConfig,sizeof(COM_CONFIG));
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button5Click(TObject *Sender)
{
StartDownload();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain::Button6Click(TObject *Sender)
{
memcpy(&frmSetup->ComConfig,&DownloadComConfig,sizeof(COM_CONFIG));
frmSetup->Caption="接收设置";
frmSetup->Label3->Visible=false;
frmSetup->Edit1->Visible=false;
frmSetup->ShowModal();
memcpy(&DownloadComConfig,&frmSetup->ComConfig,sizeof(COM_CONFIG));
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -