SSPC-Tester/Docs/PCIe8586驱动接入资料/Samples/VC/Advanced/Sys.cpp
2026-06-30 12:10:29 +08:00

815 lines
21 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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("<22>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>..."),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
}