/***************************************************************************/ //--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "frmMain.h" #define BACK_INDEX 7 //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TFormMain *FormMain; //--------------------------------------------------------------------------- __fastcall TFormMain::TFormMain(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TFormMain::FormCreate(TObject *Sender) { String app_name, app_path; // // int left1, top1; RECT rect1; left1 = Left + DisplayPanel->Left + 60; top1 = Top + DisplayPanel->Top + 70; SetCursorPos(left1, top1); rect1.left = Left + DisplayPanel->Left; rect1.top = Top + DisplayPanel->Top; rect1.right = Left + DisplayPanel->Left + DisplayPanel->Width; rect1.bottom = Top + DisplayPanel->Top + DisplayPanel->Height; ClipCursor(&rect1); app_name = Application->ExeName; mAppPath = ExtractFilePath(app_name); BackCloseImage->Picture->LoadFromFile(mAppPath + "./Img01/backclose.bmp"); BackOpenImage->Picture->LoadFromFile(mAppPath + "./Img01/backopen.bmp"); DisplayImage->Picture->LoadFromFile(mAppPath + "./Img/1.bmp"); MenuUpImage->Picture->LoadFromFile(mAppPath + "./Img/s1.bmp"); FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); MenuBackImage->Picture->LoadFromFile(mAppPath + "./Img/menuback.bmp"); Width = BackOpenImage->Width; Height = BackOpenImage->Height; mMenuIndex = 1; mDisplayIndex = 1; mMenuUpIndex = 1; mStartDevice = false; DisplayPanel->Visible = false; MenuPanel->Visible = false; FinalPanel->Visible = false; BackOpenPanel->Visible = false; MenuUpPanel->Visible = false; sMenuPanel->Visible = false; TxBuff.Data = NULL; cbCOM->ItemIndex = 0; EditLength->Text = EditData->Text.Length(); RS232C = new TRS232C(); RS232C->SetHWND(Handle); btnSetup->Click(); } //--------------------------------------------------------------------------- void __fastcall TFormMain::BackCloseImageClick(TObject *Sender) { int left1, top1; RECT rect1; if (mStartDevice) { DisplayPanel->Visible = true; BackOpenPanel->Visible = true; // left1 = Left + DisplayPanel->Left + 10; top1 = Top + DisplayPanel->Top + 37; // // SetCursorPos(left1, top1); rect1.left = Left + MousePanel->Left; rect1.top = Top + MousePanel->Top; rect1.right = Left + MousePanel->Left + MousePanel->Width; rect1.bottom = Top + MousePanel->Top + MousePanel->Height; ClipCursor(&rect1); } } //--------------------------------------------------------------------------- // // void __fastcall TFormMain::BackCloseImageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { mStartDevice = false; if ((X > 54) && (X < 189)) if ((Y > 213) && (Y < 450)) mStartDevice = true; } //--------------------------------------------------------------------------- // void __fastcall TFormMain::BackOpenImageClick(TObject *Sender) { int left1, top1; RECT rect1; if (mStartDevice) { DisplayPanel->Visible = true; left1 = Left + DisplayPanel->Left + 10; top1 = Top + DisplayPanel->Top + 37; SetCursorPos(left1, top1); rect1.left = Left + DisplayPanel->Left; rect1.top = Top + DisplayPanel->Top; rect1.right = Left + DisplayPanel->Left + DisplayPanel->Width; rect1.bottom = Top + DisplayPanel->Top + DisplayPanel->Height; ClipCursor(&rect1); } } //--------------------------------------------------------------------------- // // void __fastcall TFormMain::BackOpenImageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { mStartDevice = false; if ((X > 54) && (X < 189)) if ((Y > 213) && (Y < 450)) mStartDevice = true; } //--------------------------------------------------------------------------- // 3*3 Main Menu // // void __fastcall TFormMain::DisplayImageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { int index; index = mDisplayIndex; // 1, 4, 7 ¹ø menu ÁÂÇ¥ °ª if ((0 < X) && (X < 44)) { if ((-2 < Y) && (Y < 1)) index = -1; else if ((0 < Y) && (Y < 59)) index = 1 ; else if ((57 < Y) && (Y < 117)) index = 4; else if ((115 < Y) && (Y < 175)) index = 7; } // 2, 5, 8 ¹ø menu ÁÂÇ¥ °ª else if ((42 < X) && (X < 87)) { if ((-2 < Y) && (Y < 1)) index = -1; else if ((0 < Y) && (Y < 59)) index = 2 ; else if ((57 < Y) && (Y < 117)) index = 5; else if ((115 < Y) && (Y < 175)) index = 8; } // 3, 6, 9 ¹ø menu ÁÂÇ¥ °ª else if ((85 < X) && (X < 129)) { if ((-2 < Y) && (Y < 1)) index = -1; else if ((0 < Y) && (Y < 59)) index = 3 ; else if ((57 < Y) && (Y < 117)) index = 6; else if ((115 < Y) && (Y < 175)) index = 9; } else // index = 1; // ShowDisplay(index); ShowMenuUp(1); } //--------------------------------------------------------------------------- // void __fastcall TFormMain::DisplayImageClick(TObject *Sender) { int left1, top1; RECT rect1; if (mDisplayIndex == -1) return ; DisplayPanel->Visible = false; FinalPanel->Visible = false; MenuPanel->Visible = true; sMenuPanel->Visible = true; sMenuImage->Visible = true; MenuUpPanel->Visible = true; MenuUpImage->Visible = true; left1 = Left + MenuPanel->Left + 10; top1 = Top + MenuPanel->Top + 27+10; SetCursorPos(left1,top1); ShowMenu(BACK_INDEX); ShowMenuUp(1); } //--------------------------------------------------------------------------- void TFormMain::ShowDisplay(int index) { String file_name; if (index != mDisplayIndex) { mDisplayIndex = index; if (index != -1) { file_name = mAppPath + "./Img/" + IntToStr(index) + ".bmp"; DisplayImage->Picture->LoadFromFile(file_name); } } } //--------------------------------------------------------------------------- void __fastcall TFormMain::sMenuImageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { int index; index = mMenuIndex; if ((0 < X) && (X < 130)) { if ((0 < Y) && (Y < 21)) index = 1; else if ((19 < Y) && (Y < 41)) index = 2 ; else if ((39 < Y) && (Y < 61)) index = 3; else if ((59 < Y) && (Y < 81)) index = 4; else if ((79 < Y) && (Y < 101)) index = 5; else if ((99 < Y) && (Y < 121)) index = 6; else if ((119 < Y) && (Y < 141)) index = 7; else index = 1; ShowMenu(index); } } //--------------------------------------------------------------------------- void __fastcall TFormMain::sMenuImageClick(TObject *Sender) { if (mMenuIndex == -1) return ; SelectMenu(mMenuIndex); } //--------------------------------------------------------------------------- void TFormMain::ShowMenu(int index) { String file_name; if (index != mMenuIndex) { mMenuIndex = index; if (index != -1) { file_name = mAppPath + "./Img/" + "s" + IntToStr(mDisplayIndex) + "-" + IntToStr(index) + ".bmp"; sMenuImage->Picture->LoadFromFile(file_name); } } } //--------------------------------------------------------------------------- // void TFormMain::ShowMenuUp(int index) { String file_name; if (index != mMenuIndex) { mMenuIndex = index; if (index != -1) { file_name = mAppPath + "./Img/" + "s" + IntToStr(mDisplayIndex) + ".bmp"; MenuUpImage->Picture->LoadFromFile(file_name); } } } //--------------------------------------------------------------------------- void TFormMain::SelectMenu(int index) { int left1, top1; if (mMenuIndex == BACK_INDEX) { // DisplayPanel->Visible = true; MenuPanel->Visible = false; FinalPanel->Visible = false; left1 = Left + DisplayPanel->Left + 10; top1 = Top + DisplayPanel->Top + 37; SetCursorPos(left1,top1); } else FinalPanel->Visible = true; } //--------------------------------------------------------------------------- // void __fastcall TFormMain::FinalImageClick(TObject *Sender) { int left1, top1; FinalPanel->Visible = false; MenuPanel->Visible = false; DisplayPanel->Visible = true; left1 = Left + MenuPanel->Left + 10; top1 = Top + MenuPanel->Top + 37; SetCursorPos(left1,top1); } //--------------------------------------------------------------------------- void __fastcall TFormMain::MenuBackImageClick(TObject *Sender) { int left1, top1; MenuPanel->Visible = false; FinalPanel->Visible = false; DisplayPanel->Visible = true; left1 = Left + MenuPanel->Left + 44; top1 = Top + MenuPanel->Top + 12; SetCursorPos(left1, top1); } //--------------------------------------------------------------------------- // Åë½Å ¼³Á¤ ¿É¼ÇÀÎ TCommParam À» ¼³Á¤ÇÑ´Ù void __fastcall TFormMain::SetCommParam(void) { CommParam.PortNo = cbCOM->ItemIndex + 1; CommParam.BaudRate = rdSpeed->Items->Strings[rdSpeed->ItemIndex].ToInt(); CommParam.ByteSize = 8; switch(rdStopbit->ItemIndex) { case 0: CommParam.StopBits = STOPBIT_1; break; case 1: CommParam.StopBits = STOPBIT_15; break; case 2: CommParam.StopBits = STOPBIT_2; break; } switch(rdParity->ItemIndex) { case 0: CommParam.Parity = PARITY_NONE; break; case 1: CommParam.Parity = PARITY_EVEN; break; case 2: CommParam.Parity = PARITY_ODD; break; } } //--------------------------------------------------------------------------- // ¼ö½ÅµÈ DataÀÇ °ªµéÀ» 16Áø¼ö·Î º¸¿©ÁØ´Ù void __fastcall TFormMain::ShowRcvData(int iLen, char *bData) { BYTE TempBuff[5]; int RcvData1; int RcvData2; int RcvData3; int RcvData4; int RcvData5; int RcvData6; int RcvData7; int RcvData8; int RcvData9; int RcvData10; POINT pt; GetCursorPos (&pt); /* if (bData[0] == -82) { BackCloseImageClick(FormMain); count++; //Edit3->Text = count; } if ((bData[0] == -82) && (count == 2)) { DisplayImageClick(FormMain); if (index = 1) { ShowMenu(1); } else if (index = 2) { ShowMenu(2); } else if (index = 3) { ShowMenu(3); } else if (index = 4) { ShowMenu(4); } else if (index = 5) { ShowMenu(5); } else if (index = 6) { ShowMenu(6); } else if (index = 7) { ShowMenu(7); } else if (index = 8) { ShowMenu(8); } else if (index = 9) { ShowMenu(9); } count++; //Edit3->Text = count; } if ((bData[0] == -82) && (count == 4)) { sMenuImageClick(FormMain); if (mMenuIndex == 1) { FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); DisplayPanel->Visible = false; MenuPanel->Visible = false; } else if (mMenuIndex == 2) { FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); DisplayPanel->Visible = false; MenuPanel->Visible = false; } else if (mMenuIndex == 3) { FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); DisplayPanel->Visible = false; MenuPanel->Visible = false; } else if (mMenuIndex == 4) { FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); DisplayPanel->Visible = false; MenuPanel->Visible = false; } else if (mMenuIndex == 5) { FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); DisplayPanel->Visible = false; MenuPanel->Visible = false; } else if (mMenuIndex == 6) { FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); DisplayPanel->Visible = false; MenuPanel->Visible = false; } else if (mMenuIndex == 7) { FinalImage->Picture->LoadFromFile(mAppPath + "./Img01/final.bmp"); } count = 0; //Edit3->Text = count; } if ((bData[0] == -82) && (count == 5)) { MenuBackImageClick(FormMain); ShowMenu(mDisplayIndex); } */ if (Edit101->Text != Edit102->Text) { SetCursorPos (bData[3]+pt.x, bData[2]+pt.y); } for(int i=0; iText = RcvData1; Edit102->Text = RcvData2; Edit103->Text = RcvData3; Edit104->Text = RcvData4; Edit105->Text = RcvData5; Edit106->Text = RcvData6; Edit107->Text = RcvData7; Edit108->Text = RcvData8; Edit109->Text = RcvData9; Edit110->Text = RcvData10; ListBox1->Items->Add(RcvData1); ListBox2->Items->Add(RcvData2); ListBox3->Items->Add(RcvData3); ListBox4->Items->Add(RcvData4); ListBox5->Items->Add(RcvData5); ListBox6->Items->Add(RcvData6); ListBox7->Items->Add(RcvData7); ListBox8->Items->Add(RcvData8); ListBox9->Items->Add(RcvData9); ListBox10->Items->Add(RcvData10); TestEdit1->Text = RcvData1; TestEdit2->Text = RcvData2; } //--------------------------------------------------------------------------- // ¾²·¹µå¿¡ ÀÇÇØ Data°¡ ¼ö½ÅµÇ¸é SendMessage¿¡ ÀÇÇØ È£ÃâµÈ´Ù. Áï ¼ö½Å¹öÆÛ¿¡ // TMessageÀÇ WParamÀÇ ±æÀ̸¸Å­ Data°¡ ¼ö½ÅµÈ ÈÄ È£ÃâµÈ´Ù void __fastcall TFormMain::UMEvnRxChar(TMessage &Message) { int iLen; BYTE RcvBuff[8192]; //BYTE RcvBuff[65536]; if(RadioGroupRecvType->ItemIndex == 1) return; iLen = RS232C->ReadData(Message.WParam, RcvBuff); ShowRcvData(iLen, RcvBuff); } //--------------------------------------------------------------------------- void __fastcall TFormMain::ClearEdit(void) { EditCode->Text = ""; EditLength->Text = ""; EditData->Text = ""; } //--------------------------------------------------------------------------- // ¼Û½ÅÇÒ µ¥ÀÌŸ¸¦ TDataType ±¸Á¶Ã¼¿¡ ³Ö¾îÁØ´Ù void __fastcall TFormMain::MakeSendData(void) { if(TxBuff.Data) { delete []TxBuff.Data; } ZeroMemory(&TxBuff, sizeof(TDataType)); TxBuff.Code = (BYTE)EditCode->Text.ToInt(); TxBuff.Len = (short int)EditLength->Text.ToInt(); TxBuff.Data = (BYTE *)new BYTE[TxBuff.Len+2]; strcpy(TxBuff.Data, EditData->Text.c_str()); } //--------------------------------------------------------------------------- void __fastcall TFormMain::FormDestroy(TObject *Sender) { if(TxBuff.Data) { delete []TxBuff.Data; } delete RS232C; } //--------------------------------------------------------------------------- void __fastcall TFormMain::btnSetupClick(TObject *Sender) { DWORD dwDtr, dwRts; switch(RadioGroupDtr->ItemIndex) { case 0: dwDtr = DTR_DISABLE; break; case 1: dwDtr = DTR_ENABLE; break; case 2: dwDtr = DTR_HANDSHAKE; break; } switch(RadioGroupDtr->ItemIndex) { case 0: dwRts = RTS_DISABLE; break; case 1: dwRts = RTS_ENABLE; break; case 2: dwRts = RTS_HANDSHAKE; break; case 3: dwRts = RTS_TOGGLE; break; } SetCommParam(); RS232C->SetDtrControl(dwDtr); RS232C->SetRtsControl(dwRts); if(!RS232C->Open(&CommParam)) ShowMessage("Open Failed!"); RS232C->ClearTxBuffer(); RS232C->ClearRxBuffer(); } //--------------------------------------------------------------------------- void __fastcall TFormMain::btnSendClick(TObject *Sender) { if(!RS232C->IsOpened()) { ShowMessage("Open Failed!"); return; } //else ShowMessage("Open Success"); RS232C->ClearTxBuffer(); MakeSendData(); if(!RS232C->WriteData(3, (BYTE *)&TxBuff)) { ShowMessage("Header Send Error"); } //else ShowMessage(IntToStr(&TxBuff)); if(!RS232C->WriteData(TxBuff.Len, TxBuff.Data)) { ShowMessage("Body Send Error"); } } //--------------------------------------------------------------------------- void __fastcall TFormMain::EditDataExit(TObject *Sender) { EditLength->Text = EditData->Text.Length(); } //--------------------------------------------------------------------------- void __fastcall TFormMain::FormActivate(TObject *Sender) { EditCode->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TFormMain::btnRcvClick(TObject *Sender) { int iLen; BYTE bRcvBuff[8192]; //BYTE bRcvBuff[65536]; iLen = RS232C->ReadData(30, bRcvBuff); if(!iLen) ShowMessage("TimeOut"); else ShowRcvData(iLen, bRcvBuff); } //--------------------------------------------------------------------------- void __fastcall TFormMain::RadioGroupRecvTypeClick(TObject *Sender) { btnRcv->Enabled = (RadioGroupRecvType->ItemIndex == 1); } //---------------------------------------------------------------------------