SMSTestDlg.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. // SMSTestDlg.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "SMSTest.h"
  5. #include "SMSTestDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #endif
  9. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
  10. class CAboutDlg : public CDialog
  11. {
  12. public:
  13. CAboutDlg();
  14. // 对话框数据
  15. enum { IDD = IDD_ABOUTBOX };
  16. protected:
  17. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  18. // 实现
  19. protected:
  20. DECLARE_MESSAGE_MAP()
  21. };
  22. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  23. {
  24. }
  25. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. }
  29. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  30. END_MESSAGE_MAP()
  31. // CSMSTestDlg 对话框
  32. CSMSTestDlg::CSMSTestDlg(CWnd* pParent /*=NULL*/)
  33. : CDialog(CSMSTestDlg::IDD, pParent)
  34. {
  35. m_bIsOpen = FALSE;
  36. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  37. }
  38. void CSMSTestDlg::DoDataExchange(CDataExchange* pDX)
  39. {
  40. CDialog::DoDataExchange(pDX);
  41. DDX_Control(pDX, COMBOX_COM, m_cbSerialPort);
  42. DDX_Control(pDX, COMBOX_BAUDRATE, m_cbBaudrate);
  43. }
  44. BEGIN_MESSAGE_MAP(CSMSTestDlg, CDialog)
  45. ON_WM_SYSCOMMAND()
  46. ON_WM_PAINT()
  47. ON_WM_QUERYDRAGICON()
  48. //}}AFX_MSG_MAP
  49. ON_BN_CLICKED(IDOK, &CSMSTestDlg::OnBnClickedOk)
  50. ON_BN_CLICKED(BTN_CSQ, &CSMSTestDlg::OnBnClickedCsq)
  51. END_MESSAGE_MAP()
  52. // CSMSTestDlg 消息处理程序
  53. BOOL CSMSTestDlg::OnInitDialog()
  54. {
  55. CDialog::OnInitDialog();
  56. // 将“关于...”菜单项添加到系统菜单中。
  57. // IDM_ABOUTBOX 必须在系统命令范围内。
  58. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  59. ASSERT(IDM_ABOUTBOX < 0xF000);
  60. CMenu* pSysMenu = GetSystemMenu(FALSE);
  61. if (pSysMenu != NULL)
  62. {
  63. BOOL bNameValid;
  64. CString strAboutMenu;
  65. bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  66. ASSERT(bNameValid);
  67. if (!strAboutMenu.IsEmpty())
  68. {
  69. pSysMenu->AppendMenu(MF_SEPARATOR);
  70. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  71. }
  72. }
  73. // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
  74. // 执行此操作
  75. SetIcon(m_hIcon, TRUE); // 设置大图标
  76. SetIcon(m_hIcon, FALSE); // 设置小图标
  77. // TODO: 在此添加额外的初始化代码
  78. InitControl();
  79. return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
  80. }
  81. void CSMSTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
  82. {
  83. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  84. {
  85. CAboutDlg dlgAbout;
  86. dlgAbout.DoModal();
  87. }
  88. else
  89. {
  90. CDialog::OnSysCommand(nID, lParam);
  91. }
  92. }
  93. // 如果向对话框添加最小化按钮,则需要下面的代码
  94. // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
  95. // 这将由框架自动完成。
  96. void CSMSTestDlg::OnPaint()
  97. {
  98. if (IsIconic())
  99. {
  100. CPaintDC dc(this); // 用于绘制的设备上下文
  101. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  102. // 使图标在工作区矩形中居中
  103. int cxIcon = GetSystemMetrics(SM_CXICON);
  104. int cyIcon = GetSystemMetrics(SM_CYICON);
  105. CRect rect;
  106. GetClientRect(&rect);
  107. int x = (rect.Width() - cxIcon + 1) / 2;
  108. int y = (rect.Height() - cyIcon + 1) / 2;
  109. // 绘制图标
  110. dc.DrawIcon(x, y, m_hIcon);
  111. }
  112. else
  113. {
  114. CDialog::OnPaint();
  115. }
  116. }
  117. //当用户拖动最小化窗口时系统调用此函数取得光标
  118. //显示。
  119. HCURSOR CSMSTestDlg::OnQueryDragIcon()
  120. {
  121. return static_cast<HCURSOR>(m_hIcon);
  122. }
  123. void CSMSTestDlg::InitControl()
  124. {
  125. // 串口号;
  126. CString strCOM = _T("");
  127. for ( int i = 1; i < 30; i++)
  128. {
  129. strCOM.Format(_T("COM%d"), i);
  130. m_cbSerialPort.AddString(strCOM);
  131. }
  132. m_cbSerialPort.SetCurSel(0);
  133. // 波特率;
  134. const TCHAR *AryBaudRate[] = {
  135. _T("1200"),
  136. _T("2400"),
  137. _T("4800"),
  138. _T("9600"),
  139. _T("11400"),
  140. _T("19200"),
  141. _T("38400"),
  142. _T("56000"),
  143. _T("57600"),
  144. _T("115200"),
  145. _T("128000"),
  146. _T("256000"),
  147. NULL
  148. };
  149. for ( int i = 0; AryBaudRate[i] != NULL; i++ )
  150. {
  151. m_cbBaudrate.AddString(AryBaudRate[i]);
  152. }
  153. m_cbBaudrate.SetCurSel(0);
  154. // SMCM号码;
  155. SetDlgItemText(TEXT_SMSC, _T("13352667321"));
  156. // 发送内容;
  157. SetDlgItemText(TEXT_CONTENT, _T("Test"));
  158. }
  159. void CSMSTestDlg::OnBnClickedOk()
  160. {
  161. // TODO: 在此添加控件通知处理程序代码
  162. #if 0
  163. if ( !m_bIsOpen )
  164. {
  165. if (SMSProcess::SMS_INIT(6, 115200, 8, 0, 1, 1, 1000, 67) == 0)
  166. m_bIsOpen = TRUE;
  167. }
  168. if (!m_bIsOpen)
  169. return;
  170. CString strPhone = _T("");
  171. CString strContent = _T("");
  172. TCHAR szErrorMsg[100] = {0};
  173. GetDlgItemText(TEXT_RECEIVEPHONE, strPhone);
  174. GetDlgItemText(TEXT_CONTENT, strContent);
  175. SMSProcess::SMS_SENDMSG(strPhone, strContent, szErrorMsg);
  176. #else
  177. if ( !m_sms.IsOpen() )
  178. {
  179. if ( !m_sms.OpenSerialPort(6, 115200, 8, 0, 1, 1, 1000) )
  180. {
  181. return;
  182. }
  183. m_sms.InitGSM();
  184. }
  185. SM_PARAM smParam = {0};
  186. smParam.nIndex = 0;
  187. m_sms.InvertNumbers(_T("8615089231318"), (TCHAR*)smParam.SCA, _tcslen(_T("8615089231318")));
  188. _stprintf((TCHAR*)smParam.TPA, _T(""));
  189. _stprintf((TCHAR*)smParam.TP_SCTS, _T(""));
  190. _stprintf((TCHAR*)smParam.TP_UD, _T(""));
  191. smParam.TP_PID = 0;
  192. smParam.TP_DCS = 0;
  193. m_sms.SendShortMessage(&smParam);
  194. #endif
  195. }
  196. void CSMSTestDlg::OnBnClickedCsq()
  197. {
  198. #if 0
  199. if ( !m_bIsOpen )
  200. {
  201. if (SMSProcess::SMS_INIT(6, 115200, 8, 0, 1, 1, 1000, 67) == 0)
  202. m_bIsOpen = TRUE;
  203. }
  204. #else
  205. if ( !m_sms.IsOpen() )
  206. {
  207. if ( !m_sms.OpenSerialPort(6, 115200, 8, 0, 1, 1, 1000) )
  208. {
  209. return;
  210. }
  211. }
  212. #endif
  213. }