⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phonepcdlg.cpp

📁 手机串口通信设置程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// PhonePCDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PhonePC.h"
#include "PhonePCDlg.h"
//#include "SampleDialog.h"
#include "ReciveDialog.h"
#include "comSetting.h"
#include "SerialPort.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define TIMER_CHECK_DIALOG  100
#define TIMER_CHECKING		101

#define  WM_USER_SEND_PHONE		(WM_USER+220)

////////////////////////////////////////////////////////////////////////
CPhonePCDlg  *pDlg;
////////////////////////////////////////////////////////////////////////
//=================================================================
// members for SYS
CString m_strSYS_0002_nAutoDely; // "01" [0,9]
CString m_strSYS_0004_sSMSCenter; // "..." [1,16]
CString m_strSYS_4000_bNotLocalAddZero; // 0/1
CString m_strSYS_0005_bForbidLongDistanceCall; // 00/01
CString m_strSYS_0006_sLCDContrast;
//=================================================================
// members for LOCAL
CString m_strLOCAL_1000_strLocalZone; // "..." [0,6]
CString m_strLOCAL_0003_nLocalMethod; // 00/01/02
//=================================================================
// members for PINSIM
CString m_strPINSIM_6000_bAutoLockPin; // 0/1
CString m_strPINSIM_6001_nPinLength; // "..." [4,8]
CString m_strPINSIM_6002_strOriginalPin; // "..." [4,8]
CString m_strPINSIM_6004_strFixedPin; // "..." [4,8]
CString m_strPINSIM_6005_bUseRandomPin; // 0/1
CString m_strPINSIM_7000_bLockSim; // 0/1
CString m_strPINSIM_7001_strLockSimNum; // "..." 定长20 个字节
//=================================================================
// members for Lock
CString m_strLOCK_7002_bLockProvider; // 0/1
CString m_strLOCK_7003_nProvider; // "..." [0,1]
CString m_strLOCK_8000_bLockRegion; // 0/1
CString m_strLOCK_8002_bAutoLockRegion; // 0/1
CString m_strLOCK_8001_nRegionNum; // "..." [4,8]
CString m_strLOCK_8003_strLockRegion; // "..." [4,8]*4
//=================================================================
// members for Direct Table
CString m_AryDIRECT_2020_strDirectTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符数组 0-9,*,#
//=================================================================
// members for Forbid Table
CString m_AryFORBID_3020_strForbidTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符数组 0-9,*,#
//=================================================================
// members for REFUSE
CString m_strREFUSE_5000_bRefuseType; // 0/1
CString m_AryREFUSE_5020_strRefuseTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符数组 0-9
//=================================================================
// members for Local Mobile Sect
// int nLocalTableLength; // < 400
CStringArray m_ArySECT_4400_strLocalTable; // 字符数组 0-9,*,#
//=================================================================
// members for Local User Mobile Sect
CString m_ArySECT_4420_strUserLocalTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符数组 0-9,*,#
//=================================================================
// members for IP
CString m_AryIP_9001_strIPRuleTable[INT_INIT_LISTBOX_ITEMNUM];
// 字符数组 0-9,*,#
//=================================================================
////////////////////////////////////////////////////////////////////////
//CSerial AtCom;
CSerialPort		m_Ports;

////////////////////////////////////////////////////////////////////////
	int nComPort,nBaudrate;
BOOL m_nSysinfoCom = FALSE;
BOOL m_nLocalCom = FALSE;
BOOL m_nPinSimCom = FALSE;
int  nSendComplete = 0;
int m_nRet = 0;

/////////////////////////////////////////////////////////////////////////////
// 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)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

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
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPhonePCDlg dialog

CPhonePCDlg::CPhonePCDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CPhonePCDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPhonePCDlg)
	m_nRadioValue = -1;	
	m_LongDistance = -1;

	m_nSysinfo = CONTROL_NO;
	m_nLocal = CONTROL_NO;
	m_nPinSim = CONTROL_NO;
	m_nLockPhone = CONTROL_NO;
	m_nEnableDial = CONTROL_NO;
	m_nDisableDial = CONTROL_NO;

	
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

	pDlg = this;
	
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CPhonePCDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPhonePCDlg)
	DDX_Control(pDX, IDC_LCDCONTRAST, m_LCDCon);
	DDX_Control(pDX, IDC_EDIT_NETNUMBER, m_NetPhoneNumber);
	DDX_Control(pDX, IDC_COMBO_TIME, m_ComboDelay);
	DDX_Control(pDX, IDC_STATIC_TEXT, m_str);
	DDX_Control(pDX, IDC_TREECTR, m_TreeCtrl);
	DDX_Radio(pDX, IDC_DISTANCECALL, m_LongDistance);
	DDX_Control(pDX, IDC_GROP_BOX, m_Groupbox);
	//}}AFX_DATA_MAP
	DDX_Radio(pDX, IDC_ADDZERO, m_nRadioValue);
//	DDX_Radio(pDX,ID_RADIO_BUTTONRADOM,m_nAutoPin);
	
}

BEGIN_MESSAGE_MAP(CPhonePCDlg, CDialog)
	//{{AFX_MSG_MAP(CPhonePCDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_NOTIFY(NM_CLICK, IDC_TREECTR, OnClickTreectr)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREECTR,OnSelchanged)
    ON_CBN_SELCHANGE(ID_COMBO_WAY, OnCbnSelChange)
	ON_BN_CLICKED(IDOK, OnWritePhone)
	ON_BN_CLICKED(IDC_ADDZERO, OnAddzero)
	ON_WM_TIMER()
	ON_CBN_SELCHANGE(ID_COMBO_OPERTORNUM, OnOperSelChange)
	ON_BN_CLICKED(IDC_BT_IMPORT, OnBtImport)
	//}}AFX_MSG_MAP

	ON_MESSAGE(WM_USER_SEND_PHONE,OnSendPhone)
	
    ON_EN_CHANGE(ID_MYEDT, OnChangeEdit)

	ON_BN_CLICKED(ID_RADIO_BUTTONAUTO, OnAutoLock)
	ON_BN_CLICKED(ID_RADIO_BUTTONPIN, OnAutoLock)

	ON_BN_CLICKED(ID_RADIO_BUTTONRADOM, OnUseRandom)
	ON_BN_CLICKED(ID_RADIO_BUTTONNORADOM, OnUseRandom)
	
	ON_BN_CLICKED(ID_RADIO_BUTTONSIMPHONE, OnLockSim)
	ON_BN_CLICKED(ID_RADIO_BUTTONSIMNO, OnLockSim)

	ON_BN_CLICKED(ID_RADIOLOCKOPERATOR, OnLockProvider)
	ON_BN_CLICKED(ID_RADIOLOCKOPERATORNO, OnLockProvider)

	ON_BN_CLICKED(ID_RADIOLOCKCELL, OnLockCell)
	ON_BN_CLICKED(ID_RADIOLOCKCELLNO, OnLockCell)

	ON_MESSAGE(WM_COMM_RXCHAR, OnCommunication)	
	
//ID_RADIOLOCKCELL
//	ID_RADIOLOCKCELL
	
	
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPhonePCDlg message handlers
CImageList Cil1,Cil2;//大小图标像列表
char * CJ[12]={"系统参数","本地区号","PIN码与SIM卡","话机锁定","直拨号段","禁拨号段",
"呼入限制","本地手机号段","IP拨号设置","音频设置","提示信息","话机数据管理"};//根数据名称
char  strConfigfile[300];

BOOL CPhonePCDlg::OnInitDialog()
{

	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

//	else
//		return FALSE;
	
/////////////////////////////////////////////////////////////////////////////////////
#if 1
	Cil1.Create(16,16,ILC_COLOR,2,2);
      Cil1.Add(AfxGetApp()->LoadIcon(IDI_PM));
      Cil1.Add(AfxGetApp()->LoadIcon(IDI_CJ));
      m_TreeCtrl.SetImageList(&Cil1,TVSIL_NORMAL);//设置图象列表


	 DWORD dwStyles=GetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE);//获取树控制原风格
      dwStyles|=TVS_EDITLABELS|TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;
      SetWindowLong(m_TreeCtrl.m_hWnd,GWL_STYLE,dwStyles);//设置风格
   

//     wchar_t * CJ[4]={L"玉溪卷烟厂",L"云南卷烟厂",L"沈阳卷烟厂",L"成都卷烟厂"};//根数据名称
//      wchar_t * PM[4][5]={
      char * PM[4][5]={
    {"红梅一","红梅二","红梅三","红梅四","红梅五"},//产品数据项
    {"白梅一","白梅二","白梅三","白梅四","白梅五"},
    {"绿梅一","绿梅二","绿梅三","绿梅四","绿梅五"},
    {"青梅一","青梅二","青梅三","青梅四","青梅五"}};


      int i;
      HTREEITEM hRoot,hCur;//树控制项目句柄
      TV_INSERTSTRUCT TCItem;//插入数据项数据结构
   

//	for(i=0;i<12;i++)
//	{
      TCItem.hParent=TVI_ROOT;//增加根项
      TCItem.hInsertAfter=TVI_LAST;//在最后项之后
//      TCItem.item.mask=TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//设屏蔽
      TCItem.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;//设屏蔽


      TCItem.item.pszText="数据管理";
      TCItem.item.lParam=0;//序号
      TCItem.item.iImage=0;//正常图标
      TCItem.item.iSelectedImage=1;//选中时图标
      hRoot=m_TreeCtrl.InsertItem(&TCItem);//返回根项句柄
//	}
   

//////////////////////////////////////
//#if 0
for(i=0;i<12;i++){//增加各厂家
     TCItem.hParent=hRoot;
//	 TCItem.hParent=TVI_ROOT;
     TCItem.item.pszText=CJ[i];
     TCItem.item.lParam=(i+1)*10;//子项序号
     hCur=m_TreeCtrl.InsertItem(&TCItem);
/*     for(j=0;j<5;j++){//增加各产品
     TCItem.hParent=hCur;
     TCItem.item.pszText=PM[i][j];
     TCItem.item.lParam=(i+1)*10+(j+1);//子项序号
     m_TreeCtrl.InsertItem(&TCItem);
    }
       m_TreeCtrl.Expand(hCur,TVE_EXPAND);//展开树*/
      }

#endif

      m_TreeCtrl.Expand(hRoot,TVE_EXPAND);//展开上一级树
/////////////////////////////////////////////////////////////////////////////////////
/*	
	RECT rect,wrect;
	RECT *prect;
	CString str1 = L"系统参数";
	
	m_Groupbox.SetWindowText(str1);

	prect = &wrect;
	
	::GetWindowRect(m_Groupbox.m_hWnd,prect);				//得到主对话框的
	rect.left = (prect->right + prect->left)/2;
	rect.right =rect.left + 40;
	rect.top = (prect->bottom + prect->top)/2;
	rect.bottom = rect.top + 20;

	  m_MyEdit.CreateEx(WS_EX_CLIENTEDGE, // 3D-border外观
        _T("EDIT"), 
        NULL,
        ES_AUTOHSCROLL | ES_LEFT | ES_NOHIDESEL | WS_CHILD,
        rect, this,
        ID_MYEDT);//生成edit控件
      
     m_MyEdit.ShowWindow(SW_SHOW); //显示控件
     m_MyEdit.SetFocus(); //设置焦点

	 rect.left = (prect->right + prect->left)/2 +50;
	 rect.right =rect.left + 100;
	 rect.top = (prect->bottom + prect->top)/2;
	 rect.bottom = rect.top + 20;

	 m_Diatime.Create("速拨延时设置",WS_CHILD|WS_VISIBLE|SS_NOTIFY,rect,this,ID_STATIC_DIA); 
 	CFont* p_font = NULL;
	p_font = m_str.GetFont();
			
	m_Diatime.SetFont(p_font,TRUE);
			
	 m_Diatime.ShowWindow(SW_SHOW);

*/
//	 m_Diatime.SetFocus();
	 
	// TODO: Add extra initialization here
	
//	CString strCurrentPath;
/*	  if(!AtCom.Open(nComPort,nBaudrate))
	  {
		  CString Mestr;
		  Mestr.Format("不能打开串口,串口号 = %d,波特率 = %d",nComPort,nBaudrate);
		  AfxMessageBox(Mestr);
	  }*/

	if (m_Ports.InitPort(this, nComPort, nBaudrate))
		  m_Ports.StartMonitoring();
	else
	{
		CString Mestr;
		Mestr.Format("不能打开串口,串口号 = %d,波特率 = %d",nComPort,nBaudrate);
		AfxMessageBox(Mestr);		
	}
	  
	char sTestplan[300];
	CString m_strSYS_4000_bNotLocalAddZero; // 0/1
	CString m_strSYS_0005_bForbidLongDistanceCall; // 00/01
	
		  
	GetCurrentDirectory(300,strCurrentPath);

	sprintf(strConfigfile,"%s\\config.ini",strCurrentPath);
	
	GetPrivateProfileString("SYSinfo","DelayTime","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
	m_strSYS_0002_nAutoDely = sTestplan;

	GetPrivateProfileString("SYSinfo","NetNumber","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
	m_strSYS_0004_sSMSCenter = sTestplan;

	GetPrivateProfileString("SYSinfo","OutZero","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
	m_strSYS_4000_bNotLocalAddZero = sTestplan;

	GetPrivateProfileString("SYSinfo","ForBiden","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);
	m_strSYS_0005_bForbidLongDistanceCall = sTestplan;

	GetPrivateProfileString("SYSinfo","LCDConTrast","ERROR",sTestplan,sizeof(sTestplan),strConfigfile);	
	m_strSYS_0006_sLCDContrast = sTestplan;

	for(i=0;i<10;i++)
	{
		char str2[8];
		sprintf(str2,"%d",i);
		m_ComboDelay.AddString(str2);
		m_ComboDelay.SetItemData(i,i);		
	}
	int DelaySec;
	int bAddZero,bLonDistance;
	DelaySec = atoi(m_strSYS_0002_nAutoDely);
	m_ComboDelay.SetCurSel(DelaySec);

	m_NetPhoneNumber.SetWindowText(m_strSYS_0004_sSMSCenter);
/*
//	m_nRadioValue = 0;
//	bAddZero = atoi(m_strSYS_4000_bNotLocalAddZero);
	bAddZero = 1;
	((CButton *)GetDlgItem(IDC_ADDZERO))->SetCheck(FALSE);
	
//	bLonDistance = atoi(m_strSYS_0005_bForbidLongDistanceCall);
	bLonDistance = 1;
	((CButton *)GetDlgItem(IDC_DISTANCECALL))->SetCheck(bLonDistance);
*/	
	bAddZero = atoi(m_strSYS_4000_bNotLocalAddZero);
	
	if(bAddZero)
		((CButton *)GetDlgItem(IDC_ADDZERO))->SetCheck(TRUE);
	else
		((CButton *)GetDlgItem(IDC_NOADDZERO))->SetCheck(TRUE);

	bLonDistance = atoi(m_strSYS_0005_bForbidLongDistanceCall);

	if(bLonDistance)
		((CButton *)GetDlgItem(IDC_DISTANCECALL))->SetCheck(TRUE);
	else
		((CButton *)GetDlgItem(IDC_NODISTANCECALL))->SetCheck(TRUE);

	m_LCDCon.SetWindowText(m_strSYS_0006_sLCDContrast);
	UpdateData(TRUE);
	m_nSysinfo = CONTROL_CREATED;
	
	
	return TRUE;  // return TRUE  unless you set the focus to a control

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -