MainFrm.cpp
资源名称:GPRS开发包.rar [点击查看]
上传用户:lmzg333
上传日期:2013-04-15
资源大小:376k
文件大小:26k
源码类别:
通讯/手机编程
开发平台:
Visual C++
- // MainFrm.cpp : implementation of the CMainFrame class
- //
- #include "stdafx.h"
- #include "vc_demo.h"
- #include "time.h"
- #include "SettingDlg.h"
- #include "senddatadlg.h"
- #include "WordThread.h"
- #include "AddUserDlg1.h"
- #include "MainFrm.h"
- #include "vc_demoView.h"
- #include "wcomm_dll.h"
- #include "winsock2.h"
- #include "GPRS_SMM.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- #define NEWMENUITEM WM_USER+0x13
- /*
- int g_nCount = 0;
- UINT pfnReadData(LPVOID pParam)
- {
- char mess[512];
- data_record dr;
- CMainFrame* pt = (CMainFrame *)pParam;
- g_nCount = 0;
- SetWorkMode(1); //0-use Window Messge, nonblock 1-block mode
- start_gprs_server((HWND)0x01,0x01,5003,mess);
- pt->AddTextToEditView(mess);
- while(g_nCount<10)//for (;;)
- {
- if (0 == do_read_proc(&dr,mess,true))
- {
- if (dr.m_data_len>=0)
- pt->AddTextToEditView(dr.m_userid);
- if (dr.m_data_len>0)
- pt->AddTextToEditView(dr.m_data_buf);
- }
- Sleep(20);
- }
- stop_gprs_server(mess);
- pt->AddTextToEditView(mess);
- return 1;
- }
- */
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame
- IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
- BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
- //{{AFX_MSG_MAP(CMainFrame)
- ON_WM_CREATE()
- ON_COMMAND(ID_MICLEAR, OnMiclear)
- ON_COMMAND(ID_MIOFFLINE, OnMioffline)
- ON_COMMAND(ID_MIREFRESHTABLE, OnMirefreshtable)
- ON_COMMAND(ID_MISENDDATA, OnMisenddata)
- ON_COMMAND(ID_MISTARTSERVICE, OnMistartservice)
- ON_COMMAND(ID_MISTOPSERVICE, OnMistopservice)
- ON_COMMAND(ID_QUIT, OnQuit)
- ON_WM_CLOSE()
- ON_MESSAGE(RV_MESS,ProcessRvData)
- ON_COMMAND(ID_MIANSWER, OnMianswer)
- ON_COMMAND(ID_MISHOWDATA, OnMishowdata)
- ON_COMMAND(ID_SHOWMENU, OnShowmenu)
- ON_COMMAND(ID_HELPCONTENT, OnHelpcontent)
- ON_WM_TIMER()
- ON_UPDATE_COMMAND_UI(ID_MISTARTSERVICE, OnUpdateMistartservice)
- ON_UPDATE_COMMAND_UI(ID_MIOFFLINE, OnUpdateMistopservice)
- ON_UPDATE_COMMAND_UI(ID_MIANSWER, OnUpdateMianswer)
- ON_COMMAND(ID_MISERVERSETTING, OnMiserversetting)
- ON_UPDATE_COMMAND_UI(ID_SHOWMENU, OnUpdateShowmenu)
- ON_COMMAND(ID_MIOFFLINEALL, OnMiofflineall)
- ON_COMMAND(ID_MIVIEWWORD, OnMiviewword)
- ON_UPDATE_COMMAND_UI(ID_MIVIEWWORD, OnUpdateMiviewword)
- ON_COMMAND(ID_USERINFOIN, OnUserinfoin)
- ON_COMMAND(ID_USERINFOOUT, OnUserinfoout)
- ON_COMMAND(ID_MENUSMSSTART, OnMenusmsstart)
- ON_COMMAND(ID_MENUSMSEXIT, OnMenusmsexit)
- ON_COMMAND(ID_Adduser, OnAdduser)
- ON_COMMAND(ID_DELETE_USER, OnDeleteUser)
- ON_UPDATE_COMMAND_UI(ID_Adduser, OnUpdateAdduser)
- ON_UPDATE_COMMAND_UI(ID_DELETE_USER, OnUpdateDeleteUser)
- ON_UPDATE_COMMAND_UI(ID_USERINFOIN, OnUpdateUserinfoin)
- ON_UPDATE_COMMAND_UI(ID_USERINFOOUT, OnUpdateUserinfoout)
- ON_COMMAND(ID_DISCONNECT_PPP, OnDisconnectPpp)
- ON_UPDATE_COMMAND_UI(ID_DISCONNECT_PPP, OnUpdateDisconnectPpp)
- ON_UPDATE_COMMAND_UI(ID_MIREFRESHTABLE, OnUpdateMistopservice)
- ON_UPDATE_COMMAND_UI(ID_MISENDDATA, OnUpdateMistopservice)
- ON_UPDATE_COMMAND_UI(ID_MISTOPSERVICE, OnUpdateMistopservice)
- ON_UPDATE_COMMAND_UI(ID_MIOFFLINEALL, OnUpdateMistopservice)
- ON_COMMAND(ID_STOP_TO_SEND, OnStopToSend)
- ON_UPDATE_COMMAND_UI(ID_STOP_TO_SEND, OnUpdateStopToSend)
- ON_COMMAND(ID_START_TO_SEND, OnStartToSend)
- ON_UPDATE_COMMAND_UI(ID_START_TO_SEND, OnUpdateStartToSend)
- ON_COMMAND(ID_DISCARD_DATA, OnDiscardData)
- ON_UPDATE_COMMAND_UI(ID_DISCARD_DATA, OnUpdateDiscardData)
- //}}AFX_MSG_MAP
- ON_UPDATE_COMMAND_UI_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, OnUpdateViewStyles)
- ON_COMMAND_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, OnViewStyle)
- ON_MESSAGE(ID_MISENDDATA,OnMisenddata)
- END_MESSAGE_MAP()
- static UINT indicators[] =
- {
- ID_SEPARATOR,
- ID_SEPARATOR,
- ID_SEPARATOR
- // status line indicator
- //ID_INDICATOR_CAPS,
- //ID_INDICATOR_NUM,
- //ID_INDICATOR_SCRL,
- //0x1234
- };
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame construction/destruction
- CMainFrame::CMainFrame()
- {
- // TODO: add member initialization code here
- m_bAutoMenuEnable=false;
- this->m_bServerRunning=false;
- this->m_bAnswer=FALSE;
- this->m_viewword=TRUE;
- memset(this->m_userid,0x00,12);
- this->m_IsAdduserDlg =FALSE;
- init_option(&m_option);
- }
- CMainFrame::~CMainFrame()
- {
- }
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
- return -1;
- if (!m_wndMenuBar.Create(this) ||
- !m_wndMenuBar.LoadMenuBar(IDR_MAINFRAME))
- {
- TRACE0("Failed to create toolbarn");
- return -1; // faile to create
- }
- if (!m_wndToolBar.CreateEx(this,
- TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_LIST,
- WS_CHILD | WS_VISIBLE | CBRS_TOP
- | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY
- | CBRS_SIZE_DYNAMIC
- )
- || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
- {
- TRACE0("Failed to create toolbarn");
- return -1; // fail to create
- }
- if (!m_wndStatusBar.Create(this) ||
- !m_wndStatusBar.SetIndicators(indicators,
- sizeof(indicators)/sizeof(UINT)))
- {
- TRACE0("Failed to create status barn");
- return -1; // fail to create
- }
- // TODO: Delete these three lines if you don't want the toolbar to
- // be dockable
- m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
- m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
- EnableDocking(CBRS_ALIGN_ANY);
- DockControlBar(&m_wndMenuBar);
- DockControlBar(&m_wndToolBar);
- SetToolBarStyle();
- SetStatusBarStyle();
- AddToSysMenu();
- return 0;
- }
- BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
- CCreateContext* pContext)
- {
- // create splitter window
- if (!m_wndSplitter.CreateStatic(this, 1, 2))
- return FALSE;
- if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(130, 100), pContext))
- {
- m_wndSplitter.DestroyWindow();
- return FALSE;
- }
- if (!m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_VISIBLE | WS_CHILD | WS_BORDER,m_wndSplitter.IdFromRowCol(0,1)))
- return FALSE;
- if (!m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CVc_demoView), CSize(100, 200), pContext) ||
- !m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CBottomEditView), CSize(100, 100), pContext))
- {
- m_wndSplitter2.DestroyWindow();
- return FALSE;
- }
- return TRUE;
- }
- BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
- {
- if( !CFrameWnd::PreCreateWindow(cs) )
- return FALSE;
- // TODO: Modify the Window class or styles here by modifying
- // the CREATESTRUCT cs
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame diagnostics
- #ifdef _DEBUG
- void CMainFrame::AssertValid() const
- {
- CFrameWnd::AssertValid();
- }
- void CMainFrame::Dump(CDumpContext& dc) const
- {
- CFrameWnd::Dump(dc);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame message handlers
- CVc_demoView* CMainFrame::GetRightPane()
- {
- CWnd* pWnd = m_wndSplitter2.GetPane(0, 0);
- CVc_demoView* pView = DYNAMIC_DOWNCAST(CVc_demoView, pWnd);
- return pView;
- }
- CLeftView* CMainFrame::GetLeftPane()
- {
- CWnd* pWnd = m_wndSplitter.GetPane(0, 0);
- CLeftView* pView = DYNAMIC_DOWNCAST(CLeftView, pWnd);
- return pView;
- }
- CBottomEditView* CMainFrame::GetBottompane()
- {
- CWnd* pWnd = m_wndSplitter2.GetPane(1, 0);
- CBottomEditView* pView = DYNAMIC_DOWNCAST(CBottomEditView, pWnd);
- return pView;
- }
- void CMainFrame::OnUpdateViewStyles(CCmdUI* pCmdUI)
- {
- // TODO: customize or extend this code to handle choices on the
- // View menu.
- CVc_demoView* pView = GetRightPane();
- // if the right-hand pane hasn't been created or isn't a view,
- // disable commands in our range
- if (pView == NULL)
- pCmdUI->Enable(FALSE);
- else
- {
- DWORD dwStyle = pView->GetStyle() & LVS_TYPEMASK;
- // if the command is ID_VIEW_LINEUP, only enable command
- // when we're in LVS_ICON or LVS_SMALLICON mode
- if (pCmdUI->m_nID == ID_VIEW_LINEUP)
- {
- if (dwStyle == LVS_ICON || dwStyle == LVS_SMALLICON)
- pCmdUI->Enable();
- else
- pCmdUI->Enable(FALSE);
- }
- else
- {
- // otherwise, use dots to reflect the style of the view
- pCmdUI->Enable();
- BOOL bChecked = FALSE;
- switch (pCmdUI->m_nID)
- {
- case ID_VIEW_DETAILS:
- bChecked = (dwStyle == LVS_REPORT);
- break;
- case ID_VIEW_SMALLICON:
- bChecked = (dwStyle == LVS_SMALLICON);
- break;
- case ID_VIEW_LARGEICON:
- bChecked = (dwStyle == LVS_ICON);
- break;
- case ID_VIEW_LIST:
- bChecked = (dwStyle == LVS_LIST);
- break;
- default:
- bChecked = FALSE;
- break;
- }
- pCmdUI->SetRadio(bChecked ? 1 : 0);
- }
- }
- }
- void CMainFrame::OnViewStyle(UINT nCommandID)
- {
- // TODO: customize or extend this code to handle choices on the
- // View menu.
- CVc_demoView* pView = GetRightPane();
- // if the right-hand pane has been created and is a CVc_demoView,
- // process the menu commands...
- if (pView != NULL)
- {
- DWORD dwStyle = -1;
- switch (nCommandID)
- {
- case ID_VIEW_LINEUP:
- {
- // ask the list control to snap to grid
- CListCtrl& refListCtrl = pView->GetListCtrl();
- refListCtrl.Arrange(LVA_SNAPTOGRID);
- }
- break;
- // other commands change the style on the list control
- case ID_VIEW_DETAILS:
- dwStyle = LVS_REPORT;
- break;
- case ID_VIEW_SMALLICON:
- dwStyle = LVS_SMALLICON;
- break;
- case ID_VIEW_LARGEICON:
- dwStyle = LVS_ICON;
- break;
- case ID_VIEW_LIST:
- dwStyle = LVS_LIST;
- break;
- }
- // change the style; window will repaint automatically
- if (dwStyle != -1)
- pView->ModifyStyle(LVS_TYPEMASK, dwStyle);
- }
- }
- void CMainFrame::SetToolBarStyle()
- {
- CImageList img;
- m_wndToolBar.GetToolBarCtrl().SetButtonWidth(40, 100);
- m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
- //m_wndToolBar.SetButtonStyle(8,TBSTYLE_CHECK);
- m_wndToolBar.SetButtonStyle(4,m_wndToolBar.GetButtonStyle(4)
- | TBSTYLE_DROPDOWN);
- img.Create(IDB_HOTTOOLBAR, 32, 0, RGB(255, 0, 255));
- m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
- img.Detach();
- img.Create(IDB_COLDTOOLBAR, 32, 0, RGB(255, 0, 255));
- m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
- img.Detach();
- for(int i = 0; i < m_wndToolBar.GetCount(); i++)
- {
- UINT id = m_wndToolBar.GetItemID(i);
- CString s;
- if (!s.LoadString(id))
- continue;
- int j = s.Find(_T('n'));
- if(j < 0) continue;
- s = s.Right(s.GetLength() - j - 1);
- m_wndToolBar.SetButtonText(i,s);
- }
- CRect rect;
- m_wndToolBar.GetItemRect(0,&rect);
- m_wndToolBar.SetSizes(rect.Size(),CSize(32,32));
- }
- void CMainFrame::OnMiclear()
- {
- // TODO: Add your command handler code here
- CEdit &ce=this->GetBottompane()->GetEditCtrl();
- ce.SetWindowText("");
- }
- void CMainFrame::OnMioffline()
- {
- char buf[64];
- if (11==strlen(m_userid))
- {
- sprintf(buf,"确认使 %s 下线吗?",this->m_userid);
- if (IDYES==MessageBox(buf,"确认",MB_YESNO | MB_ICONINFORMATION))
- {
- do_close_one_user((unsigned char *)m_userid,NULL);
- this->RefreshUserTable();
- }
- }
- }
- void CMainFrame::OnMirefreshtable()
- {
- this->RefreshUserTable();
- }
- void CMainFrame::OnMisenddata()
- {
- CTreeCtrl &tc=this->GetLeftPane()->GetTreeCtrl();
- CSendDataDlg sdd(NULL,&tc);
- sdd.SetUserId(this->m_userid);
- sdd.DoModal();
- }
- void CMainFrame::OnMistartservice()
- {
- char mess[512];
- int iResult;
- //AddFilterIP(inet_addr("192.168.0.243"));
- //SetCustomIP(inet_addr("192.168.0.1"));
- /*iResult=start_gprs_server(this->m_hWnd,
- RV_MESS,
- m_option.m_iServerPort,
- mess);*/
- iResult=start_net_service(this->m_hWnd,
- RV_MESS,
- m_option.m_iServerPort,
- mess);
- if (iResult>=0)
- {
- if ((m_option.m_bSysAutoPoll) && (m_option.m_iPollTimeInterval>0) && (m_option.m_iOffLineTime>0))
- this->SetTimer(1,(m_option.m_iPollTimeInterval)*1000,NULL);
- m_bServerRunning=true;
- }
- AddTextToEditView(mess,false);
- //AfxBeginThread(RUNTIME_CLASS(CWordThread));
- }
- void CMainFrame::OnMistopservice()
- {
- // TODO: Add your command handler code here
- char mess[512];
- if (m_option.m_bSysAutoPoll)
- this->KillTimer(1);
- do_close_all_user(mess);
- //this->AddTextToEditView(mess);
- //stop_gprs_server(mess);
- stop_net_service(mess);
- this->AddTextToEditView(mess,true);
- this->m_bServerRunning=false;
- this->GetRightPane()->ClearAllItem();
- this->GetLeftPane()->ClearAllItem();
- }
- void CMainFrame::OnQuit()
- {
- // TODO: Add your command handler code here
- this->OnClose();
- }
- void CMainFrame::OnClose()
- {
- // TODO: Add your message handler code here and/or call default
- if (IDYES==MessageBox("确定要退出吗?","退出",MB_YESNO | MB_ICONINFORMATION))
- {
- if (m_bServerRunning)
- {
- this->OnMistopservice();
- }
- CFrameWnd::OnClose();
- }
- }
- void CMainFrame::ProcessRvData(WPARAM wparam, LPARAM lparam)
- {
- data_record dr;
- static char buf[2048];
- if (do_read_proc(&dr,NULL,m_bAnswer)>=0)
- {
- if (dr.m_data_len>0)
- {
- //whether show head or not
- if (m_option.m_bShowHead)
- {
- sprintf(buf,"rnuserid:%s,time:%s,len:%d",
- dr.m_userid,dr.m_recv_date,dr.m_data_len);
- this->AddTextToEditView(buf);
- }
- //Hex or not to show data
- if (m_option.m_bHexShow)
- {
- this->PrintData(dr.m_data_buf, dr.m_data_len);
- }
- else
- {
- this->AddTextToEditView(dr.m_data_buf);
- }
- }
- else //data_len=0,it means logon or logout
- {
- this->RefreshUserTable();
- if (0x01==dr.m_data_type)
- sprintf(buf,"%s 登录",dr.m_userid);
- else if (0x02==dr.m_data_type)
- sprintf(buf,"%s 注销",dr.m_userid);
- else if (0x0d==dr.m_data_type)
- sprintf(buf,"%s 参数设置成功",dr.m_userid);
- else if (0x0b==dr.m_data_type)
- sprintf(buf,"%s 参数查询成功",dr.m_userid);
- else if (0x06==dr.m_data_type)
- {
- sprintf(buf,"%s 断开PPP连接成功",dr.m_userid);
- delete_one_user((unsigned char *)dr.m_userid,NULL);
- this->RefreshUserTable();
- }
- else if (0x07==dr.m_data_type)
- sprintf(buf,"%s 停止向DSC发送数据",dr.m_userid);
- else if (0x08==dr.m_data_type)
- sprintf(buf,"%s 允许向DSC发送数据",dr.m_userid);
- else if (0x0A==dr.m_data_type)
- sprintf(buf,"%s 丢弃用户数据",dr.m_userid);
- else
- sprintf(buf,"%s",dr.m_userid);
- this->m_wndStatusBar.SetPaneText(1,buf,TRUE);
- }
- }
- }
- void CMainFrame::AddTextToEditView(char * szContent,bool newline)
- {
- if (szContent)
- {
- CString text;
- CEdit &ce=this->GetBottompane()->GetEditCtrl();
- if (ce.GetLineCount()>100)
- ce.SetWindowText("");
- ce.GetWindowText(text);
- if (newline)
- ce.SetWindowText(text+"rn"+szContent);
- else
- ce.SetWindowText(text+szContent);
- ce.LineScroll(ce.GetLineCount());
- }
- }
- void CMainFrame::AddTextToEditView(int iContent,bool newline)
- {
- CString text;
- char buf[32];
- sprintf(buf,"%d",iContent);
- CEdit &ce=this->GetBottompane()->GetEditCtrl();
- if (ce.GetLineCount()>100)
- ce.SetWindowText("");
- ce.GetWindowText(text);
- if (newline)
- ce.SetWindowText(text+"rn"+buf);
- else
- ce.SetWindowText(text+buf);
- ce.LineScroll(ce.GetLineCount());
- }
- void CMainFrame::RefreshUserTable(int flag)
- {
- int i,iMaxDTUAmount;
- user_info ui;
- bool bShow;
- time_t t_now,t_update;
- this->GetRightPane()->ClearAllItem();
- this->GetLeftPane()->ClearAllItem();
- iMaxDTUAmount=get_max_user_amount();
- for (i=0;i<iMaxDTUAmount;i++)
- {
- ui.m_status=0;
- get_user_at(i,&ui);
- if (1==ui.m_status)
- {
- bShow=true;
- //flag=1 means refresh usertable , 0 means not
- if ((m_option.m_bSysAutoPoll) && (1==flag))
- {
- /* if type of update time is ulong then use */
- /* the following code */
- t_now=time(NULL);
- t_update=*((time_t *)ui.m_update_time);
- if ((t_now-t_update)>=m_option.m_iOffLineTime)
- {
- do_close_one_user((unsigned char *)ui.m_userid,NULL);
- bShow=false;
- }
- /* if type of update time is char * then use */
- /* following code */
- /*
- if (this->CompareDateTimeAndNow(ui.m_update_time)>=m_option.m_iOffLineTime)
- {
- do_close_one_user((unsigned char *)ui.m_userid,NULL);
- bShow=false;
- }
- */
- }
- if (bShow)
- {
- //add to ListView of right top
- this->GetRightPane()->InsertUserItem(
- ui.m_userid,ui.m_logon_date,
- ui.m_update_time,ui.m_local_addr,
- ui.m_local_port,ui.m_sin_addr,ui.m_sin_port);
- //add to TreeView of left
- this->GetLeftPane()->InsertUserItem(ui.m_userid);
- }
- }
- }
- this->GetLeftPane()->GetTreeCtrl().Expand(
- this->GetLeftPane()->GetTreeCtrl().GetFirstVisibleItem(),TVE_EXPAND);
- }
- void CMainFrame::OnMianswer()
- {
- m_bAnswer=!m_bAnswer;
- }
- void CMainFrame::OnMiserversetting()
- {
- this->GetPara(0);
- }
- void CMainFrame::OnMishowdata()
- {
- this->GetPara(1);
- }
- void CMainFrame::OnShowmenu()
- {
- ShowControlBar(&m_wndMenuBar,!m_wndMenuBar.IsWindowVisible(),FALSE);
- m_wndToolBar.SetButtonStyle(6,TBSTYLE_BUTTON);
- }
- void CMainFrame::OnHelpcontent()
- {
- MessageBox("深圳市宏电技术开发有限公司");
- }
- void CMainFrame::SetStatusBarStyle()
- {
- m_wndStatusBar.SetPaneInfo(0,ID_SEPARATOR,SBPS_STRETCH,100);
- m_wndStatusBar.SetPaneText(1,"",TRUE);
- //m_wndStatusBar.SetPaneText(2,"GPRS VC DEMO 3.0 宏电技术",TRUE);
- m_wndStatusBar.SetPaneText(2,"DSC API演示程序 2.1 版(VC++6.0)",TRUE);
- }
- void CMainFrame::OnTimer(UINT nIDEvent)
- {
- // TODO: Add your message handler code here and/or call default
- if (1==nIDEvent)
- this->RefreshUserTable(1);
- CFrameWnd::OnTimer(nIDEvent);
- }
- void CMainFrame::PrintData(char *szData, int datalen)
- {
- char buf[128];
- int i,j,len,totallen;
- totallen=datalen;//strlen(szData); 原来的错误
- for (i=0;i<totallen;i+=16)
- {
- len=(totallen-i)>16?16:(totallen-i);
- sprintf(buf,"%04X : ",i);
- for (j=0;j<len;j++)
- {
- sprintf(buf+9+j*3,"%02X ",szData[i+j]&0xFF);
- buf[64+j]=szData[i+j];
- }
- memset(buf+len*3+9,' ',64-len*3-9);
- buf[64+len]=' ';
- this->AddTextToEditView(buf);
- }
- }
- void CMainFrame::OnUpdateMistartservice(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(!m_bServerRunning);
- }
- void CMainFrame::OnUpdateMistopservice(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnUpdateMianswer(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->SetCheck(m_bAnswer);
- }
- void CMainFrame::init_option(LPOPTION pOption)
- {
- pOption->m_bSaveToLog=FALSE;
- pOption->m_iLogItemCount=200;
- pOption->m_bShowDataHead=TRUE;
- pOption->m_iServerPort=30243;
- pOption->m_bSysAutoPoll=TRUE;
- pOption->m_iPollTimeInterval=30;
- pOption->m_iOffLineTime=120;
- pOption->m_bShowHead=TRUE;
- pOption->m_bHexShow=TRUE;
- }
- void CMainFrame::GetPara(int tabindex)
- {
- CSettingDlg sdlg(NULL,tabindex,!m_bServerRunning);
- sdlg.m_bSaveToLog=m_option.m_bSaveToLog;
- sdlg.m_iLogItemCount.Format("%d",m_option.m_iLogItemCount);
- sdlg.m_iOffLineTime.Format("%d",m_option.m_iOffLineTime);
- sdlg.m_iPollTime.Format("%d",m_option.m_iPollTimeInterval);
- sdlg.m_iServerPort.Format("%d",m_option.m_iServerPort);
- sdlg.m_bSysAutoPoll=m_option.m_bSysAutoPoll;
- sdlg.m_bShowHead=m_option.m_bShowHead;
- sdlg.m_bHexShow=m_option.m_bHexShow;
- if (IDOK==sdlg.DoModal())
- {
- m_option.m_bSaveToLog=sdlg.m_bSaveToLog;
- m_option.m_iLogItemCount=atoi(sdlg.m_iLogItemCount.GetBuffer(0));
- m_option.m_iOffLineTime=atoi(sdlg.m_iOffLineTime.GetBuffer(0));
- m_option.m_iPollTimeInterval=atoi(sdlg.m_iPollTime.GetBuffer(0));
- m_option.m_iServerPort=atoi(sdlg.m_iServerPort.GetBuffer(0));
- m_option.m_bSysAutoPoll=sdlg.m_bSysAutoPoll;
- m_option.m_bShowHead=sdlg.m_bShowHead;
- m_option.m_bHexShow=sdlg.m_bHexShow;
- }
- }
- void CMainFrame::SetUserId(char *szUserId)
- {
- strncpy(this->m_userid,szUserId,11);
- this->m_userid[11]=' ';
- }
- void CMainFrame::OnUpdateShowmenu(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_wndMenuBar.IsWindowVisible());
- }
- void CMainFrame::OnMiofflineall()
- {
- do_close_all_user(NULL);
- this->RefreshUserTable();
- }
- void CMainFrame::OnMiviewword()
- {
- // TODO: Add your command handler code here
- if (!IsWindowVisible())
- return;
- CRect rect;
- m_viewword=!m_viewword;
- m_wndToolBar.SetShowWord(m_viewword);
- m_wndToolBar.GetItemRect(0,&rect);
- if (m_viewword)
- {
- m_wndToolBar.SetSizes(CSize(SHOWTEXTLEN,rect.Size().cy),CSize(32,32));
- }
- else
- {
- m_wndToolBar.SetSizes(CSize(NOTEXTLEN,rect.Size().cy),CSize(32,32));
- }
- ShowControlBar(&m_wndToolBar,TRUE,FALSE);
- }
- void CMainFrame::OnUpdateMiviewword(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(m_wndToolBar.IsWindowVisible());
- pCmdUI->SetCheck(m_viewword);
- }
- BOOL CMainFrame::IsShowToolBarWord()
- {
- return m_viewword;
- }
- int CMainFrame::CompareDateTimeAndNow(char * szDateTime)
- {
- int nYear,nMonth,nDay,nHour,nMin,nSec;
- char temp[20];
- memset(temp,0,20);
- strncpy(temp,szDateTime,4);
- nYear = atoi(temp);
- memset(temp,0,20);
- strncpy(temp,&(szDateTime[5]),2);
- nMonth = atoi(temp);
- memset(temp,0,20);
- strncpy(temp,&(szDateTime[8]),2);
- nDay = atoi(temp);
- memset(temp,0,20);
- strncpy(temp,&(szDateTime[11]),2);
- nHour = atoi(temp);
- memset(temp,0,20);
- strncpy(temp,&(szDateTime[14]),2);
- nMin = atoi(temp);
- memset(temp,0,20);
- strncpy(temp,&(szDateTime[17]),4);
- nSec = atoi(temp);
- CTime updatetime(nYear,nMonth,nDay,nHour,nMin,nSec);
- time_t stUpdatetime = updatetime.GetTime();
- CTime currenttime = CTime::GetCurrentTime();
- return (currenttime.GetTime()-stUpdatetime);
- }
- void CMainFrame::AddToSysMenu()
- {
- CMenu *pMenu;
- pMenu=this->GetSystemMenu(FALSE);
- ASSERT(pMenu);
- pMenu->AppendMenu(MF_SEPARATOR);
- //pMenu->AppendMenu(MF_STRING,NEWMENUITEM,"显示工具栏");
- pMenu->AppendMenu(MF_STRING,ID_SHOWMENU,"显示/隐藏菜单栏(&U)");
- pMenu->AppendMenu(MF_STRING,ID_VIEW_TOOLBAR,"显示/隐藏工具栏(&T)");
- }
- LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
- {
- // TODO: Add your specialized code here and/or call the base class
- if (WM_SYSCOMMAND==message)
- {
- if (ID_VIEW_TOOLBAR==wParam)
- {
- ShowControlBar(&m_wndToolBar,!m_wndToolBar.IsWindowVisible(),FALSE);
- return 0;
- }
- else if (ID_SHOWMENU==wParam)
- {
- ShowControlBar(&m_wndMenuBar,!m_wndMenuBar.IsWindowVisible(),FALSE);
- return 0;
- }
- }
- return CFrameWnd::WindowProc(message, wParam, lParam);
- }
- void CMainFrame::OnUserinfoin()
- {
- int i;
- int nMaxUser;
- user_info UserInfo;
- FILE *fp;
- int nBytesRead;
- fp = fopen("UserInfo.dat", "r");
- if (NULL == fp)
- {
- return;
- }
- DeleteAllUser();
- nMaxUser = get_max_user_amount();
- for (i=0; i<nMaxUser; i++)
- {
- nBytesRead = fread((char *)&UserInfo, 1, sizeof(user_info), fp);
- *((time_t *)UserInfo.m_update_time) = time(NULL);
- if (nBytesRead < sizeof(user_info))
- {
- break;
- }
- AddOneUser(&UserInfo);
- }
- fclose(fp);
- RefreshUserTable(0);
- }
- void CMainFrame::OnUserinfoout()
- {
- int i;
- int nMaxUser;
- user_info UserInfo;
- FILE *fp;
- fp = fopen("UserInfo.dat", "w");
- if (NULL == fp)
- {
- return;
- }
- nMaxUser = get_max_user_amount();
- for (i=0; i<nMaxUser; i++)
- {
- get_user_at(i, &UserInfo);
- if (1 == UserInfo.m_status)
- {
- fwrite((char *)&UserInfo, 1, sizeof(user_info), fp);
- }
- }
- fclose(fp);
- }
- void CMainFrame::OnMenusmsstart()
- {
- // TODO: Add your command handler code here
- //需要配置波特率、数据位、停止位、校验码,其余不需配置;
- /*Test SMM call
- *Add by sea on sep 16,2003"*/
- int iResult = 0;
- DCB dcb;
- dcb.BaudRate = 115200;
- dcb.ByteSize = 8;
- dcb.StopBits = 0;//ONESTOPBITS;
- dcb.Parity = 0 ;
- iResult = SMMInit("202.96.134.133",5001,
- "COM5", &dcb,
- "13800755500","13510006407",1);
- if(iResult<0)
- AddTextToEditView("smm error",false);
- SMMSetting("10.0.0.1",5002);
- SetModemType(1);
- iResult = MakeDTUOnLine(1,"13902944285");
- // AfxBeginThread(pfnReadData,this,THREAD_PRIORITY_NORMAL);
- }
- void CMainFrame::OnMenusmsexit()
- {
- // TODO: Add your command handler code here
- // g_nCount = 200;
- SMMFree();
- }
- void CMainFrame::OnAdduser()
- {
- // TODO: Add your command handler code here
- if(!m_IsAdduserDlg)
- {
- m_IsAdduserDlg=TRUE;
- CAddUserDlg * adduserdlg=new CAddUserDlg;
- adduserdlg->Create (IDD_AddUser,this);
- adduserdlg->ShowWindow (SW_SHOW);
- }
- return;
- }
- void CMainFrame::OnDeleteUser()
- {
- // TODO: Add your command handler code here
- if (11==strlen(m_userid))
- {
- delete_one_user((unsigned char *)m_userid,NULL);
- this->RefreshUserTable();
- }
- }
- void CMainFrame::OnUpdateAdduser(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnUpdateDeleteUser(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnUpdateUserinfoin(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnUpdateUserinfoout(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnDisconnectPpp()
- {
- // TODO: Add your command handler code here
- if (11==strlen(m_userid))
- {
- do_disconnect_ppp_link((unsigned char *)m_userid,NULL);
- }
- }
- void CMainFrame::OnUpdateDisconnectPpp(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnStopToSend()
- {
- // TODO: Add your command handler code here
- if (11==strlen(m_userid))
- {
- do_stop_send_data((unsigned char *)m_userid,NULL);
- }
- }
- void CMainFrame::OnUpdateStopToSend(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnStartToSend()
- {
- // TODO: Add your command handler code here
- if (11==strlen(m_userid))
- {
- do_start_send_data((unsigned char *)m_userid,NULL);
- }
- }
- void CMainFrame::OnUpdateStartToSend(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }
- void CMainFrame::OnDiscardData()
- {
- // TODO: Add your command handler code here
- if (11==strlen(m_userid))
- {
- do_flush_cache_data((unsigned char *)m_userid,NULL);
- }
- }
- void CMainFrame::OnUpdateDiscardData(CCmdUI* pCmdUI)
- {
- // TODO: Add your command update UI handler code here
- pCmdUI->Enable(m_bServerRunning);
- }