📄 temperature.cpp
字号:
// Temperature.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "Temperature.h"
#include "MainFrm.h"
#include "TemperatureDoc.h"
#include "TemperatureView.h"
#include "DebugError.h"
#include "ErrorCode.h"
#include "dlgset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CTemperatureApp
BEGIN_MESSAGE_MAP(CTemperatureApp, CWinApp)
ON_COMMAND(ID_APP_ABOUT, &CTemperatureApp::OnAppAbout)
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, &CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
ON_COMMAND(ID_OPEN_EVICE, &CTemperatureApp::OnOpenEvice)
ON_COMMAND(ID_CLOSE_DVICE, &CTemperatureApp::OnCloseDvice)
ON_UPDATE_COMMAND_UI(ID_CLOSE_DVICE, &CTemperatureApp::OnUpdateCloseDvice)
ON_COMMAND(ID_MENU_SETTING, &CTemperatureApp::OnMenuSetting)
END_MESSAGE_MAP()
// CTemperatureApp construction
CTemperatureApp::CTemperatureApp():
m_Lang( 0 )
, m_Port( 6 )
, m_nLogDataListCount(0)
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
// The one and only CTemperatureApp object
CTemperatureApp theApp;
// CTemperatureApp initialization
/*#include "ExportFile.h"
void TestExportFile()
{
CExportFile file;
file.OpenCreateFile( "1.csv" );
char ch[64];
for( int i=0; i<10; i++ )
{
for( int j=0; j<5; j++ )
{
sprintf_s( ch, "%d", (j+1)*i );
file.AddItem( ch );
}
file.EnterLine();
}
}
*/
BOOL CTemperatureApp::InitInstance()
{
//TestExportFile();
// InitCommonControlsEx() is required on Windows XP if an application
// manifest specifies use of ComCtl32.dll version 6 or later to enable
// visual styles. Otherwise, any window creation will fail.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// Set this to include all the common control classes you want to use
// in your application.
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
// Initialize OLE libraries
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
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
// 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(0); // 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
InitNameList();
InitLogDataList();
UINT nMenu = IDR_MAINFRAME_EN;
if( m_Lang == 0 )
{
nMenu = IDR_MAINFRAME_CH;
}
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
nMenu,
RUNTIME_CLASS(CTemperatureDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CTemperatureView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line. Will return FALSE if
// app was launched with /RegServer, /Register, /Unregserver or /Unregister.
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The one and only window has been initialized, so show and update it
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
// call DragAcceptFiles only if there's a suffix
// In an SDI app, this should occur after ProcessShellCommand
return TRUE;
}
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// App command to run the dialog
void CTemperatureApp::OnAppAbout()
{
CAboutDlg aboutDlg;
aboutDlg.DoModal();
}
// CTemperatureApp message handlers
void CTemperatureApp::OnOpenEvice()
{
U32 u32Ret = 0;
CString str;
u32Ret = m_DeviceClient.InitialClient( m_Port );
if( u32Ret == RETURN_NO_ERROR )
{
UINT nRC = theApp.m_Lang == 0 ? IDS_STR_OPEN_COM_CH : IDS_STR_OPEN_COM;
str.LoadString( nRC );
}
else
{
UINT nRC = theApp.m_Lang == 0 ? IDS_STR_OPEN_COM_FAILED_CH : IDS_STR_OPEN_COM_FAILED;
str.LoadString( nRC );
}
CString str2;
str2.Format( str, m_Port );
MessageBox(NULL, str2, _T("Info"), MB_OK );
}
void CTemperatureApp::OnCloseDvice()
{
if( m_DeviceClient.IsOpen() )
{
m_DeviceClient.Uninitial();
}
}
void CTemperatureApp::OnUpdateCloseDvice(CCmdUI *pCmdUI)
{
pCmdUI->Enable( m_DeviceClient.IsOpen() );
}
void CTemperatureApp::InitNameList()
{
BOOL bRet;
CTFile ProductFile;
CTFile ManufactureFile;
CTFile GroupFile;
int j = 0;
do
{
BOOL IsNewFile;
PRO_FILE_HEADER FileHeader;
bRet = ProductFile.OpenFile( FILE_NAME_PRODUCT, &IsNewFile );
if( bRet == FALSE ) break;
if( IsNewFile == FALSE )
{
bRet = ProductFile.GetFileHeader( &FileHeader );
if( bRet == FALSE ) break;
m_Lang = FileHeader.u8LanType;
m_Port = FileHeader.u8ComPort;
j = 0;
for( unsigned int i=0; i<MAX_ITEM; i++ )
{
ProductFile.GetItem( i+1, &m_ProductList[j] );
if( m_ProductList[j].CardData.CardID != 0 )
{
j++;
}
}
m_nCurrentProductListCount = j;
}
else
{
m_nCurrentProductListCount = 0;
}
bRet = ManufactureFile.OpenFile( FILE_NAME_MANU, &IsNewFile );
if( bRet == FALSE ) break;
if( IsNewFile == FALSE )
{
bRet = ManufactureFile.GetFileHeader( &FileHeader );
if( bRet == FALSE ) break;
j = 0;
for( unsigned int i=0; i<MAX_ITEM; i++ )
{
ManufactureFile.GetItem( i+1, &m_ManufactureList[j] );
if( m_ManufactureList[j].CardData.CardID != 0 )
j++;
}
m_nCurrentManufactureListCount = j;
}
else
{
m_nCurrentManufactureListCount = 0;
}
bRet = GroupFile.OpenFile( FILE_NAME_GROUP, &IsNewFile );
if( bRet == FALSE ) break;
if( IsNewFile == FALSE )
{
bRet = GroupFile.GetFileHeader( &FileHeader );
if( bRet == FALSE ) break;
j = 0;
for( unsigned int i=0; i<MAX_ITEM; i++ )
{
GroupFile.GetItem( i+1, &m_GroupList[j] );
if( m_GroupList[j].CardData.CardID != 0 )
{
j++;
}
}
m_nCurrentGroupListCount = j;
}
else
{
m_nCurrentGroupListCount = 0;
}
} while(0);
}
void CTemperatureApp::WriteComLangToFile()
{
BOOL bRet;
CTFile ProductFile;
do
{
BOOL IsNewFile;
PRO_FILE_HEADER FileHeader;
bRet = ProductFile.OpenFile( FILE_NAME_PRODUCT, &IsNewFile );
if( bRet == FALSE ) break;
if( IsNewFile == FALSE )
{
bRet = ProductFile.GetFileHeader( &FileHeader );
FileHeader.u8ComPort = m_Port;
FileHeader.u8LanType = m_Lang;
}
else
{
FileHeader.FileSign = 0xAAAA;
FileHeader.FileSize = RELATION_FILE_SIZE;
FileHeader.u8ComPort= m_Port;
FileHeader.u8LanType= m_Lang;
FileHeader.ItemCount= 0;
}
bRet = ProductFile.WriteItem( 0, &FileHeader );
} while(0);
}
void CTemperatureApp::WriteNameListToFile()
{
BOOL bRet;
CTFile ProductFile;
CTFile ManufactureFile;
CTFile GroupFile;
int j = 0;
do
{
BOOL IsNewFile;
PRO_FILE_HEADER FileHeader;
CARD_ID_NAME CardData;
bRet = ProductFile.OpenFile( FILE_NAME_PRODUCT, &IsNewFile );
if( bRet == FALSE ) break;
j = 0;
for( int i=0; i<MAX_ITEM; i++ )
{
if( m_ProductList[i].CardData.CardID != 0 )
{
bRet = ProductFile.WriteItem( j+1, &m_ProductList[i] );
if( bRet == FALSE ) break;
j++;
}
}
memset( &CardData, 0, sizeof(CardData) );
for( int i=j; i<MAX_ITEM; i++ )
{
ProductFile.WriteItem( i+1, &CardData );
}
FileHeader.FileSign = 0xAAAA;
FileHeader.FileSize = RELATION_FILE_SIZE;
FileHeader.u8ComPort= m_Port;
FileHeader.u8LanType= m_Lang;
FileHeader.ItemCount= j;
bRet = ProductFile.WriteItem( 0, &FileHeader );
bRet = ManufactureFile.OpenFile( FILE_NAME_MANU, &IsNewFile );
if( bRet == FALSE ) break;
j = 0;
for( int i=0; i<MAX_ITEM; i++ )
{
if( m_ManufactureList[i].CardData.CardID != 0 )
{
bRet = ManufactureFile.WriteItem( j+1, &m_ManufactureList[i] );
if( bRet == FALSE ) break;
j++;
}
}
for( int i=j; i<MAX_ITEM; i++ )
{
ManufactureFile.WriteItem( i+1, &CardData );
}
FileHeader.FileSign = 0xBBBB;
FileHeader.FileSize = RELATION_FILE_SIZE;
FileHeader.ItemCount= j;
bRet = ManufactureFile.WriteItem( 0, &FileHeader );
bRet = GroupFile.OpenFile( FILE_NAME_GROUP, &IsNewFile );
if( bRet == FALSE ) break;
j = 0;
for( int i=0; i<MAX_ITEM; i++ )
{
if( m_GroupList[i].CardData.CardID != 0 )
{
bRet = GroupFile.WriteItem( j+1, &m_GroupList[i] );
if( bRet == FALSE ) break;
j++;
}
}
for( int i=j; i<MAX_ITEM; i++ )
{
GroupFile.WriteItem( i+1, &CardData );
}
FileHeader.FileSign = 0xCCCC;
FileHeader.FileSize = RELATION_FILE_SIZE;
FileHeader.ItemCount= j;
bRet = GroupFile.WriteItem( 0, &FileHeader );
} while( 0 );
}
BOOL CTemperatureApp::GetCardProductName(U32 CardID, char** ppStr )
{
BOOL bRet = FALSE;
for( int i=0; i<m_nCurrentProductListCount+1; i++ )
{
if( CardID == m_ProductList[i].CardData.CardID )
{
bRet = TRUE;
*ppStr = (char*)m_ProductList[i].CardData.CardName;
break;
}
}
return bRet;
}
BOOL CTemperatureApp::GetCardManufactureName(U32 CardID, char** ppStr )
{
BOOL bRet = FALSE;
for( int i=0; i<m_nCurrentManufactureListCount+1; i++ )
{
if( CardID == m_ManufactureList[i].CardData.CardID )
{
bRet = TRUE;
*ppStr = (char*)m_ManufactureList[i].CardData.CardName;
break;
}
}
return bRet;
}
BOOL CTemperatureApp::GetCardGroup(U32 CardID, char** ppStr)
{
BOOL bRet = FALSE;
for( int i=0; i<m_nCurrentGroupListCount+1; i++ )
{
if( CardID == m_GroupList[i].CardData.CardID )
{
bRet = TRUE;
*ppStr = (char*)m_GroupList[i].CardData.CardName;
break;
}
}
return bRet;
}
BOOL CTemperatureApp::SetCardProductName(U32 CardID, const char* pStr )
{
BOOL bRet = FALSE;
for( int i=0; i<m_nCurrentProductListCount; i++ )
{
if( CardID == m_ProductList[i].CardData.CardID )
{
bRet = TRUE;
break;
}
}
if( bRet == FALSE )
{
if( m_nCurrentProductListCount < MAX_ITEM - 1 )
{
m_ProductList[m_nCurrentProductListCount].CardData.CardID = CardID;
strcpy( (char*)m_ProductList[m_nCurrentProductListCount].CardData.CardName,
pStr );
m_nCurrentProductListCount++;
}
}
return bRet;
}
BOOL CTemperatureApp::SetCardManufactureName(U32 CardID, char* pStr )
{
BOOL bRet = FALSE;
for( int i=0; i<m_nCurrentManufactureListCount; i++ )
{
if( CardID == m_ManufactureList[i].CardData.CardID )
{
bRet = TRUE;
break;
}
}
if( bRet == FALSE )
{
if( m_nCurrentManufactureListCount < MAX_ITEM - 1 )
{
m_ManufactureList[m_nCurrentManufactureListCount].CardData.CardID = CardID;
strcpy( (char*)m_ManufactureList[m_nCurrentManufactureListCount].CardData.CardName,
pStr );
}
m_nCurrentManufactureListCount++;
}
return bRet;
}
BOOL CTemperatureApp::SetCardGroup(U32 CardID, char* pStr)
{
BOOL bRet = FALSE;
for( int i=0; i<m_nCurrentGroupListCount; i++ )
{
if( CardID == m_GroupList[i].CardData.CardID )
{
bRet = TRUE;
break;
}
}
if( bRet == FALSE )
{
if( m_nCurrentGroupListCount < MAX_ITEM - 1 )
{
m_GroupList[m_nCurrentGroupListCount].CardData.CardID = CardID;
strcpy( (char*)m_GroupList[m_nCurrentGroupListCount].CardData.CardName,
pStr );
}
m_nCurrentGroupListCount++;
}
return bRet;
}
BOOL CTemperatureApp::AddLogData( U32 CardID, LOG_DATA_MEM* pData )
{
BOOL bRet = FALSE;
int nIndex = 0;
for( int i=0; i<m_nLogDataListCount; i++ )
{
if( CardID == m_LogDataList->CardID )
{
bRet = TRUE;
nIndex = i;
break;
}
}
if( bRet == FALSE )
{
nIndex = m_nLogDataListCount;
m_nLogDataListCount++;
}
m_LogDataList[nIndex].CardID = CardID;
m_LogDataList[nIndex].ExpirationData = pData->ExpirationData;
m_LogDataList[nIndex].ManufactureDate = pData->ManufactureDate;
m_LogDataList[nIndex].ValGroup = pData->ValGroup;
m_LogDataList[nIndex].ValManufacture = pData->ValManufacture;
m_LogDataList[nIndex].ValProduct = pData->ValProduct;
return TRUE;
}
void CTemperatureApp::InitLogDataList()
{
BOOL bRet;
CTFile DataFile;
int j = 0;
do
{
BOOL IsNewFile;
PRO_FILE_HEADER FileHeader;
bRet = DataFile.OpenFile( FILE_NAME_LOG, &IsNewFile );
if( bRet == FALSE ) break;
if( IsNewFile == FALSE )
{
bRet = DataFile.GetFileHeader( &FileHeader );
if( bRet == FALSE ) break;
j = 0;
for( unsigned int i=0; i<MAX_ITEM; i++ )
{
DataFile.GetItem( i+1, &m_LogDataList[j] );
if( m_LogDataList[j].CardID != 0 )
{
j++;
}
}
m_nLogDataListCount = j;
}
else
{
m_nLogDataListCount = 0;
}
}while(0);
}
void CTemperatureApp::WriteLogDataToFile()
{
BOOL bRet;
CTFile DataFile;
int j = 0;
do
{
BOOL IsNewFile;
PRO_FILE_HEADER FileHeader;
bRet = DataFile.OpenFile( FILE_NAME_LOG, &IsNewFile );
if( bRet == FALSE ) break;
j = 0;
for( int i=0; i<MAX_ITEM; i++ )
{
if( m_LogDataList[i].CardID != 0 )
{
bRet = DataFile.WriteItem( j+1, &m_LogDataList[i] );
if( bRet == FALSE ) break;
j++;
}
}
memset( &FileHeader, 0, sizeof(FileHeader) );
for( int i=j; i<MAX_ITEM; i++ )
{
DataFile.WriteItem( i+1, &FileHeader );
}
}while(0);
}
int CTemperatureApp::ExitInstance()
{
//WriteNameListToFile();
WriteLogDataToFile();
return CWinApp::ExitInstance();
}
void CTemperatureApp::OnMenuSetting()
{
CDlgSet dlg;
dlg.SetPort( m_Port - 1 );
dlg.SetLang( m_Lang );
int nRet = dlg.DoModal();
if( nRet == 0x01 )
{
m_Port = dlg.GetPort() + 1;
m_Lang = dlg.GetLang();
WriteComLangToFile();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -