SSPC-Tester/Driver/PCIE8586/Samples/VC/Advanced/Sys.cpp

815 lines
21 KiB
C++
Raw Permalink Normal View History

// Sys.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "Sys.h"
#include "MainFrm.h"
#include "ADFrm.h"
#include "ADDoc.h"
#include "ADDigitView.h"
#include "ADWaveView.h"
#include "ADHistFrm.h"
#include "ADHistDoc.h"
#include "ADHistDigitView.h"
#include "ADCalibration.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
#include "ADStatusView.h"
#include "ParaCfgView.h"
extern CADStatusView* pADStatusView;
extern CParaCfgView* pParaCfgView;
// CSysApp
BEGIN_MESSAGE_MAP(CSysApp, CWinApp)
//{{AFX_MSG_MAP(CSysApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_UPDATE_COMMAND_UI(IDM_CloseFile, OnUpdateCloseFile)
ON_UPDATE_COMMAND_UI(IDM_DataFileNew, OnUpdateDataFileNew)
ON_COMMAND(IDM_CloseFile, OnCloseFile)
ON_COMMAND(IDM_DataFileNew, OnDataFileNew)
ON_COMMAND(IDM_StartDeviceAD, OnStartDeviceAD)
ON_COMMAND(IDM_StopDeviceAD, OnStopDeviceAD)
ON_UPDATE_COMMAND_UI(IDM_StopDeviceAD, OnUpdateStopDeviceAD)
ON_COMMAND(IDM_Open_AD, OnOpenAD)
ON_UPDATE_COMMAND_UI(IDM_Open_AD, OnUpdateOpenAD)
ON_COMMAND(IDM_HistoryData, OnHistoryData)
ON_UPDATE_COMMAND_UI(IDM_HistoryData, OnUpdateHistoryData)
ON_UPDATE_COMMAND_UI(IDM_Open_DA, OnUpdateOpenDA)
ON_UPDATE_COMMAND_UI(IDM_StartDeviceAD, OnUpdateStartDeviceAD)
ON_UPDATE_COMMAND_UI(IDM_MDataSave, OnUpdateDataSave)
ON_UPDATE_COMMAND_UI(IDM_MDigitalShow, OnUpdateDigitalShow)
ON_UPDATE_COMMAND_UI(IDM_MGraphicShow, OnUpdateGraphicShow)
ON_COMMAND(IDM_MDataSave, OnMDataSave)
ON_COMMAND(IDM_MDigitalShow, OnMDigitalShow)
ON_COMMAND(IDM_MGraphicShow, OnMGraphicShow)
ON_COMMAND(IDM_ListDeviceDlg, OnListDeviceDlg)
ON_COMMAND(IDM_ADCalibration, OnADCalibration)
//}}AFX_MSG_MAP
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSysApp construction
CSysApp::CSysApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
m_bCreateADFrm = FALSE;
m_bCreateDAFrm = FALSE;
m_ADFrame = NULL;
m_bDeviceCount = FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CSysApp object
CSysApp theApp;
ULONGLONG gl_ReadSizeWords; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
ULONGLONG gl_DDR2Lenth;
ULONGLONG gl_pulDDR2Length;
/////////////////////////////////////////////////////////////////////////////
// CSysApp initialization
BOOL CSysApp::InitInstance()
{
for(int i=0; i<MAX_SEGMENT; i++)
{
ADBuffer[i] = (USHORT*)ACTS1000_AllocateBuffer(MAX_RAM_SIZE*sizeof(USHORT));
}
ADDrawBuffer = (USHORT*)ACTS1000_AllocateBuffer(MAX_RAM_SIZE*sizeof(USHORT));
//CString strMutex;
TCHAR szMutex[256];
BOOL bCreate=FALSE;
//HANDLE hDevice;
//m_hDevice = INVALID_HANDLE_VALUE; // <20>ڸ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ӧ<EFBFBD>ó<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><E8B1B8>Ч
m_CurrentDeviceID=0; // ָ<><D6B8><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><E8B1B8>ID<49><44>ʾ<EFBFBD><CABE>
/////
int DeviceID = 0;
while (TRUE)
{
swprintf_s(szMutex, L"ACTS1000-%d", DeviceID);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_hMutex=::CreateMutex(NULL, NULL, szMutex); // m_pszExeNameΪ<65><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>
if (GetLastError() == ERROR_ALREADY_EXISTS) // <20>ڶ<EFBFBD><DAB6>δ<EFBFBD><CEB4><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>
{
DeviceID++;
continue; // <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><E8B1B8>Ӧ<EFBFBD>ó<EFBFBD><C3B3>򴴽<EFBFBD>
}
else
{
m_CurrentDeviceID = DeviceID;
m_hDevice = ACTS1000_CreateDevice(m_CurrentDeviceID);
if (m_hDevice == INVALID_HANDLE_VALUE)
{
AfxMessageBox(L"<EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_ICONWARNING, 0);
}
break;
}
}
/*int DeviceCount;
hDevice = ACTS1000_CreateDevice(0); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD>󣬱<EFBFBD><F3A3ACB1><EFBFBD><EFBFBD><EFBFBD>App<70>У<EFBFBD><D0A3>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD>ʹ<EFBFBD><CAB9>
if(hDevice!=INVALID_HANDLE_VALUE) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
{
DeviceCount = ACTS1000_GetDeviceCount(hDevice);
ACTS1000_ReleaseDevice(hDevice);
}
else
{
DeviceCount = 0; // <20><><EFBFBD><EFBFBD>û<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>Ϊ0
}
for(int i=0; i<DeviceCount; i++)
{
strMutex.Format(_T("ACTS1000-%d"), i);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_hMutex=::CreateMutex(NULL, NULL, strMutex); // m_pszExeNameΪ<65><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>
if(GetLastError()==ERROR_ALREADY_EXISTS) // <20>ڶ<EFBFBD><DAB6>δ<EFBFBD><CEB4><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>
{
bCreate=FALSE;
continue; // <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><E8B1B8>Ӧ<EFBFBD>ó<EFBFBD><C3B3>򴴽<EFBFBD>
}
else
{
bCreate=TRUE;
m_CurrentDeviceID=i;
break;
}
}
if(DeviceCount!=0)
{
if(bCreate==FALSE) // <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD><EFBFBD><EFBFBD>ʱ
{
AfxMessageBox(_T("<EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>..."),MB_ICONWARNING,0);
return FALSE;
}
m_hDevice = ACTS1000_CreateDevice(m_CurrentDeviceID);
}
*/
ACTS1000_GetMainInfo(m_hDevice,&gl_ADMainInfo); // DDR2<52>ij<EFBFBD><C4B3><EFBFBD>(<28><>λ<EFBFBD><CEBB>MB)
gl_pulDDR2Length = gl_ADMainInfo.nDepthOfMemory;
gl_DDR2Lenth = gl_pulDDR2Length*1024*1024;
m_nRevisionID = 0;
if(!ACTS1000_GetBusInfo(m_hDevice, NULL, NULL, NULL, &m_nRevisionID))
{
//AfxMessageBox("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2><CAA7>");
//return;
}
ACTS1000_GetSupportRangeInfo(m_hDevice, &m_nSampRangeCount,m_nSampRangeVal);
/*ULONG nInx = 0;
for (int i=0; i<m_nSampRangeCount; i++)
{
m_nSampRangeVal[i]= i;
}*/
gl_wMaxLSB = (WORD)(gl_ADMainInfo.nSampCodeCount - 1);
gl_fLsbCount = (float)gl_ADMainInfo.nSampCodeCount;
gl_lLsbHalf = (WORD)(gl_ADMainInfo.nSampCodeCount/2);
///////////////////////////////////////////////
// <20>ж<EFBFBD><D0B6>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ģʽ<C4A3>Ƿ<EFBFBD>Ϊ1024*768
int Len=GetSystemMetrics(SM_CXSCREEN); // ȡ<><C8A1><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
if(Len<1024) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>ȴ<EFBFBD>С1024<32><34><EFBFBD><EFBFBD>
{
if(AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>1024*768<36><38><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ֱ<EFBFBD><D6B1>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),MB_ICONWARNING|MB_YESNO,0)==IDNO)
{
ExitInstance();
return FALSE;
}
}
///////////////////////////////////////////////
// Ӧ<>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(16); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
// <20><><EFBFBD><EFBFBD>AD<41>ɼ<EFBFBD>ģ<EFBFBD><C4A3>
pADTemplate = new CMultiDocTemplate(
IDR_AD,
RUNTIME_CLASS(CADDoc),
RUNTIME_CLASS(CADFrame), // custom MDI child frame
RUNTIME_CLASS(CADDigitView));
AddDocTemplate(pADTemplate);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>ݻط<DDBB>ģ<EFBFBD><C4A3>
pHistDataTemplate = new CMultiDocTemplate(
IDR_HistoryData,
RUNTIME_CLASS(CADHistDoc),
RUNTIME_CLASS(CADHistFrm), // custom MDI child frame
RUNTIME_CLASS(CADHistDigitView));
AddDocTemplate(pHistDataTemplate);
// Enable DDE Execute open
// <20><>WINDOWS<57>ǼǸó<C7B8><C3B3><EFBFBD><EFBFBD><EFBFBD>ȱʡ<C8B1><CAA1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>
EnableShellOpen();
RegisterShellFileTypes(TRUE);
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
//if (!ProcessShellCommand(cmdInfo))
// return FALSE;
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
// The main window has been initialized, so show and update it.
// pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); // ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pMainFrame->UpdateWindow();
// Enable drag/drop open
m_pMainWnd->DragAcceptFiles(); // ֧<><D6A7><EFBFBD>ϷŹ<CFB7><C5B9><EFBFBD>
::SetProp(m_pMainWnd->GetSafeHwnd(), m_pszExeName, (HANDLE)1);
LONG nPhyID = 0;
if (m_hDevice != INVALID_HANDLE_VALUE)
{
ACTS1000_GetDeviceCurrentID(m_hDevice, NULL, &nPhyID);
}
CString MainFrmName; TCHAR str[100];
switch (gl_ADMainInfo.nDeviceType>>16)
{
case PXIE_BUS:
if (m_nRevisionID >= PCIE8502D_RID && m_nRevisionID <0xFF)
{
_stprintf(str, _T("ACTS1000-PXIE%04X(%02X)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_nRevisionID, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
}
else if (m_nRevisionID == 0)
_stprintf(str, _T("ACTS1000-PXIE%04X-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_CurrentDeviceID, nPhyID, gl_pulDDR2Length);
else
_stprintf(str, _T("ACTS1000-PXIE%04X(%C)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF,'A'+ m_nRevisionID-1, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
/*if (m_nRevisionID >= PCIE8502D_RID && m_nRevisionID <0xFF)
{
_stprintf(str, _T("ACTS1000-PXIE%04X(%02X)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_nRevisionID, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
}
else if (m_nRevisionID == 0x01)
{
_stprintf(str, _T("ACTS1000-PXIE%04X(A)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
}
else
{
_stprintf(str, _T("ACTS1000-PXIE%04X-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_CurrentDeviceID, nPhyID, gl_pulDDR2Length);
}*/
break;
case PCIE_BUS:
if (m_nRevisionID >= PCIE8502D_RID && m_nRevisionID <0xFF)
{
_stprintf(str, _T("ACTS1000-PCIE%04X(%02X)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_nRevisionID, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
}
else if (m_nRevisionID == 0)
_stprintf(str, _T("ACTS1000-PCIE%04X-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_CurrentDeviceID, nPhyID, gl_pulDDR2Length);
else
_stprintf(str, _T("ACTS1000-PCIE%04X(%C)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF,'A'+ m_nRevisionID-1, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
/*if (m_nRevisionID >= PCIE8502D_RID && m_nRevisionID <0xFF)
{
_stprintf(str, _T("ACTS1000-PCIE%04X(%02X)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_nRevisionID, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
}
else if (m_nRevisionID == 0x01)
{
_stprintf(str, _T("ACTS1000-PCIE%04X(A)-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
}
else
{
_stprintf(str, _T("ACTS1000-PCIE%04X-%d-%d[%dM] "), gl_ADMainInfo.nDeviceType&0xFFFF, m_CurrentDeviceID,nPhyID, gl_pulDDR2Length);
}*/
break;
default:
_stprintf(str, _T("ACTS1000-%04X-%d-[%dM] "), gl_ADMainInfo.nDeviceType, m_CurrentDeviceID,gl_pulDDR2Length);
}
MainFrmName = pMainFrame->GetTitle();
MainFrmName = str+MainFrmName;
pMainFrame->SetTitle(MainFrmName);
OnOpenAD(); // <20><><EFBFBD><EFBFBD>AD<41>
m_ADFrame->BringWindowToTop(); // <20><>ADģ<44><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
// ȡ<>ò<EFBFBD><C3B2><EFBFBD>ϵͳ<CFB5>
DWORD dwVersion = GetVersion();
// Get the Windows version.
DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
// Get the build number.
if ((dwVersion < 0x80000000) || (dwWindowsMajorVersion < 4)) // Windows NT
gl_nSampleMode = DMA_MODE; // DMA<4D><41>ʽ
else // Windows Me/98/95
gl_nSampleMode = PRO_MODE; // <20><>ѯ<EFBFBD><D1AF>ʽ
gl_nSampleMode = PRO_MODE; // <20><>ѯ<EFBFBD><D1AF>ʽ
// CG: This line inserted by 'Tip of the Day' component.
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
// No message handlers
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButtonSet();
public:
virtual BOOL OnInitDialog();
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON_Set, &CAboutDlg::OnBnClickedButtonSet)
END_MESSAGE_MAP()
// App command to run the dialog
void CSysApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
/////////////////////////////////////////////////////////////////////////////
// CSysApp message handlers
void CSysApp::OnUpdateOpenAD(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(this->m_bCreateADFrm==FALSE?1:0);
}
void CSysApp::OnOpenAD(void)
{
if (m_ADFrame != NULL)
{
m_ADFrame->BringWindowToTop();
return;
}
BeginWaitCursor(); // <20><>ʼ©<CABC><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CDocument* pDoc;
pDoc=pADTemplate->CreateNewDocument(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
m_pADDoc=(CADDoc*)pDoc; // <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
m_ADFrame=(CADFrame*)pADTemplate->CreateNewFrame(pDoc, NULL);
// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD><CFB5>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʵ<EFBFBD><CAB5>
// <20><>ʼ<EFBFBD><CABC>FRAME<4D><45>֡<EFBFBD><D6A1><EFBFBD>ڣ<EFBFBD><DAA3>Ҵ<EFBFBD><D2B4><EFBFBD>FRAME<4D><45>OnUpdate<74><65><EFBFBD><EFBFBD>
pADTemplate->InitialUpdateFrame(m_ADFrame, pDoc);
pDoc->SetTitle(_T("AD<EFBFBD><EFBFBD><EFBFBD>ɲ<EFBFBD><EFBFBD><EFBFBD>"));
if(pADStatusView != NULL)
{
pDoc->AddView ((CView*)pADStatusView);
}
if(pParaCfgView != NULL)
{
pDoc->AddView((CView*)pParaCfgView);
}
EndWaitCursor(); // ֹͣ©<D6B9><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
void CSysApp::OnHistoryData()
{
// TODO: Add your command handler code here
CString strNewFileName;
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ի<EFBFBD><D4BB><EFBFBD>
if (!(DoPromptFileName(strNewFileName, IDS_ProccessHistoryData,
OFN_HIDEREADONLY , TRUE, NULL))) // OFN_CREATEPROMPT:<3A><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>½<EFBFBD>
return;
// CFile file;
// CFileStatus status;
// if (!file.GetStatus(strNewFileName, status))
// {
// strNewFileName=strNewFileName+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
// AfxMessageBox(strNewFileName,MB_ICONSTOP, 0);
// return; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
// }
CFile File;
FILE_HEADER m_Header;
//File.Open(strNewFileName, GENERIC_READ);
if (!File.Open(strNewFileName, GENERIC_READ))
{
AfxMessageBox(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>");
return ;
}
File.Seek(0,CFile::begin);
int a =File.Read((WORD*)&m_Header,sizeof(m_Header)); // <20>ļ<EFBFBD><C4BC><EFBFBD>Ϣ<EFBFBD><CFA2>HistDigitView<65><EFBFBD><E0BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HistDataFrm<72>ĶԻ<C4B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OnInitialUpdate
File.Close();
if (a == 0)
{
AfxMessageBox(L"<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>СΪ0");
return;
}
CADHistDoc* pDoc;
BeginWaitCursor(); // <20><>ʼ©<CABC><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pDoc=(CADHistDoc*)pHistDataTemplate->OpenDocumentFile(strNewFileName); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>pDoc<6F><63><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>OnOpenDocument
EndWaitCursor(); // ֹͣ©<D6B9><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
void CSysApp::OnUpdateHistoryData(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
}
void CSysApp::OnUpdateDataFileNew(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable((!gl_bDeviceADRun)&&m_bFirstCreateDeviceFile);
}
void CSysApp::OnCloseFile()
{
// TODO: Add your command handler code here
m_pADDoc->OnCloseFile();
}
void CSysApp::OnDataFileNew()
{
// TODO: Add your command handler code here
m_pADDoc->OnDataFileNew();
}
void CSysApp::OnUpdateOpenDA(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
}
void CSysApp::OnStartDeviceAD()
{
// TODO: Add your command handler code here
m_pADDoc->StartDeviceAD();
}
void CSysApp::OnUpdateStartDeviceAD(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(gl_bDeviceADRun==FALSE?1:0);
}
void CSysApp::OnStopDeviceAD()
{
// TODO: Add your command handler code here
m_pADDoc->StopDeviceAD();
}
void CSysApp::OnUpdateStopDeviceAD(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->Enable(gl_bDeviceADRun==TRUE?1:0);
}
void CSysApp::OnUpdateCloseFile(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio (FALSE);
if((nProcessMode == SAVE_MODE) && (bCreateDevice))
pCmdUI->Enable(FALSE);
else
pCmdUI->Enable(!m_bCloseFile);
}
void CSysApp::OnUpdateDataSave(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(pADStatusView != NULL)
pADStatusView->SetDlgCheck();
if(m_bFirstCreateDeviceFile)
pCmdUI->Enable(FALSE);
pCmdUI->SetCheck(nProcessMode == SAVE_MODE ? 1:0);
}
void CSysApp::OnUpdateDigitalShow(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(nProcessMode == DATA_MODE ? 1:0);
if(pADStatusView != NULL)
pADStatusView->SetDlgCheck();
CSysApp *pApp=(CSysApp *)AfxGetApp();
CADDoc* pDoc=pApp->m_pADDoc;
// <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͼָ<CDBC><D6B8>
CADDigitView* pDigitView=(CADDigitView*)(CWnd::FromHandle(pDoc->m_hWndDigit));
if(nProcessMode == SAVE_MODE) // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>̷<EFBFBD>ʽ
{
pDigitView->EnableWindow(FALSE);
}
else
{
pDigitView->EnableWindow(TRUE);
}
}
void CSysApp::OnUpdateGraphicShow(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(pADStatusView != NULL)
pADStatusView->SetDlgCheck();
pCmdUI->SetCheck(nProcessMode == WAVE_MODE ? 1:0);
CSysApp *pApp=(CSysApp *)AfxGetApp();
CADDoc* pDoc=pApp->m_pADDoc;
// <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͼָ<CDBC><D6B8>
CADWaveView* pWaveView=(CADWaveView*)(CWnd::FromHandle(pDoc->m_hWndWave));
if(nProcessMode == SAVE_MODE) // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>̷<EFBFBD>ʽ
{
pWaveView->EnableWindow(FALSE);
}
else
{
pWaveView->EnableWindow(TRUE);
}
}
void CSysApp::OnMDataSave()
{
// TODO: Add your command handler code here
nProcessMode = SAVE_MODE;
if(pADStatusView != NULL)
pADStatusView->SetDlgCheck();
}
void CSysApp::OnMDigitalShow()
{
// TODO: Add your command handler code here
nProcessMode = DATA_MODE;
if(pADStatusView != NULL)
pADStatusView->SetDlgCheck();
}
void CSysApp::OnMGraphicShow()
{
// TODO: Add your command handler code here
nProcessMode = WAVE_MODE;
if(pADStatusView != NULL)
pADStatusView->SetDlgCheck();
}
CDocument* CSysApp::OpenDocumentFile(LPCTSTR lpszFileName)
{
// TODO: Add your specialized code here and/or call the base class
CString str;
// CFile file;
// CFileStatus status;
// if (!file.GetStatus(lpszFileName, status))
// {
// str=lpszFileName;
// str=str+" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
// AfxMessageBox(lpszFileName,MB_ICONSTOP, 0);
// return NULL; // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
// }
//
CFile File;
FILE_HEADER m_Header;
//File.Open(lpszFileName, GENERIC_READ);
if (!File.Open(lpszFileName, GENERIC_READ))
{
AfxMessageBox(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>");
return NULL;
}
File.Seek(0, CFile::begin);
File.Read((WORD*)&m_Header, sizeof(m_Header)); // <20>ļ<EFBFBD><C4BC><EFBFBD>Ϣ<EFBFBD><CFA2>HistDigitView<65><EFBFBD><E0BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HistDataFrame<6D>ĶԻ<C4B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OnInitialUpdate
File.Close();
if(m_Header.DeviceNum != DEFAULT_DEVICE_NUM)
{
if(AfxMessageBox(_T("<EFBFBD>Բ<EFBFBD><EFBFBD>𣬸<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD>, <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>"),MB_YESNO, 0)==IDNO)
return NULL;
//bFile = FALSE;
}
CADHistDoc* pDoc;
BeginWaitCursor(); // <20><>ʼ©<CABC><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pDoc=(CADHistDoc*)pHistDataTemplate->OpenDocumentFile(lpszFileName); // <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>pDoc<6F><63><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>OnOpenDocument
str = lpszFileName;
//str="<22><>ʷ<EFBFBD><CAB7><EFBFBD>ݣ<EFBFBD>"+ str;
str="<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>";
pDoc->SetTitle(str); // <20><><EFBFBD>ĵ<EFBFBD><C4B5>±<EFBFBD><C2B1><EFBFBD>
EndWaitCursor(); // ֹͣ©<D6B9><C2A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return pDoc;
//return CWinApp::OpenDocumentFile(lpszFileName);
}
void CSysApp::OnListDeviceDlg()
{
// TODO: Add your command handler code here
ACTS1000_ListDeviceDlg(m_hDevice); // <20>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
int CSysApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
ReleaseMutex(m_hMutex);
if(m_hDevice != INVALID_HANDLE_VALUE)
{
ACTS1000_ReleaseDevice(m_hDevice);
m_hDevice = INVALID_HANDLE_VALUE;
}
for(int i=0; i<MAX_SEGMENT; i++)
{
ACTS1000_FreeBuffer(ADBuffer[i]);
}
ACTS1000_FreeBuffer(ADDrawBuffer);
return CWinApp::ExitInstance();
}
void CSysApp::OnADCalibration()
{
// TODO: Add your command handler code here
CADCalibration dlg;
dlg.DoModal();
}
void CAboutDlg::OnBnClickedButtonSet()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (theApp.m_hDevice != INVALID_HANDLE_VALUE)
{
CString str;
LONG nPhysIdx;
ULONG nSerialNum, nPassWord;
CEdit* pEdit;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_PhysID);
pEdit->GetWindowText(str);
nPhysIdx = _tcstoul(str, NULL, 10);
if (nPhysIdx>255)
{
nPhysIdx = 255;
}
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SN);
pEdit->GetWindowText(str);
nSerialNum = _tcstoul(str, NULL, 10);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_PassWord);
pEdit->GetWindowText(str);
nPassWord = _tcstoul(str, NULL, 10);
ACTS1000_SetDevicePhysID(theApp.m_hDevice, nPhysIdx);
ACTS1000_SetPassword(nPassWord);
if (!ACTS1000_SetSerialNum(theApp.m_hDevice, nSerialNum))
{
AfxMessageBox(L"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>ʧ<EFBFBD><EFBFBD>");
}
}
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC>
if (theApp.m_hDevice != INVALID_HANDLE_VALUE)
{
CString str;
ULONG nSerialNum;
LONG nPhysIdx, nDeviceLgcID;
ACTS1000_GetDeviceCurrentID(theApp.m_hDevice, &nDeviceLgcID, &nPhysIdx);
ACTS1000_GetSerialNum(theApp.m_hDevice, &nSerialNum);
CEdit* pEdit;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_PhysID);
str.Format(L"%u", nPhysIdx);
pEdit->SetWindowText(str);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SN);
str.Format(L"%u", nSerialNum);
pEdit->SetWindowText(str);
CString strVer;
ULONG ulFmwVersion, ulDriverVersion;
if (ACTS1000_GetDevVersion(theApp.m_hDevice, &ulFmwVersion, &ulDriverVersion))
{
CStatic* pStatic;
pStatic = (CStatic*)GetDlgItem(IDC_STATIC_FmwVersion);
str.Format(_T("%u"),ulFmwVersion);
pStatic->SetWindowText(str);
pStatic = (CStatic*)GetDlgItem(IDC_STATIC_DriverVersion);
str.Format(_T("%u"),ulDriverVersion);
pStatic->SetWindowText(str);
}
}
return TRUE; // return TRUE unless you set the focus to a control
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
}