Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
PIC18F452
:
Settings.cpp
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
/**********************************************************************/ /* */ /* File name: Settings.cpp */ /* */ /* Since: 2002/12/03 */ /* */ /* Version: 1.02 */ /* */ /* Author: MONTAGNE Xavier [XM] {link xavier.montagne@wanadoo.fr} */ /* */ /* Purpose: Manage the Settings Window to program easily the */ /* the configuration of the programmer. */ /* */ /* Distribution: This file is part of PP18. */ /* PP18 is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU General */ /* Public License as published by the Free Software */ /* Foundation; either version 2, or (at your option) */ /* any later version. */ /* */ /* PP18 is distributed in the hope that it will be */ /* useful, but WITHOUT ANY WARRANTY; without even the */ /* implied warranty of MERCHANTABILITY or FITNESS FOR A */ /* PARTICULAR PURPOSE. See the GNU General Public */ /* License for more details. */ /* */ /* You should have received a copy of the GNU General */ /* Public License along with PP18; see the file */ /* COPYING.txt. If not, write to the Free Software */ /* Foundation, 59 Temple Place - Suite 330, */ /* Boston, MA 02111-1307, USA. */ /* */ /* History: */ /* 2002/12/03 [XM] Create this file */ /* 2003/06/26 [XM] AdvancedWindow is no more called as modal. */ /* */ /**********************************************************************/ /*********************************************************************** * INCLUDES **********************************************************************/ #include <vcl.h> #include <vcl\Registry.hpp> #include "Com.h" #include "Advanced.h" #include "Settings.h" #pragma hdrstop /*********************************************************************** * Function prototypes. **********************************************************************/ void AnalyseDataFromPIC(void); extern "C" void SettingsWindow_Show(void); /*********************************************************************** * Global variables. **********************************************************************/ extern TAdvancedWindow *AdvancedWindow; extern TRegistry *regKey; static unsigned char CLOCK_status; static unsigned char DataToPIC_status; static unsigned char DataFromPIC_status; static unsigned char VPP_status; static unsigned char VCC_status; #pragma package(smart_init) #pragma resource "*.dfm" TSettingsWindow *SettingsWindow; /*********************************************************************** * Window constructor. * * @param TComponent* Owner IN Parent object reference * @return none **********************************************************************/ __fastcall TSettingsWindow::TSettingsWindow(TComponent* Owner) : TForm(Owner) { } /*********************************************************************** * Quit the window and save the settings into register base (sould be). * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::ButtonOKClick(TObject *Sender) { unsigned char ucMask, ucStatus; regKey->OpenKey("\\Software\\PP18\\DLL\\Settings", false); ReadSettings(PL_CLOCK, &ucMask, &ucStatus); regKey->WriteInteger("CLOCK_INV", ucStatus); ReadSettings(PL_VCC, &ucMask, &ucStatus); regKey->WriteInteger("VCC_INV", ucStatus); ReadSettings(PL_VPP, &ucMask, &ucStatus); regKey->WriteInteger("VPP_INV", ucStatus); ReadSettings(PL_DATA_FROM_PIC, &ucMask, &ucStatus); regKey->WriteInteger("DATA_FROM_PIC_INV", ucStatus); ReadSettings(PL_DATA_TO_PIC, &ucMask, &ucStatus); regKey->WriteInteger("DATA_TO_PIC_INV", ucStatus); SettingsWindow->Close(); } /*********************************************************************** * Quit the window and restore the previous settings. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::ButtonCancelClick(TObject *Sender) { if (CLOCK_status == INVERTED) RB_CLOCK_InvClick(Sender); else RB_CLOCK_NInvClick(Sender); if (DataToPIC_status == INVERTED) RB_DataToPIC_InvClick(Sender); else RB_DataToPIC_NInvClick(Sender); if (DataFromPIC_status == INVERTED) RB_DataFromPIC_InvClick(Sender); else RB_DataFromPIC_NInvClick(Sender); if (VPP_status == INVERTED) RB_VPP_InvClick(Sender); else RB_VPP_NInvClick(Sender); if (VCC_status == INVERTED) RB_VCC_InvClick(Sender); else RB_VCC_NInvClick(Sender); Settings(PL_CLOCK, 0, CLOCK_status); Settings(PL_DATA_TO_PIC, 0, DataToPIC_status); Settings(PL_DATA_FROM_PIC, 0, DataFromPIC_status); Settings(PL_VPP, 0, VPP_status); Settings(PL_VCC, 0, VCC_status); SettingsWindow->Close(); } /*********************************************************************** * Set the CLOCK signal at logical 1 or 0. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::SB_CLOCKClick(TObject *Sender) { if (SB_CLOCK->Down == true) { TestIO_ON(PL_CLOCK); SB_CLOCK->Caption = "ON "; AnalyseDataFromPIC(); TestIO_ON(PL_CLOCK); } else { TestIO_OFF(PL_CLOCK); SB_CLOCK->Caption = "OFF"; AnalyseDataFromPIC(); TestIO_OFF(PL_CLOCK); } } /*********************************************************************** * Set the DataToPIC signal at logical 1 or 0. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::SB_DataToPICClick(TObject *Sender) { if (SB_DataToPIC->Down == true) { TestIO_ON(PL_DATA_TO_PIC); SB_DataToPIC->Caption = "ON "; } else { TestIO_OFF(PL_DATA_TO_PIC); SB_DataToPIC->Caption = "OFF"; } AnalyseDataFromPIC(); } /*********************************************************************** * Set the VPP signal at logical 1 or 0. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::SB_VPPClick(TObject *Sender) { if (SB_VPP->Down == true) { TestIO_ON(PL_VPP); SB_VPP->Caption = "ON "; } else { TestIO_OFF(PL_VPP); SB_VPP->Caption = "OFF"; } AnalyseDataFromPIC(); } /*********************************************************************** * Set the VCC signal at logical 1 or 0. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::SB_VCCClick(TObject *Sender) { if (SB_VCC->Down == true) { TestIO_ON(PL_VCC); SB_VCC->Caption = "ON "; } else { TestIO_OFF(PL_VCC); SB_VCC->Caption = "OFF"; } AnalyseDataFromPIC(); } /*********************************************************************** * Invert the CLOCK signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_CLOCK_InvClick(TObject *Sender) { RB_CLOCK_Inv->Checked = true; RB_CLOCK_NInv->Checked = false; Settings(PL_CLOCK, 0, INVERTED); SB_CLOCKClick(Sender); } /*********************************************************************** * Display the window and store the settings into local variables. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::FormShow(TObject *Sender) { unsigned char ucMask, ucStatus; TestIO_OFF(PL_CLOCK); TestIO_OFF(PL_DATA_TO_PIC); TestIO_OFF(PL_VPP); TestIO_OFF(PL_VCC); ReadSettings(PL_CLOCK, &ucMask, &ucStatus); if (ucStatus == INVERTED) { RB_CLOCK_InvClick(Sender); CLOCK_status = INVERTED; } else { RB_CLOCK_NInvClick(Sender); CLOCK_status = NON_INVERTED; } ReadSettings(PL_DATA_TO_PIC, &ucMask, &ucStatus); if (ucStatus == INVERTED) { RB_DataToPIC_InvClick(Sender); DataToPIC_status = INVERTED; } else { RB_DataToPIC_NInvClick(Sender); DataToPIC_status = NON_INVERTED; } ReadSettings(PL_VPP, &ucMask, &ucStatus); if (ucStatus == INVERTED) { RB_VPP_InvClick(Sender); VPP_status = INVERTED; } else { RB_VPP_NInvClick(Sender); VPP_status = NON_INVERTED; } ReadSettings(PL_VCC, &ucMask, &ucStatus); if (ucStatus == INVERTED) { RB_VCC_InvClick(Sender); VCC_status = INVERTED; } else { RB_VCC_NInvClick(Sender); VCC_status = NON_INVERTED; } ReadSettings(PL_DATA_FROM_PIC, &ucMask, &ucStatus); if (ucStatus == INVERTED) { RB_DataFromPIC_InvClick(Sender); DataFromPIC_status = INVERTED; } else { RB_DataFromPIC_NInvClick(Sender); DataFromPIC_status = NON_INVERTED; } AnalyseDataFromPIC(); } /*********************************************************************** * Non invert the VPP signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_VPP_NInvClick(TObject *Sender) { RB_VPP_NInv->Checked = true; RB_VPP_Inv->Checked = false; Settings(PL_VPP, 0, NON_INVERTED); SB_VPPClick(Sender); } /*********************************************************************** * Non invert the CLOCK signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_CLOCK_NInvClick(TObject *Sender) { RB_CLOCK_NInv->Checked = true; RB_CLOCK_Inv->Checked = false; Settings(PL_CLOCK, 0, NON_INVERTED); SB_CLOCKClick(Sender); } /*********************************************************************** * Invert the DataToPIC signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_DataToPIC_InvClick(TObject *Sender) { RB_DataToPIC_Inv->Checked = true; RB_DataToPIC_NInv->Checked = false; Settings(PL_DATA_TO_PIC, 0, INVERTED); SB_DataToPICClick(Sender); } /*********************************************************************** * Non invert the DataToPIC signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_DataToPIC_NInvClick(TObject *Sender) { RB_DataToPIC_NInv->Checked = true; RB_DataToPIC_Inv->Checked = false; Settings(PL_DATA_TO_PIC, 0, NON_INVERTED); SB_DataToPICClick(Sender); } /*********************************************************************** * Invert the DataFromPIC signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_DataFromPIC_InvClick(TObject *Sender) { RB_DataFromPIC_Inv->Checked = true; RB_DataFromPIC_NInv->Checked = false; Settings(PL_DATA_FROM_PIC, 0, INVERTED); AnalyseDataFromPIC(); } /*********************************************************************** * Non invert the DataFromPIC signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_DataFromPIC_NInvClick(TObject *Sender) { RB_DataFromPIC_NInv->Checked = true; RB_DataFromPIC_Inv->Checked = false; Settings(PL_DATA_FROM_PIC, 0, NON_INVERTED); AnalyseDataFromPIC(); } /*********************************************************************** * Invert the VPP signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_VPP_InvClick(TObject *Sender) { RB_VPP_Inv->Checked = true; RB_VPP_NInv->Checked = false; Settings(PL_VPP, 0, INVERTED); SB_VPPClick(Sender); } /*********************************************************************** * Invert the VCC signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_VCC_InvClick(TObject *Sender) { RB_VCC_Inv->Checked = true; RB_VCC_NInv->Checked = false; Settings(PL_VCC, 0, INVERTED); SB_VCCClick(Sender); } /*********************************************************************** * Non invert the VCC signal. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::RB_VCC_NInvClick(TObject *Sender) { RB_VCC_NInv->Checked = true; RB_VCC_Inv->Checked = false; Settings(PL_VCC, 0, NON_INVERTED); SB_VCCClick(Sender); } /*********************************************************************** * Read the DataFromPIC signal. * * @param void * @return none **********************************************************************/ void AnalyseDataFromPIC(void) { unsigned char ucReadValue; ReadDataFromPic(&ucReadValue); if (ucReadValue) SettingsWindow->Im_DataFromPIC_ON->Visible = true; else SettingsWindow->Im_DataFromPIC_ON->Visible = false; } /*********************************************************************** * Display the advanced settings window. * * @param TObject *Sender IN Caller object reference * @return none **********************************************************************/ void __fastcall TSettingsWindow::ButtonAdvClick(TObject *Sender) { if (AdvancedWindow == NULL) AdvancedWindow = new TAdvancedWindow(Application); SettingsWindow->Enabled = false; AdvancedWindow->Show(); } /*********************************************************************** * Build one instance of the TASettingsWindow object. * Show the window into modal mode (the window captures the focus). * * @param void * @return void **********************************************************************/ void SettingsWindow_Show(void) { if (SettingsWindow == NULL) SettingsWindow = new TSettingsWindow(Application); SettingsWindow->ShowModal(); }