Dlg_Controller.cpp 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063
  1. // Dlg_Controller.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_Door.h"
  5. #include "Dlg_Frame.h"
  6. #include "Dlg_Controller.h"
  7. #include ".\dlg_controller.h"
  8. #include "Global.h"
  9. #include "mdlProject.h"
  10. #include "Dlg_ControllerProperty.h"
  11. #include "DBConnection.h"
  12. // CDlg_Controller 对话框
  13. IMPLEMENT_DYNAMIC(CDlg_Controller, CDialog)
  14. CDlg_Controller::CDlg_Controller(CWnd* pParent /*=NULL*/)
  15. : CDialog(CDlg_Controller::IDD, pParent)
  16. , m_sEdit_ControlName(_T(""))
  17. , m_sEdit_ControlSN(_T(""))
  18. , m_sEdit_Door1Name(_T(""))
  19. , m_sEdit_Door2Name(_T(""))
  20. , m_sEdit_Door3Name(_T(""))
  21. , m_sEdit_Door4Name(_T(""))
  22. , m_sComb_Port(_T(""))
  23. , m_sEdit_IP(_T(""))
  24. , m_nEdit_Port(0)
  25. , m_nComb_WordMode(0)
  26. {
  27. memset( m_nDoorDelayTime,0,4*sizeof( int ) );
  28. }
  29. CDlg_Controller::~CDlg_Controller()
  30. {
  31. }
  32. void CDlg_Controller::DoDataExchange(CDataExchange* pDX)
  33. {
  34. CDialog::DoDataExchange(pDX);
  35. DDX_Text(pDX, IDC_EDIT_NAME, m_sEdit_ControlName);
  36. DDX_Text(pDX, IDC_EDIT_SN, m_sEdit_ControlSN);
  37. DDX_Text(pDX, IDC_EDIT_DOOR1NAME, m_sEdit_Door1Name);
  38. DDX_Text(pDX, IDC_EDIT_DOOR2NAME, m_sEdit_Door2Name);
  39. DDX_Text(pDX, IDC_EDIT_DOOR3NAME, m_sEdit_Door3Name);
  40. DDX_Text(pDX, IDC_EDIT_DOOR4NAME, m_sEdit_Door4Name);
  41. DDX_CBString(pDX, IDC_COMBO_COM, m_sComb_Port);
  42. DDX_Control(pDX, IDC_COMBO_COM, m_Comb_Port);
  43. DDX_Control(pDX, IDC_LIST_CONTROL, m_List_Controller);
  44. DDX_Control(pDX, IDC_BTN_ADD, m_Btn_Add);
  45. DDX_Control(pDX, IDC_BTN_SAVE, m_Btn_Modify);
  46. DDX_Control(pDX, IDC_BTN_DEl, m_Btn_Delete);
  47. DDX_Text(pDX, IDC_EDIT_IP, m_sEdit_IP);
  48. DDX_Text(pDX, IDC_EDIT_PORT, m_nEdit_Port);
  49. DDX_Control(pDX, IDC_COMBO_WORDMDOE, m_Comb_WordMode);
  50. DDX_CBIndex(pDX, IDC_COMBO_WORDMDOE, m_nComb_WordMode);
  51. DDX_Control(pDX, IDC_COMBO_DOORNUMBER, m_Comb_DoorNumber);
  52. }
  53. BEGIN_MESSAGE_MAP(CDlg_Controller, CDialog)
  54. ON_EN_CHANGE(IDC_EDIT_SN, OnEnChangeEditSn)
  55. ON_BN_CLICKED(IDC_BTN_ADD, OnBnClickedBtnAdd)
  56. ON_BN_CLICKED(IDC_BTN_SAVE, OnBnClickedBtnSave)
  57. ON_BN_CLICKED(IDC_BTN_DEl, OnBnClickedBtnDel)
  58. ON_NOTIFY(NM_CLICK, IDC_LIST_CONTROL, OnNMClickListControl)
  59. ON_WM_CTLCOLOR()
  60. ON_WM_ERASEBKGND()
  61. ON_CBN_SELCHANGE(IDC_COMBO_WORDMDOE, OnCbnSelchangeComboWordmdoe)
  62. ON_CBN_SELCHANGE(IDC_COMBO_DOORNUMBER, OnCbnSelchangeComboDoornumber)
  63. ON_WM_TIMER()
  64. ON_NOTIFY(NM_DBLCLK, IDC_LIST_CONTROL, OnNMDblclkListControl)
  65. END_MESSAGE_MAP()
  66. // CDlg_Controller 消息处理程序
  67. BOOL CDlg_Controller::OnInitDialog()
  68. {
  69. CDialog::OnInitDialog();
  70. // TODO: 在此添加额外的初始化
  71. m_Comb_Port.SetCurSel( 0 );
  72. m_Comb_WordMode.SetCurSel( 0 );
  73. m_Comb_DoorNumber.SetCurSel( 0 );
  74. GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_HIDE );
  75. GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_HIDE );
  76. GetDlgItem( IDC_STATIC3 )->ShowWindow( SW_HIDE );
  77. GetDlgItem( IDC_EDIT_DOOR3NAME )->ShowWindow( SW_HIDE );
  78. GetDlgItem( IDC_STATIC4 )->ShowWindow( SW_HIDE );
  79. GetDlgItem( IDC_EDIT_DOOR4NAME )->ShowWindow( SW_HIDE );
  80. //m_List_Controller.InsertColumn( 0, "编号" );
  81. //m_List_Controller.InsertColumn( 1, "名称" );
  82. //m_List_Controller.InsertColumn( 2, "SN" );
  83. //m_List_Controller.InsertColumn( 3, "信息" );
  84. //m_List_Controller.SetColumnWidth( 0, 60 );
  85. //m_List_Controller.SetColumnWidth( 1, 120);
  86. //m_List_Controller.SetColumnWidth( 2, 100);
  87. //m_List_Controller.SetColumnWidth( 3, 690);
  88. //m_List_Controller.SetExtendedStyle(m_List_Controller.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
  89. InitList();
  90. ReadController( &m_List_Controller );
  91. return TRUE; // return TRUE unless you set the focus to a control
  92. // 异常: OCX 属性页应返回 FALSE
  93. }
  94. int CDlg_Controller::InitList(void)
  95. {
  96. //m_List_Info.InsertColumn( 0, "执行时刻" );
  97. //m_List_Info.InsertColumn( 1, "人员信息" );
  98. //m_List_Info.InsertColumn( 2, "描述" );
  99. //m_List_Info.InsertColumn( 3, "信息" );
  100. //m_List_Info.SetColumnWidth( 0, 120 );
  101. //m_List_Info.SetColumnWidth( 1, 200);
  102. //m_List_Info.SetColumnWidth( 2, 200);
  103. //m_List_Info.SetColumnWidth( 3, 650);
  104. //m_List_Info.SetExtendedStyle(m_List_Info.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
  105. //m_List_Rule.SetColColor(0,RGB(10,150,20)); //设置列背景色
  106. //m_List_Rule.SetColColor(2,RGB(30,100,90)); //设置列背景色
  107. //m_List_Rule.SetBkColor(RGB(50,10,10)); //设置背景色
  108. //m_List_Rule.SetItemColor(1,1,RGB(100,100,10)); //设置指定单元背景色
  109. //m_List_Rule.SetRowHeigt(25); //设置行高度
  110. //m_List_Rule.SetHeaderHeight(1.5); //设置头部高度
  111. //m_List_Rule.SetHeaderFontHW(16,0); //设置头部字体高度,和宽度,0表示缺省,自适应
  112. //m_List_Record.SetHeaderTextColor(RGB(0,0,0)); //设置头部字体颜色
  113. //m_List_Rule.SetTextColor(RGB(0,255,255)); //设置文本颜色
  114. m_List_Controller.SetHeaderBKColor(213,222,242,8); //设置头部背景色
  115. ////m_List_Rule.SetFontHW(15,0); //设置字体高度,和宽度,0表示缺省宽度
  116. //m_List_Rule.SetColTextColor(2,RGB(255,255,100)); //设置列文本颜色
  117. //m_List_Rule.SetItemTextColor(3,1,RGB(255,0,0)); //设置单元格字体颜色
  118. m_List_Controller.InsertColumn(0,g_strIndex,LVCFMT_LEFT,40);
  119. m_List_Controller.InsertColumn(1,g_strName,LVCFMT_LEFT,120);
  120. m_List_Controller.InsertColumn(2,"监控开关",LVCFMT_LEFT,65);
  121. m_List_Controller.InsertColumn(3,g_strInfomation,LVCFMT_LEFT,800);
  122. SetWindowLong(m_List_Controller.m_hWnd ,GWL_EXSTYLE,WS_EX_CLIENTEDGE);
  123. m_List_Controller.SetExtendedStyle(LVS_EX_GRIDLINES); //设置扩展风格为网格
  124. ::SendMessage(m_List_Controller.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
  125. m_List_Controller.SetRowHeigt( 20 );
  126. return 0;
  127. }
  128. void CDlg_Controller::SetPos( CRect rect )
  129. {
  130. CRect rc1;
  131. rc1.left = 0;
  132. rc1.right = rc1.left+rect.Width();
  133. rc1.top = 0;
  134. rc1.bottom = rc1.top+rect.Height()-4;
  135. this->MoveWindow( rc1 );
  136. CRect rc2;
  137. rc2.left = rc1.left + 10;
  138. rc2.right = rc1.right - 10;
  139. rc2.top = 10;
  140. rc2.bottom = rc1.bottom - 40;
  141. m_List_Controller.MoveWindow( rc2 );
  142. CRect rc17;
  143. rc17.right = rc2.right-20;
  144. rc17.left = rc17.right-120;
  145. rc17.top = rc2.bottom+5;
  146. rc17.bottom = rc1.bottom-5;
  147. m_Btn_Delete.MoveWindow( rc17 );
  148. CRect rc18;
  149. rc18.right = rc17.left-5;
  150. rc18.left = rc18.right-120;
  151. rc18.top = rc2.bottom+5;
  152. rc18.bottom = rc1.bottom-5;
  153. m_Btn_Modify.MoveWindow( rc18 );
  154. CRect rc19;
  155. rc19.right = rc18.left-5;
  156. rc19.left = rc19.right-120;
  157. rc19.top = rc2.bottom+5;
  158. rc19.bottom = rc1.bottom-5;
  159. m_Btn_Add.MoveWindow( rc19 );
  160. }
  161. void CDlg_Controller::OnEnChangeEditSn()
  162. {
  163. // TODO: 如果该控件是 RICHEDIT 控件,则它将不会
  164. // 发送该通知,除非重写 CDialog::OnInitDialog()
  165. // 函数并调用 CRichEditCtrl().SetEventMask(),
  166. // 同时将 ENM_CHANGE 标志“或”运算到掩码中。
  167. // TODO: 在此添加控件通知处理程序代码
  168. //UpdateData();
  169. //GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_HIDE );
  170. //GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_HIDE );
  171. //GetDlgItem( IDC_STATIC3 )->ShowWindow( SW_HIDE );
  172. //GetDlgItem( IDC_EDIT_DOOR3NAME )->ShowWindow( SW_HIDE );
  173. //GetDlgItem( IDC_STATIC4 )->ShowWindow( SW_HIDE );
  174. //GetDlgItem( IDC_EDIT_DOOR4NAME )->ShowWindow( SW_HIDE );
  175. //if( m_sEdit_ControlSN.Left(1)=="1" )
  176. //{
  177. //}
  178. //else if( m_sEdit_ControlSN.Left(1)=="2" )
  179. //{
  180. // GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_SHOW );
  181. // GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_SHOW );
  182. //}
  183. //else if( m_sEdit_ControlSN.Left(1)=="4" )
  184. //{
  185. // GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_SHOW );
  186. // GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_SHOW );
  187. // GetDlgItem( IDC_STATIC3 )->ShowWindow( SW_SHOW );
  188. // GetDlgItem( IDC_EDIT_DOOR3NAME )->ShowWindow( SW_SHOW );
  189. // GetDlgItem( IDC_STATIC4 )->ShowWindow( SW_SHOW );
  190. // GetDlgItem( IDC_EDIT_DOOR4NAME )->ShowWindow( SW_SHOW );
  191. //}
  192. }
  193. void CDlg_Controller::OnBnClickedBtnAdd()
  194. {
  195. CString sTemp;
  196. CDlg_ControllerProperty dlg;
  197. dlg.m_nOperate = ADD;
  198. if( dlg.DoModal()==IDOK )
  199. {
  200. CString sIndex;
  201. sIndex.Format("%d",dlg.m_Controller.nID );
  202. m_List_Controller.InsertItem( 0,sIndex );
  203. sTemp.Format(" %s",dlg.m_Controller.sName );
  204. m_List_Controller.SetItemText( 0,1,sTemp );
  205. sTemp.Format(" %s",dlg.m_Controller.bForbid==0?"启用":"禁用" );
  206. m_List_Controller.SetItemText( 0,2,sTemp );
  207. CString sWordMode;
  208. if( dlg.m_Controller.nWordMode==0 )
  209. sWordMode.Format( "COM%d",dlg.m_Controller.nComPort );
  210. else
  211. sWordMode.Format( "IP:%s,Port:%s",dlg.m_Controller.sIP,dlg.m_Controller.sPort );
  212. if( dlg.m_Controller.nBrandType==0 )
  213. sTemp.Format( " 微耕 【SN:%s】【%s】",dlg.m_Controller.sSN,sWordMode );
  214. else if( dlg.m_Controller.nBrandType==1 )
  215. sTemp.Format( " 中控 【SN:%s】【%s】",dlg.m_Controller.sSN,sWordMode );
  216. m_List_Controller.SetItemText( 0,3,sTemp );
  217. //m_List_Controller.SetItemText( 0,3,m_sComb_Port );
  218. //m_List_Controller.SetItemText( 0,4,m_sEdit_Door1Name );
  219. //m_List_Controller.SetItemText( 0,5,m_sEdit_Door2Name );
  220. //m_List_Controller.SetItemText( 0,6,m_sEdit_Door3Name );
  221. //m_List_Controller.SetItemText( 0,7,m_sEdit_Door4Name );
  222. //CString s1,sInfo;
  223. //if( m_nComb_WordMode==0 )
  224. // s1.Format("%s:485【%s:%s】 ",g_strConnectType,g_strConnectCom,m_sComb_Port );
  225. //else
  226. // s1.Format("%s:TCP【IP:%s Port:%d】 ",g_strConnectType,m_sEdit_IP,m_nEdit_Port );
  227. //if( nDoorCur==0 )
  228. // sInfo.Format(" 【%s-%s-%s-3%s】",g_strDoor1,m_sEdit_Door1Name,g_strControl_Online,g_strSecond );
  229. //else if( nDoorCur==1 )
  230. // sInfo.Format(" 【%s-%s-%s-3%s】 【%s-%s-%s-3%s】",
  231. // g_strDoor1,m_sEdit_Door1Name,g_strControl_Online,g_strSecond,
  232. // g_strDoor2,m_sEdit_Door2Name,g_strControl_Online,g_strSecond );
  233. //else if( nDoorCur==2 )
  234. // sInfo.Format(" 【%s-%s-%s-3%s】 【%s-%s-%s-3%s】 【%s-%s-%s-3%s】 【%s-%s-%s-3%s】",
  235. // g_strDoor1,m_sEdit_Door1Name,g_strControl_Online,g_strSecond,
  236. // g_strDoor2,m_sEdit_Door2Name,g_strControl_Online,g_strSecond,
  237. // g_strDoor3,m_sEdit_Door3Name,g_strControl_Online,g_strSecond,
  238. // g_strDoor4,m_sEdit_Door4Name,g_strControl_Online,g_strSecond );
  239. //sInfo = s1+sInfo;
  240. //m_List_Controller.SetItemText( 0,3,sInfo );
  241. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  242. {
  243. if( g_Controller[i].nID<0 )
  244. {
  245. g_Controller[i].nID = dlg.m_Controller.nID;
  246. g_Controller[i].sName = dlg.m_Controller.sName;
  247. g_Controller[i].nBrandType = dlg.m_Controller.nBrandType;
  248. g_Controller[i].sSN = dlg.m_Controller.sSN;
  249. g_Controller[i].nWordMode = dlg.m_Controller.nWordMode;
  250. g_Controller[i].nComPort = dlg.m_Controller.nComPort;
  251. g_Controller[i].sIP = dlg.m_Controller.sIP;
  252. g_Controller[i].sPort = dlg.m_Controller.sPort;
  253. g_Controller[i].bForbid = dlg.m_Controller.bForbid;
  254. g_Controller[i].nDoorCount = dlg.m_Controller.nDoorCount;
  255. for( int n=1;n<9;n++ )
  256. g_Controller[i].sDoorName[n] = dlg.m_Controller.sDoorName[n];
  257. if( !dlg.m_Controller.bForbid )
  258. {
  259. if( g_pDlgMain->m_pThread_Controller[i]==NULL )
  260. {
  261. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  262. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  263. }
  264. }
  265. break;
  266. }
  267. }
  268. //改变门的信息
  269. SetCombDoor( &g_pDlgMain->m_pDlg_Record->m_Comb_Door );
  270. ////改变权限界面的控制器
  271. //g_pDlgMain->m_pDlg_Permit->InitTreeInfo();
  272. }
  273. }
  274. void CDlg_Controller::OnBnClickedBtnSave()
  275. {
  276. int iListCount = m_List_Controller.GetItemCount();
  277. POSITION pos = m_List_Controller.GetFirstSelectedItemPosition();
  278. int nListSel = m_List_Controller.GetNextSelectedItem(pos);
  279. if(nListSel>=iListCount || nListSel==-1)
  280. {
  281. return;
  282. }
  283. CString sTemp = m_List_Controller.GetItemText( nListSel,0 );
  284. CDlg_ControllerProperty dlg;
  285. dlg.m_nOperate = EDIT;
  286. dlg.m_Controller.nID = atoi(sTemp);
  287. if( dlg.DoModal()==IDOK )
  288. {
  289. sTemp.Format(" %s",dlg.m_Controller.sName );
  290. m_List_Controller.SetItemText( nListSel,1,sTemp );
  291. sTemp.Format(" %s",dlg.m_Controller.bForbid==0?"启用":"禁用" );
  292. m_List_Controller.SetItemText( nListSel,2,sTemp );
  293. CString sWordMode;
  294. if( dlg.m_Controller.nWordMode==0 )
  295. sWordMode.Format( "COM%d",dlg.m_Controller.nComPort );
  296. else
  297. sWordMode.Format( "IP:%s,Port:%s",dlg.m_Controller.sIP,dlg.m_Controller.sPort );
  298. if( dlg.m_Controller.nBrandType==0 )
  299. sTemp.Format( " 微耕 【SN:%s】【%s】",dlg.m_Controller.sSN,sWordMode );
  300. else if( dlg.m_Controller.nBrandType==1 )
  301. sTemp.Format( " 中控 【SN:%s】【%s】",dlg.m_Controller.sSN,sWordMode );
  302. m_List_Controller.SetItemText(nListSel,3,sTemp );
  303. }
  304. else
  305. return;
  306. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  307. {
  308. if( g_Controller[i].nID == dlg.m_Controller.nID )
  309. {
  310. if( g_Controller[i].sSN != dlg.m_Controller.sSN || g_Controller[i].nComPort != dlg.m_Controller.nComPort ||
  311. g_Controller[i].nWordMode!=dlg.m_Controller.nWordMode || g_Controller[i].sIP!=dlg.m_Controller.sIP ||
  312. g_Controller[i].nBrandType!=dlg.m_Controller.nBrandType )
  313. {
  314. g_Controller[i].nID = dlg.m_Controller.nID;
  315. g_Controller[i].sName = dlg.m_Controller.sName;
  316. g_Controller[i].nBrandType = dlg.m_Controller.nBrandType;
  317. g_Controller[i].sSN = dlg.m_Controller.sSN;
  318. g_Controller[i].nWordMode = dlg.m_Controller.nWordMode;
  319. g_Controller[i].nComPort = dlg.m_Controller.nComPort;
  320. g_Controller[i].sIP = dlg.m_Controller.sIP;
  321. g_Controller[i].sPort = dlg.m_Controller.sPort;
  322. g_Controller[i].bForbid = dlg.m_Controller.bForbid;
  323. g_Controller[i].nDoorCount = dlg.m_Controller.nDoorCount;
  324. if( g_pDlgMain->m_pThread_Controller[i] )
  325. {
  326. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  327. delete g_pDlgMain->m_pThread_Controller[i];
  328. g_pDlgMain->m_pThread_Controller[i] = NULL;
  329. g_pDlgMain->m_pDlg_Moniter->DelDoorFromList( dlg.m_Controller.sName.Trim() );
  330. g_pDlgMain->m_pDlg_Moniter->OnDoorSort();
  331. }
  332. for( int n=1;n<9;n++ )
  333. g_Controller[i].sDoorName[n] = dlg.m_Controller.sDoorName[n];
  334. if( g_pDlgMain->m_pThread_Controller[i]==NULL && !g_Controller[i].bForbid )
  335. {
  336. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  337. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  338. }
  339. }
  340. else if( g_Controller[i].bForbid!=dlg.m_Controller.bForbid || g_Controller[i].nDoorCount!=dlg.m_Controller.nDoorCount )
  341. {
  342. int nDelDoor = -1;//-1表示没删 0表示删除但没有添加 2表示已经添加
  343. if( dlg.m_Controller.bForbid )//禁用的删除
  344. {
  345. g_pDlgMain->m_pDlg_Moniter->DelDoorFromList( g_Controller[i].sName );
  346. }
  347. else if( g_Controller[i].nDoorCount!=dlg.m_Controller.nDoorCount )//门的个数改变
  348. {
  349. nDelDoor = 0;
  350. g_pDlgMain->m_pDlg_Moniter->DelDoorFromList( g_Controller[i].sName );
  351. }
  352. if( g_pDlgMain->m_pThread_Controller[i] && !g_Controller[i].bForbid && !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )//已经创建类,并且原来是启用的和在线的,暂停线程
  353. {
  354. SuspendThread( g_pDlgMain->m_pThread_Controller[i]->m_Thread );
  355. }
  356. g_Controller[i].nID = dlg.m_Controller.nID;
  357. g_Controller[i].sName = dlg.m_Controller.sName;
  358. g_Controller[i].nBrandType = dlg.m_Controller.nBrandType;
  359. g_Controller[i].sSN = dlg.m_Controller.sSN;
  360. g_Controller[i].nWordMode = dlg.m_Controller.nWordMode;
  361. g_Controller[i].nComPort = dlg.m_Controller.nComPort;
  362. g_Controller[i].sIP = dlg.m_Controller.sIP;
  363. g_Controller[i].sPort = dlg.m_Controller.sPort;
  364. g_Controller[i].bForbid = dlg.m_Controller.bForbid;
  365. g_Controller[i].nDoorCount = dlg.m_Controller.nDoorCount;
  366. for( int n=1;n<9;n++ )
  367. g_Controller[i].sDoorName[n] = dlg.m_Controller.sDoorName[n];
  368. if( g_pDlgMain->m_pThread_Controller[i] && !g_Controller[i].bForbid && !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )//已经创建类,并且现在是启用的和在线的,启用线程
  369. {
  370. nDelDoor = 2;
  371. g_pDlgMain->m_pDlg_Moniter->AddDoorToList( g_Controller[i].sName,2 );
  372. ResumeThread( g_pDlgMain->m_pThread_Controller[i]->m_Thread );
  373. }
  374. else if( g_pDlgMain->m_pThread_Controller[i]==NULL && !g_Controller[i].bForbid )//以前没有创建类,并且现在是启用的,创建类并创建线程
  375. {
  376. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  377. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  378. }
  379. else if( g_pDlgMain->m_pThread_Controller[i] && !g_Controller[i].bForbid )//以前创建类,但连接失败,并且现在是启用的,创建类并创建线程
  380. {
  381. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  382. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  383. }
  384. if( nDelDoor==0 )
  385. {
  386. g_pDlgMain->m_pDlg_Moniter->AddDoorToList( g_Controller[i].sName,2 );
  387. }
  388. }
  389. else
  390. {
  391. g_Controller[i].nID = dlg.m_Controller.nID;
  392. g_Controller[i].sName = dlg.m_Controller.sName;
  393. g_Controller[i].nBrandType = dlg.m_Controller.nBrandType;
  394. g_Controller[i].sSN = dlg.m_Controller.sSN;
  395. g_Controller[i].nWordMode = dlg.m_Controller.nWordMode;
  396. g_Controller[i].nComPort = dlg.m_Controller.nComPort;
  397. g_Controller[i].sIP = dlg.m_Controller.sIP;
  398. g_Controller[i].sPort = dlg.m_Controller.sPort;
  399. g_Controller[i].bForbid = dlg.m_Controller.bForbid;
  400. g_Controller[i].nDoorCount = dlg.m_Controller.nDoorCount;
  401. for( int n=1;n<9;n++ )
  402. g_Controller[i].sDoorName[n] = dlg.m_Controller.sDoorName[n];
  403. if( !g_Controller[i].bForbid )
  404. g_pDlgMain->m_pThread_Controller[i]->SetController( g_Controller[i] );
  405. }
  406. break;
  407. }
  408. }
  409. //改变门的信息
  410. SetCombDoor( &g_pDlgMain->m_pDlg_Record->m_Comb_Door );
  411. //改变权限界面的控制器
  412. //g_pDlgMain->m_pDlg_Permit->InitTreeInfo();
  413. }
  414. void CDlg_Controller::OnBnClickedBtnDel()
  415. {
  416. int iListCount = m_List_Controller.GetItemCount();
  417. POSITION pos = m_List_Controller.GetFirstSelectedItemPosition();
  418. int nListSel = m_List_Controller.GetNextSelectedItem(pos);
  419. if(nListSel>=iListCount || nListSel==-1)
  420. {
  421. MessageBox( g_strChooseThenDel, g_strTip, MB_ICONINFORMATION);
  422. return;
  423. }
  424. CString str,sControlName;
  425. str = m_List_Controller.GetItemText( nListSel,0 );
  426. sControlName = m_List_Controller.GetItemText( nListSel,1 );
  427. if( MessageBox( "确定要删除此控制器相关信息?", g_strTip, MB_YESNO|MB_ICONINFORMATION)!=IDYES )
  428. return;
  429. if( DelItemFromTable( "t_door_control","id",atoi( str ) ) )
  430. m_List_Controller.DeleteItem( nListSel );
  431. g_pDlgMain->m_pDlg_Moniter->DelDoorFromList( sControlName.Trim() );
  432. g_pDlgMain->m_pDlg_Moniter->OnDoorSort();
  433. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  434. {
  435. if( g_Controller[i].nID == atoi(str) )
  436. {
  437. if( g_pDlgMain->m_pThread_Controller[i] )
  438. {
  439. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  440. delete g_pDlgMain->m_pThread_Controller[i];
  441. g_pDlgMain->m_pThread_Controller[i] = NULL;
  442. }
  443. g_Controller[i].nID = -1;
  444. break;
  445. }
  446. }
  447. //改变门的信息
  448. SetCombDoor( &g_pDlgMain->m_pDlg_Record->m_Comb_Door );
  449. //改变权限界面的控制器
  450. //g_pDlgMain->m_pDlg_Permit->InitTreeInfo();
  451. }
  452. void CDlg_Controller::OnNMClickListControl(NMHDR *pNMHDR, LRESULT *pResult)
  453. {
  454. // TODO: 在此添加控件通知处理程序代码
  455. int iListCount = m_List_Controller.GetItemCount();
  456. POSITION pos = m_List_Controller.GetFirstSelectedItemPosition();
  457. int nListSel = m_List_Controller.GetNextSelectedItem(pos);
  458. if(nListSel>=iListCount || nListSel==-1)
  459. {
  460. return;
  461. }
  462. //CString str;
  463. //str = m_List_Controller.GetItemText( nListSel,0 );
  464. //int nDoorNum=0;
  465. //
  466. //ADOCtrl.ReadController( atoi(str),m_sEdit_ControlName,m_sEdit_ControlSN,m_nComb_WordMode,m_sEdit_IP,m_nEdit_Port,m_sComb_Port,
  467. // m_sEdit_Door1Name,m_sEdit_Door2Name,m_sEdit_Door3Name,m_sEdit_Door4Name,
  468. // m_nDoorDelayTime[0],m_nDoorDelayTime[1],m_nDoorDelayTime[2],m_nDoorDelayTime[3],
  469. // m_sDoorControlType[0],m_sDoorControlType[1],m_sDoorControlType[2],m_sDoorControlType[3],nDoorNum );
  470. //UpdateData( false );
  471. //m_Comb_DoorNumber.SetCurSel( nDoorNum );
  472. //GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_HIDE );
  473. //GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_HIDE );
  474. //GetDlgItem( IDC_STATIC3 )->ShowWindow( SW_HIDE );
  475. //GetDlgItem( IDC_EDIT_DOOR3NAME )->ShowWindow( SW_HIDE );
  476. //GetDlgItem( IDC_STATIC4 )->ShowWindow( SW_HIDE );
  477. //GetDlgItem( IDC_EDIT_DOOR4NAME )->ShowWindow( SW_HIDE );
  478. //if( nDoorNum==0 )
  479. //{
  480. //}
  481. //else if( nDoorNum==1 )
  482. //{
  483. // GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_SHOW );
  484. // GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_SHOW );
  485. //}
  486. //else if( nDoorNum==2 )
  487. //{
  488. // GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_SHOW );
  489. // GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_SHOW );
  490. // GetDlgItem( IDC_STATIC3 )->ShowWindow( SW_SHOW );
  491. // GetDlgItem( IDC_EDIT_DOOR3NAME )->ShowWindow( SW_SHOW );
  492. // GetDlgItem( IDC_STATIC4 )->ShowWindow( SW_SHOW );
  493. // GetDlgItem( IDC_EDIT_DOOR4NAME )->ShowWindow( SW_SHOW );
  494. //}
  495. //if( m_nComb_WordMode==1 )
  496. //{
  497. // GetDlgItem(IDC_STATIC_3)->ShowWindow( SW_HIDE );
  498. // GetDlgItem(IDC_COMBO_COM)->ShowWindow( SW_HIDE );
  499. // GetDlgItem(IDC_STATIC_6)->ShowWindow( SW_SHOW );
  500. // GetDlgItem(IDC_EDIT_IP)->ShowWindow( SW_SHOW );
  501. // GetDlgItem(IDC_STATIC_7)->ShowWindow( SW_SHOW );
  502. // GetDlgItem(IDC_EDIT_PORT)->ShowWindow( SW_SHOW );
  503. //}
  504. //else
  505. //{
  506. // GetDlgItem(IDC_STATIC_3)->ShowWindow( SW_SHOW );
  507. // GetDlgItem(IDC_COMBO_COM)->ShowWindow( SW_SHOW );
  508. // GetDlgItem(IDC_STATIC_6)->ShowWindow( SW_HIDE );
  509. // GetDlgItem(IDC_EDIT_IP)->ShowWindow( SW_HIDE );
  510. // GetDlgItem(IDC_STATIC_7)->ShowWindow( SW_HIDE );
  511. // GetDlgItem(IDC_EDIT_PORT)->ShowWindow( SW_HIDE );
  512. //}
  513. *pResult = 0;
  514. }
  515. HBRUSH CDlg_Controller::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  516. {
  517. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  518. // TODO: 在此更改 DC 的任何属性
  519. int nID = pWnd->GetDlgCtrlID();
  520. //HBRUSH B1 = CreateSolidBrush( g_ColorGround );
  521. HBRUSH B1 = CreateSolidBrush( g_Color3 );
  522. if(nCtlColor == CTLCOLOR_STATIC)
  523. {
  524. // pOldFont = pDC->SelectObject(&m_font1);
  525. pDC->SetTextColor(RGB(0, 0, 0));
  526. pDC->SetBkMode( TRANSPARENT );
  527. //pDC->SelectObject(pOldFont);
  528. DeleteObject(B1);
  529. return B1;
  530. }
  531. //if( nID == IDC_STATIC_MSG)
  532. // {
  533. // pOldFont = pDC->SelectObject(&m_font3);
  534. // pDC->SetTextColor(RGB(0, 0, 255));
  535. // pDC->SetBkMode( TRANSPARENT );
  536. // //pDC->SelectObject(pOldFont);
  537. // return B1;
  538. // }
  539. DeleteObject(B1);
  540. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  541. return hbr;
  542. }
  543. BOOL CDlg_Controller::OnEraseBkgnd(CDC* pDC)
  544. {
  545. CBrush br1;
  546. CRect rect;
  547. GetWindowRect(&rect);
  548. ScreenToClient(&rect);
  549. br1.CreateSolidBrush(g_Color3);
  550. pDC->FillRect(rect,&br1);
  551. DeleteObject( br1 );
  552. return TRUE;
  553. //return CDialog::OnEraseBkgnd(pDC);
  554. }
  555. void CDlg_Controller::OnCbnSelchangeComboWordmdoe()
  556. {
  557. // TODO: 在此添加控件通知处理程序代码
  558. UpdateData();
  559. if( m_nComb_WordMode==1 )
  560. {
  561. GetDlgItem(IDC_STATIC_3)->ShowWindow( SW_HIDE );
  562. GetDlgItem(IDC_COMBO_COM)->ShowWindow( SW_HIDE );
  563. GetDlgItem(IDC_STATIC_6)->ShowWindow( SW_SHOW );
  564. GetDlgItem(IDC_EDIT_IP)->ShowWindow( SW_SHOW );
  565. GetDlgItem(IDC_STATIC_7)->ShowWindow( SW_SHOW );
  566. GetDlgItem(IDC_EDIT_PORT)->ShowWindow( SW_SHOW );
  567. }
  568. else
  569. {
  570. GetDlgItem(IDC_STATIC_3)->ShowWindow( SW_SHOW );
  571. GetDlgItem(IDC_COMBO_COM)->ShowWindow( SW_SHOW );
  572. GetDlgItem(IDC_STATIC_6)->ShowWindow( SW_HIDE );
  573. GetDlgItem(IDC_EDIT_IP)->ShowWindow( SW_HIDE );
  574. GetDlgItem(IDC_STATIC_7)->ShowWindow( SW_HIDE );
  575. GetDlgItem(IDC_EDIT_PORT)->ShowWindow( SW_HIDE );
  576. }
  577. }
  578. void CDlg_Controller::OnCbnSelchangeComboDoornumber()
  579. {
  580. // TODO: 在此添加控件通知处理程序代码
  581. //int nDoorCur = m_Comb_DoorNumber.GetCurSel();
  582. //GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_HIDE );
  583. //GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_HIDE );
  584. //GetDlgItem( IDC_STATIC3 )->ShowWindow( SW_HIDE );
  585. //GetDlgItem( IDC_EDIT_DOOR3NAME )->ShowWindow( SW_HIDE );
  586. //GetDlgItem( IDC_STATIC4 )->ShowWindow( SW_HIDE );
  587. //GetDlgItem( IDC_EDIT_DOOR4NAME )->ShowWindow( SW_HIDE );
  588. //switch( nDoorCur )
  589. //{
  590. //case 0://1
  591. // {
  592. // m_sEdit_Door2Name = "";
  593. // m_sEdit_Door3Name = "";
  594. // m_sEdit_Door4Name = "";
  595. // }
  596. // break;
  597. //case 1://2
  598. // {
  599. // m_sEdit_Door3Name = "";
  600. // m_sEdit_Door4Name = "";
  601. // GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_SHOW );
  602. // GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_SHOW );
  603. // }
  604. // break;
  605. //case 2://4
  606. // {
  607. // GetDlgItem( IDC_STATIC2 )->ShowWindow( SW_SHOW );
  608. // GetDlgItem( IDC_EDIT_DOOR2NAME )->ShowWindow( SW_SHOW );
  609. // GetDlgItem( IDC_STATIC3 )->ShowWindow( SW_SHOW );
  610. // GetDlgItem( IDC_EDIT_DOOR3NAME )->ShowWindow( SW_SHOW );
  611. // GetDlgItem( IDC_STATIC4 )->ShowWindow( SW_SHOW );
  612. // GetDlgItem( IDC_EDIT_DOOR4NAME )->ShowWindow( SW_SHOW );
  613. // }
  614. // break;
  615. //}
  616. //UpdateData( false );
  617. }
  618. void CDlg_Controller::OnTimer(UINT nIDEvent)
  619. {
  620. // TODO: 在此添加消息处理程序代码和/或调用默认值
  621. //static bool f = false;
  622. //if( nIDEvent==1 )
  623. //{
  624. //}
  625. CDialog::OnTimer(nIDEvent);
  626. }
  627. void CDlg_Controller::OnNMDblclkListControl(NMHDR *pNMHDR, LRESULT *pResult)
  628. {
  629. // TODO: 在此添加控件通知处理程序代码
  630. int iListCount = m_List_Controller.GetItemCount();
  631. POSITION pos = m_List_Controller.GetFirstSelectedItemPosition();
  632. int nListSel = m_List_Controller.GetNextSelectedItem(pos);
  633. if(nListSel>=iListCount || nListSel==-1)
  634. {
  635. return;
  636. }
  637. CString sTemp = m_List_Controller.GetItemText( nListSel,0 );
  638. CDlg_ControllerProperty dlg;
  639. dlg.m_nOperate = EDIT;
  640. dlg.m_Controller.nID = atoi(sTemp);
  641. if( dlg.DoModal()==IDOK )
  642. {
  643. sTemp.Format(" %s",dlg.m_Controller.sName );
  644. m_List_Controller.SetItemText( nListSel,1,sTemp );
  645. sTemp.Format(" %s",dlg.m_Controller.bForbid==0?"启用":"禁用" );
  646. m_List_Controller.SetItemText( nListSel,2,sTemp );
  647. CString sWordMode;
  648. if( dlg.m_Controller.nWordMode==0 )
  649. sWordMode.Format( "COM%d",dlg.m_Controller.nComPort );
  650. else
  651. sWordMode.Format( "IP:%s,Port:%s",dlg.m_Controller.sIP,dlg.m_Controller.sPort );
  652. if( dlg.m_Controller.nBrandType==0 )
  653. sTemp.Format( " 微耕 【SN:%s】【%s】",dlg.m_Controller.sSN,sWordMode );
  654. else if( dlg.m_Controller.nBrandType==1 )
  655. sTemp.Format( " 中控 【SN:%s】【%s】",dlg.m_Controller.sSN,sWordMode );
  656. m_List_Controller.SetItemText(nListSel,3,sTemp );
  657. }
  658. else
  659. return;
  660. for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
  661. {
  662. if( g_Controller[i].nID == dlg.m_Controller.nID )
  663. {
  664. if( g_Controller[i].sSN != dlg.m_Controller.sSN || g_Controller[i].nComPort != dlg.m_Controller.nComPort ||
  665. g_Controller[i].nWordMode!=dlg.m_Controller.nWordMode || g_Controller[i].sIP!=dlg.m_Controller.sIP ||
  666. g_Controller[i].nBrandType!=dlg.m_Controller.nBrandType )
  667. {
  668. g_Controller[i].nID = dlg.m_Controller.nID;
  669. g_Controller[i].sName = dlg.m_Controller.sName;
  670. g_Controller[i].nBrandType = dlg.m_Controller.nBrandType;
  671. g_Controller[i].sSN = dlg.m_Controller.sSN;
  672. g_Controller[i].nWordMode = dlg.m_Controller.nWordMode;
  673. g_Controller[i].nComPort = dlg.m_Controller.nComPort;
  674. g_Controller[i].sIP = dlg.m_Controller.sIP;
  675. g_Controller[i].sPort = dlg.m_Controller.sPort;
  676. g_Controller[i].bForbid = dlg.m_Controller.bForbid;
  677. g_Controller[i].nDoorCount = dlg.m_Controller.nDoorCount;
  678. if( g_pDlgMain->m_pThread_Controller[i] )
  679. {
  680. g_pDlgMain->m_pThread_Controller[i]->StopThread();
  681. delete g_pDlgMain->m_pThread_Controller[i];
  682. g_pDlgMain->m_pThread_Controller[i] = NULL;
  683. g_pDlgMain->m_pDlg_Moniter->DelDoorFromList( dlg.m_Controller.sName.Trim() );
  684. g_pDlgMain->m_pDlg_Moniter->OnDoorSort();
  685. }
  686. for( int n=1;n<9;n++ )
  687. g_Controller[i].sDoorName[n] = dlg.m_Controller.sDoorName[n];
  688. if( g_pDlgMain->m_pThread_Controller[i]==NULL && !g_Controller[i].bForbid )
  689. {
  690. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  691. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  692. }
  693. }
  694. else if( g_Controller[i].bForbid!=dlg.m_Controller.bForbid || g_Controller[i].nDoorCount!=dlg.m_Controller.nDoorCount )
  695. {
  696. int nDelDoor = -1;//-1表示没删 0表示删除但没有添加 2表示已经添加
  697. if( dlg.m_Controller.bForbid )//禁用的删除
  698. {
  699. g_pDlgMain->m_pDlg_Moniter->DelDoorFromList( g_Controller[i].sName );
  700. }
  701. else if( g_Controller[i].nDoorCount!=dlg.m_Controller.nDoorCount )//门的个数改变
  702. {
  703. nDelDoor = 0;
  704. g_pDlgMain->m_pDlg_Moniter->DelDoorFromList( g_Controller[i].sName );
  705. }
  706. if( g_pDlgMain->m_pThread_Controller[i] && !g_Controller[i].bForbid && !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )//已经创建类,并且原来是启用的和在线的,暂停线程
  707. {
  708. SuspendThread( g_pDlgMain->m_pThread_Controller[i]->m_Thread );
  709. }
  710. g_Controller[i].nID = dlg.m_Controller.nID;
  711. g_Controller[i].sName = dlg.m_Controller.sName;
  712. g_Controller[i].nBrandType = dlg.m_Controller.nBrandType;
  713. g_Controller[i].sSN = dlg.m_Controller.sSN;
  714. g_Controller[i].nWordMode = dlg.m_Controller.nWordMode;
  715. g_Controller[i].nComPort = dlg.m_Controller.nComPort;
  716. g_Controller[i].sIP = dlg.m_Controller.sIP;
  717. g_Controller[i].sPort = dlg.m_Controller.sPort;
  718. g_Controller[i].bForbid = dlg.m_Controller.bForbid;
  719. g_Controller[i].nDoorCount = dlg.m_Controller.nDoorCount;
  720. for( int n=1;n<9;n++ )
  721. g_Controller[i].sDoorName[n] = dlg.m_Controller.sDoorName[n];
  722. if( g_pDlgMain->m_pThread_Controller[i] && !g_Controller[i].bForbid && !g_pDlgMain->m_pThread_Controller[i]->m_bExitFinish )//已经创建类,并且现在是启用的和在线的,启用线程
  723. {
  724. nDelDoor = 2;
  725. g_pDlgMain->m_pDlg_Moniter->AddDoorToList( g_Controller[i].sName,2 );
  726. g_pDlgMain->m_pThread_Controller[i]->SetController( g_Controller[i] );
  727. ResumeThread( g_pDlgMain->m_pThread_Controller[i]->m_Thread );
  728. }
  729. else if( g_pDlgMain->m_pThread_Controller[i]==NULL && !g_Controller[i].bForbid )//以前没有创建类,并且现在是启用的,创建类并创建线程
  730. {
  731. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  732. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  733. }
  734. else if( g_pDlgMain->m_pThread_Controller[i] && !g_Controller[i].bForbid )//以前创建类,但连接失败,并且现在是启用的,创建类并创建线程
  735. {
  736. g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] );
  737. g_pDlgMain->m_pThread_Controller[i]->StartThread();
  738. }
  739. if( nDelDoor==0 )
  740. {
  741. g_pDlgMain->m_pDlg_Moniter->AddDoorToList( g_Controller[i].sName,2 );
  742. }
  743. }
  744. else
  745. {
  746. g_Controller[i].nID = dlg.m_Controller.nID;
  747. g_Controller[i].sName = dlg.m_Controller.sName;
  748. g_Controller[i].nBrandType = dlg.m_Controller.nBrandType;
  749. g_Controller[i].sSN = dlg.m_Controller.sSN;
  750. g_Controller[i].nWordMode = dlg.m_Controller.nWordMode;
  751. g_Controller[i].nComPort = dlg.m_Controller.nComPort;
  752. g_Controller[i].sIP = dlg.m_Controller.sIP;
  753. g_Controller[i].sPort = dlg.m_Controller.sPort;
  754. g_Controller[i].bForbid = dlg.m_Controller.bForbid;
  755. g_Controller[i].nDoorCount = dlg.m_Controller.nDoorCount;
  756. for( int n=1;n<9;n++ )
  757. g_Controller[i].sDoorName[n] = dlg.m_Controller.sDoorName[n];
  758. if( !g_Controller[i].bForbid )
  759. g_pDlgMain->m_pThread_Controller[i]->SetController( g_Controller[i] );
  760. }
  761. break;
  762. }
  763. }
  764. //改变门的信息
  765. SetCombDoor( &g_pDlgMain->m_pDlg_Record->m_Comb_Door );
  766. //改变权限界面的控制器
  767. //g_pDlgMain->m_pDlg_Permit->InitTreeInfo();
  768. *pResult = 0;
  769. }
  770. CString CDlg_Controller::GetDoorNameFromDoorInfo( CString sDoorInfo )
  771. {
  772. CString sRet;
  773. int nPos1=0,nPos2=0;
  774. nPos2 = sDoorInfo.Find( "*",nPos1 );
  775. sRet = sDoorInfo.Mid( nPos1,nPos2-nPos1);
  776. return sRet;
  777. }
  778. void CDlg_Controller::ReadController( CListCtrl *pListCtrl )
  779. {
  780. int m=0;
  781. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  782. list<string> list1,list2,list3,list4,list5,list6,list7,list8,list9,list10;
  783. list<string> list11,list12,list13,list14,list15,list16,list17,list18,list19,list20;
  784. list<string> list21,list22,list23,list24,list25,list26,list27,list28,list29,list30;
  785. list<string>::iterator it_list1,it_list2,it_list3,it_list4,it_list5,it_list6,it_list7,it_list8,it_list9,it_list10;
  786. list<string>::iterator it_list11,it_list12,it_list13,it_list14,it_list15,it_list16,it_list17,it_list18,it_list19,it_list20;
  787. list<string>::iterator it_list21,it_list22,it_list23,it_list24,it_list25,it_list26,it_list27,it_list28,it_list29,it_list30;
  788. if(!_stricmp(g_strDBType, "PGSQL"))
  789. {
  790. sprintf(strSQLText, "select id, nbrandtype, scontrolname,ssn,nwordmode,ncomport,sip,sport,nforbid,ndoorconut,sdoor1,sdoor2,sdoor3,sdoor4,sdoor5,sdoor6,sdoor7,sdoor8, "\
  791. "intreserved1,intreserved2,intreserved3,intreserved4,intreserved5,intreserved6,strreserved1,strreserved2,strreserved3,strreserved4,strreserved5,strreserved6 "\
  792. "from t_door_control order by id");
  793. }
  794. else
  795. {
  796. sprintf(strSQLText, "select id, nbrandtype, scontrolname,ssn,nwordmode,ncomport,sip,sport,nforbid,ndoorconut,sdoor1,sdoor2,sdoor3,sdoor4,sdoor5,sdoor6,sdoor7,sdoor8, "\
  797. "intreserved1,intreserved2,intreserved3,intreserved4,intreserved5,intreserved6,strreserved1,strreserved2,strreserved3,strreserved4,strreserved5,strreserved6 "\
  798. "from t_door_control order by id");
  799. }
  800. int nRet = GetFieldValueList30( strSQLText,list1,list2,list3,list4,list5,list6,list7,list8,list9,list10
  801. ,list11,list12,list13,list14,list15,list16,list17,list18,list19,list20
  802. ,list21,list22,list23,list24,list25,list26,list27,list28,list29,list30);
  803. if( 0 == list1.size() || 0 == list2.size() )
  804. {
  805. return ;
  806. }
  807. if( nRet != -1 )
  808. {
  809. int nIndex = 0;
  810. CString sID,sBrandType,sControlName,sSn,sWordMode,sComPort,sIP,sPort,sForbid,sDoorCount;
  811. CString sDoor1,sDoor2,sDoor3,sDoor4,sDoor5,sDoor6,sDoor7,sDoor8;
  812. CString sTemp;
  813. for( it_list1=list1.begin(),it_list2=list2.begin(),it_list3=list3.begin(),
  814. it_list4=list4.begin(),it_list5=list5.begin(),it_list6=list6.begin(),
  815. it_list7=list7.begin(),it_list8=list8.begin(),it_list9=list9.begin(),
  816. it_list10=list10.begin(),it_list11=list11.begin(),it_list12=list12.begin(),
  817. it_list13=list13.begin(),it_list14=list14.begin(),it_list15=list15.begin(),
  818. it_list16=list16.begin(),it_list17=list17.begin(),it_list18=list18.begin();
  819. it_list1!=list1.end() && it_list2!=list2.end() && it_list3!=list3.end() &&
  820. it_list4!=list4.end() && it_list5!=list5.end() && it_list6!=list6.end() &&
  821. it_list7!=list7.end() && it_list8!=list8.end() && it_list9!=list9.end() &&
  822. it_list10!=list10.end() && it_list11!=list11.end() && it_list12!=list12.end() &&
  823. it_list13!=list13.end() && it_list14!=list14.end() && it_list15!=list15.end() &&
  824. it_list16!=list16.end() && it_list17!=list17.end() && it_list18!=list18.end();
  825. it_list1++,it_list2++,it_list3++,
  826. it_list4++,it_list5++,it_list6++,
  827. it_list7++,it_list8++,it_list9++,
  828. it_list10++,it_list11++,it_list12++,
  829. it_list13++,it_list14++,it_list15++,
  830. it_list16++,it_list17++,it_list18++ )
  831. {
  832. sID = (*it_list1).c_str();
  833. sBrandType = (*it_list2).c_str();
  834. sControlName = (*it_list3).c_str();
  835. sSn = (*it_list4).c_str();
  836. sWordMode = (*it_list5).c_str();
  837. sComPort = (*it_list6).c_str();
  838. sIP = (*it_list7).c_str();
  839. sPort = (*it_list8).c_str();
  840. sForbid = (*it_list9).c_str();
  841. sDoorCount = (*it_list10).c_str();
  842. sDoor1 = (*it_list11).c_str();
  843. sDoor2 = (*it_list12).c_str();
  844. sDoor3 = (*it_list13).c_str();
  845. sDoor4 = (*it_list14).c_str();
  846. sDoor5 = (*it_list15).c_str();
  847. sDoor6 = (*it_list16).c_str();
  848. sDoor7 = (*it_list17).c_str();
  849. sDoor8 = (*it_list18).c_str();
  850. g_Controller[nIndex].nID = atoi( sID );
  851. g_Controller[nIndex].nBrandType = atoi( sBrandType );
  852. g_Controller[nIndex].sName = sControlName;
  853. g_Controller[nIndex].sSN = sSn;
  854. g_Controller[nIndex].nWordMode = atoi( sWordMode );
  855. g_Controller[nIndex].nComPort = atoi( sComPort );
  856. g_Controller[nIndex].sIP = sIP;
  857. g_Controller[nIndex].sPort = sPort;
  858. g_Controller[nIndex].bForbid = atoi( sForbid );
  859. g_Controller[nIndex].nDoorCount = atoi( sDoorCount );
  860. g_Controller[nIndex].sDoorName[1] = GetDoorNameFromDoorInfo( sDoor1 );
  861. g_Controller[nIndex].sDoorName[2] = GetDoorNameFromDoorInfo( sDoor2 );
  862. g_Controller[nIndex].sDoorName[3] = GetDoorNameFromDoorInfo( sDoor3 );
  863. g_Controller[nIndex].sDoorName[4] = GetDoorNameFromDoorInfo( sDoor4 );
  864. g_Controller[nIndex].sDoorName[5] = GetDoorNameFromDoorInfo( sDoor5 );
  865. g_Controller[nIndex].sDoorName[6] = GetDoorNameFromDoorInfo( sDoor6 );
  866. g_Controller[nIndex].sDoorName[7] = GetDoorNameFromDoorInfo( sDoor7 );
  867. g_Controller[nIndex].sDoorName[8] = GetDoorNameFromDoorInfo( sDoor8 );
  868. g_Controller[nIndex].sDoorAll[1] = sDoor1;
  869. g_Controller[nIndex].sDoorAll[2] = sDoor2;
  870. g_Controller[nIndex].sDoorAll[3] = sDoor3;
  871. g_Controller[nIndex].sDoorAll[4] = sDoor4;
  872. g_Controller[nIndex].sDoorAll[5] = sDoor5;
  873. g_Controller[nIndex].sDoorAll[6] = sDoor6;
  874. g_Controller[nIndex].sDoorAll[7] = sDoor7;
  875. g_Controller[nIndex].sDoorAll[8] = sDoor8;
  876. int n=0;
  877. pListCtrl->InsertItem( n,sID );
  878. pListCtrl->SetItemText( n,1," "+sControlName );
  879. sTemp.Format( " %s",sForbid=="0"?"启用":"禁用" );
  880. pListCtrl->SetItemText( n,2,sTemp );
  881. CString sWordMode;
  882. if( g_Controller[nIndex].nWordMode==0 )
  883. sWordMode.Format( "COM%d",g_Controller[nIndex].nComPort );
  884. else
  885. sWordMode.Format( "IP:%s,Port:%s",g_Controller[nIndex].sIP,g_Controller[nIndex].sPort );
  886. if( g_Controller[nIndex].nBrandType==0 )
  887. sTemp.Format( " 微耕 【SN:%s】【%s】",g_Controller[nIndex].sSN,sWordMode );
  888. else if( g_Controller[nIndex].nBrandType==1 )
  889. sTemp.Format( " 中控 【SN:%s】【%s】",g_Controller[nIndex].sSN,sWordMode );
  890. pListCtrl->SetItemText(n,3,sTemp );
  891. nIndex++;
  892. }
  893. }
  894. for( it_list1=list1.begin(),it_list2=list2.begin(),it_list3=list3.begin(),it_list4=list4.begin(),it_list5=list5.begin(),it_list6=list6.begin(),
  895. it_list7=list7.begin(),it_list8=list8.begin(),it_list9=list9.begin(),it_list10=list10.begin(),it_list11=list11.begin(),it_list12=list12.begin(),
  896. it_list13=list13.begin(),it_list14=list14.begin(),it_list15=list15.begin(),it_list16=list16.begin(),it_list17=list17.begin(),it_list18=list18.begin(),
  897. it_list19=list19.begin(),it_list20=list20.begin(),it_list21=list21.begin(),it_list22=list22.begin(),it_list23=list23.begin(),it_list24=list24.begin(),
  898. it_list25=list25.begin(),it_list26=list26.begin(),it_list27=list27.begin(),it_list28=list28.begin(),it_list29=list29.begin(),it_list30=list30.begin();
  899. it_list1!=list1.end(),it_list2!=list2.end(),it_list3!=list3.end(),it_list4!=list4.end(),it_list5!=list5.end(),it_list6!=list6.end(),
  900. it_list7!=list7.end(),it_list8!=list8.end(),it_list9!=list9.end(),it_list10!=list10.end(),it_list11!=list11.end(),it_list12!=list12.end(),
  901. it_list13!=list13.end(),it_list14!=list14.end(),it_list15!=list15.end(),it_list16!=list16.end(),it_list17!=list17.end(),it_list18!=list18.end(),
  902. it_list19!=list19.end(),it_list20!=list20.end(),it_list21!=list21.end(),it_list22!=list22.end(),it_list23!=list23.end(),it_list24!=list24.end(),
  903. it_list25!=list25.end(),it_list26!=list26.end(),it_list27!=list27.end(),it_list28!=list28.end(),it_list29!=list29.end(),it_list30!=list30.end();)
  904. {
  905. list1.erase(it_list1++);
  906. list2.erase(it_list2++);
  907. list3.erase(it_list3++);
  908. list4.erase(it_list4++);
  909. list5.erase(it_list5++);
  910. list6.erase(it_list6++);
  911. list7.erase(it_list7++);
  912. list8.erase(it_list8++);
  913. list9.erase(it_list9++);
  914. list10.erase(it_list10++);
  915. list11.erase(it_list11++);
  916. list12.erase(it_list12++);
  917. list13.erase(it_list13++);
  918. list14.erase(it_list14++);
  919. list15.erase(it_list15++);
  920. list16.erase(it_list16++);
  921. list17.erase(it_list17++);
  922. list18.erase(it_list18++);
  923. list19.erase(it_list19++);
  924. list20.erase(it_list20++);
  925. list21.erase(it_list21++);
  926. list22.erase(it_list22++);
  927. list23.erase(it_list23++);
  928. list24.erase(it_list24++);
  929. list25.erase(it_list25++);
  930. list26.erase(it_list26++);
  931. list27.erase(it_list27++);
  932. list28.erase(it_list28++);
  933. list29.erase(it_list29++);
  934. list30.erase(it_list30++);
  935. }
  936. }