//--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::btnConnectClick(TObject *Sender) { // Cancel by user if (btnConnect->Caption == "Disconnect") { // Close connections cs7188E->Close(); csCOM1->Close(); csCOM2->Close(); btnConnect->Caption = "Connect"; btnExit->Enabled = True; return; } // Close the last connection cs7188E->Close(); csCOM1->Close(); csCOM2->Close(); // Setting Host IP cs7188E->Address = eHostIP->Text; csCOM1->Address = eHostIP->Text; csCOM2->Address = eHostIP->Text; // Setting Host Port Number to connect cs7188E->Port = 10000; csCOM1->Port = 10001; csCOM2->Port = 10002; // Open Connections cs7188E->Open(); csCOM1->Open(); csCOM2->Open(); } //--------------------------------------------------------------------------- // End of this Program void __fastcall TForm1::btnExitClick(TObject *Sender) { // Close Connections cs7188E->Close(); csCOM1->Close(); csCOM2->Close(); Close(); } //--------------------------------------------------------------------------- // Connected to the Host void __fastcall TForm1::cs7188EConnect(TObject *Sender, TCustomWinSocket *Socket) { btnConnect->Caption = "Disconnect"; btnExit->Enabled = False; cs7188E->Tag = 0; //No jobs Application->ProcessMessages(); tmInitialize->Enabled = True; } //--------------------------------------------------------------------------- // Disconnected from the Host void __fastcall TForm1::cs7188EDisconnect(TObject *Sender, TCustomWinSocket *Socket) { btnConnect->Caption = "Connect"; btnExit->Enabled = True; } //--------------------------------------------------------------------------- // Timeout occurs, clear the jobs void __fastcall TForm1::tm7188ETimer(TObject *Sender) { tm7188E->Enabled = False; cs7188E->Tag = 0; // Clear the jobs } //--------------------------------------------------------------------------- //sub-routinue for getting the server's information void __fastcall TForm1::GetServerInformation(void) { // Waiting for the end of previous job while (cs7188E->Tag != 0) Application->ProcessMessages(); // Get Version cs7188E->Tag = 1; cs7188E->Socket->SendText("01"); tm7188E->Enabled = True; // Waiting for the end of previous job while (cs7188E->Tag != 0) Application->ProcessMessages(); // Get Server Name cs7188E->Tag = 10; cs7188E->Socket->SendText("10"); tm7188E->Enabled = True; } // Reading Data from Host void __fastcall TForm1::cs7188ERead(TObject *Sender, TCustomWinSocket *Socket) { AnsiString sData; tm7188E->Enabled = False; // Disable the timeout sData = Socket->ReceiveText(); switch (cs7188E->Tag) { case 1: // Get Firmware version eVer->Text = sData; break; case 10: // Get Server name eServerName->Text = sData; break; default: // Unkown/No Job ShowMessage("Unknow message: " + sData ); } if ( sData == "OK" ) ShowMessage( "Process OK!!" ); cs7188E->Tag = 0; Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { // Initialize the User-Interface gbCOM1->Enabled = False; gbCOM2->Enabled = False; } //--------------------------------------------------------------------------- // timeout occurs void __fastcall TForm1::tmCOM1Timer(TObject *Sender) { AnsiString sIdx; sIdx = IntToStr( ((TTimer*)(Sender))->Tag ); ((TTimer*)FindComponent("tmCOM"+sIdx))->Enabled = False; ((TClientSocket*)FindComponent("csCOM"+sIdx))->Tag = 0; // Clear the jobs } //--------------------------------------------------------------------------- // Send Data to COM port void __fastcall TForm1::btnSendCOM1Click(TObject *Sender) { AnsiString sData, sIdx; TClientSocket* pSocket; sIdx = IntToStr( ((TButton*)Sender)->Tag ); pSocket=(TClientSocket*)FindComponent("csCOM"+sIdx); // Waiting for the end of previous job while (pSocket->Tag != 0) Application->ProcessMessages(); // Clear the result string ((TEdit*)FindComponent("eReceCOM"+sIdx))->Text = ""; sData = ((TEdit*)FindComponent("eSendCOM"+sIdx))->Text; // Add CR if (((TCheckBox*)FindComponent("cbCR"+sIdx))->Checked) sData = sData + (Char)0x0D; // Add LF if (((TCheckBox*)FindComponent("cbLF"+sIdx))->Checked) sData = sData + (Char)0x0A; // Send Data pSocket->Tag = StrToInt(sIdx); pSocket->Socket->SendText( sData ); ((TTimer*)FindComponent("tmCOM"+sIdx))->Enabled = True; } //--------------------------------------------------------------------------- // Connected to the Host void __fastcall TForm1::csCOM1Connect(TObject *Sender, TCustomWinSocket *Socket) { btnConnect->Caption = "Disconnect"; btnExit->Enabled = False; if ( Socket->SocketHandle == csCOM1->Socket->SocketHandle ) { gbCOM1->Enabled = True; csCOM1->Tag = 0; //No jobs } else { gbCOM2->Enabled = True; csCOM2->Tag = 0; //No jobs } } //--------------------------------------------------------------------------- // Disconnect from the Host void __fastcall TForm1::csCOM1Disconnect(TObject *Sender, TCustomWinSocket *Socket) { AnsiString sIdx; sIdx = IntToStr( Socket->RemotePort - 10000 ); ((TGroupBox*)FindComponent("gbCOM"+sIdx))->Enabled = False; } //--------------------------------------------------------------------------- // Reading data from COM port void __fastcall TForm1::csCOM1Read(TObject *Sender, TCustomWinSocket *Socket) { AnsiString sData, sIdx; TEdit* pEdit; sIdx = IntToStr( Socket->RemotePort - 10000 ); sData = Socket->ReceiveText(); ((TTimer*)FindComponent("tmCOM"+sIdx))->Enabled = False; pEdit = (TEdit*)FindComponent("eReceCOM"+sIdx); pEdit->Text = pEdit->Text + sData; ((TClientSocket*)FindComponent("csCOM"+sIdx))->Tag = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::tmInitializeTimer(TObject *Sender) { tmInitialize->Enabled = False; GetServerInformation(); } //--------------------------------------------------------------------------- void __fastcall TForm1::cs7188EError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { ErrorCode = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::csCOM1Error(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { ErrorCode = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::csCOM2Error(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { ErrorCode = 0; } //---------------------------------------------------------------------------