Input.c
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:5k
源码类别:

GPS编程

开发平台:

C/C++

  1. /****************************************************************************
  2. * 文件名:Input.C
  3. * 功能:MiniGUI应用例子。
  4. *       创建对话框,实现长度"毫米"-"英寸"的转换。
  5. * 说明:使用MiniGUI for uC/OS-II,使用ADS 1.2编译器。
  6. ****************************************************************************/
  7. /* 包含MiniGUI的配置头文件(编译配置选项) */
  8. #include "MiniGUI_config.h"
  9. /* 包含MiniGUI头文件 */
  10. #include "common.h"
  11. #include "minigui.h"
  12. #include "gdi.h"
  13. #include "window.h"
  14. #include "control.h"
  15. #define  IDC_STATIC1    1000
  16. #define  IDC_STATIC2    1001
  17. #define  IDC_EDIT1   1010
  18. #define  IDC_DU   1030
  19. #define  IDC_HU   1040
  20. /* 对话框属性设置 */
  21. static DLGTEMPLATE MyDlgTEMP =
  22. {
  23.     WS_BORDER | WS_CAPTION, 
  24.     WS_EX_NONE,
  25.     10, 10, 220, 160, 
  26.     "GPRS演示程序",
  27.     0, 0,
  28.     5, NULL,
  29.     0
  30. };
  31. /* 对话框内的控件定义 */
  32. static CTRLDATA MyCtrlData[] =
  33.     {
  34.         "static",
  35.         WS_VISIBLE | SS_SIMPLE,
  36.         10, 10, 180, 16, 
  37.         IDC_STATIC1, 
  38. "请输入电话号码",
  39.         0
  40.     },
  41. {
  42. "static",
  43.         WS_VISIBLE | SS_SIMPLE,
  44.         10, 70, 180, 16, 
  45.         IDC_STATIC2, 
  46. "说明:D键为退格键.",
  47.         0
  48. },
  49. {
  50. "edit",
  51. WS_VISIBLE | WS_BORDER | WS_TABSTOP,
  52. 10, 40, 160, 24,
  53. IDC_EDIT1,
  54. NULL,
  55. 0
  56.     },
  57. { "button",
  58. WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON,
  59. 30, 100, 60, 25,
  60. IDC_DU,
  61. "拔号",
  62. 0
  63. },
  64. { "button",
  65. WS_VISIBLE | WS_TABSTOP, 
  66. 130, 100, 60, 25,
  67. IDC_HU,
  68. "挂机",
  69. 0
  70. },
  71. };
  72. #define IO0SET          (*((volatile unsigned long *) 0xE0028004))      /* Not used for lpc210x*/
  73. #define IO0DIR          (*((volatile unsigned long *) 0xE0028008))      /* Not used for lpc210x*/
  74. #define IO0CLR          (*((volatile unsigned long *) 0xE002800C))      /* Not used for lpc210x*/
  75. /****************************************************************************
  76. * 名称:DialogBoxProc()
  77. * 功能:对话框过程函数。
  78. *       在MSG_INITDIALOG消息中保存启动对话框时传递过来的lParam参数。
  79. *       在MSG_COMMAND消息中处理IDOK命令,将处理后的数据返回主程序(length变量)。
  80. * 入口参数:hWnd        窗口句柄
  81. *           message     消息
  82. *           wParam      消息附加参数1
  83. *           lParam      消息附加参数2
  84. * 出口参数:返回消息处理结果。
  85. ****************************************************************************/
  86. static int DialogBoxProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
  87. { extern void  OSTimeDly (unsigned short);
  88. extern unsigned char ModemDialUp(char Number[]);
  89. extern GPRSHangUpTheCall(void);
  90. char  disp[20];
  91.     switch (message) 
  92. {   case MSG_INITDIALOG:
  93. IO0DIR = IO0DIR | (1<<7); // ***************
  94. IO0SET = (1<<7); // ***************
  95. SendMessage(GetDlgItem(hDlg, IDC_EDIT1), EM_LIMITTEXT, 15, 0L); // 限制输入字符个数
  96.          return(1);
  97.         
  98.      case MSG_COMMAND:
  99.          switch (LOWORD(wParam)) 
  100.          {   case IDC_HU:
  101.              // 挂机操作
  102.              IO0CLR = (1<<7); // ***************
  103.              OSTimeDly(50); // ***************
  104.              IO0SET = (1<<7); // ***************          
  105.              GPRSHangUpTheCall();
  106.              break;
  107. case IDC_DU:
  108. // 拔号操作
  109. IO0CLR = (1<<7); // ***************
  110.              OSTimeDly(50); // ***************
  111.              IO0SET = (1<<7); // ***************     
  112. GetWindowText(GetDlgItem(hDlg, IDC_EDIT1), disp, 15); // 读取电话号码
  113. ModemDialUp(disp); 
  114. break;
  115. default:
  116. break;
  117.          }
  118.          break;
  119. case MSG_CLOSE:
  120.          EndDialog (hDlg, IDCANCEL);
  121.          break;
  122. default:
  123. break;
  124.     }
  125.     
  126.     return DefaultDialogProc (hDlg, message, wParam, lParam);
  127. }
  128. /****************************************************************************
  129. * 名称:InitDialogBox()
  130. * 功能:初始化对话框,然后启动对话框。 
  131. * 入口参数:hWnd        父窗口句柄
  132. * 出口参数:无
  133. ****************************************************************************/
  134. static void InitDialogBox(HWND hWnd)
  135. {
  136.     MyDlgTEMP.controls = MyCtrlData;
  137.     
  138.     DialogBoxIndirectParam(&MyDlgTEMP, hWnd, DialogBoxProc, (LPARAM)0);
  139. }
  140. /****************************************************************************
  141. * 名称:MiniGUIMain()
  142. * 功能:MiniGUI程序入口点。
  143. * 入口参数:argc    参数个数
  144. *           argv    参数字符串指针
  145. * 出口参数:返回0。
  146. ****************************************************************************/
  147. int  MiniGUIMain(int argc, const char *argv[])
  148. {   
  149. /* 虽然MiniGUI for uC/OS-II不支持"MiniGUI-Lite模式",
  150.    但为了保持代码的移植性,此段不要删除 
  151. */
  152. #ifdef _LITE_VERSION
  153.     SetDesktopRect(0,0, 800,600);
  154. #endif
  155.     InitDialogBox(HWND_DESKTOP);
  156.     return(0);
  157. }
  158. /* 定义桌面接口函数 */
  159. #ifndef _LITE_VERSION
  160. #include "dti.c"
  161. #endif