Commit 79d8cfb20da2938c8ce440302acb6de195756988

Authored by xiemeng
1 parent bd105ca3

update 20210204

... ... @@ -43,7 +43,6 @@ typedef enum
43 43 typedef enum
44 44 {
45 45 BLUE_THREAD_STOP,
46   - BLUE_THREAD_READY,
47 46 BLUE_THREAD_DOING,
48 47 BLUE_THREAD_MAX
49 48 }BLUE_THREAD_STATE;
... ...
... ... @@ -73,66 +73,65 @@ IDR_MAINFRAME ICON "res\\BlueFlashTool.ico"
73 73 // Dialog
74 74 //
75 75
76   -IDD_BLUEFLASHTOOL_DIALOG DIALOGEX 0, 0, 597, 395
  76 +IDD_BLUEFLASHTOOL_DIALOG DIALOGEX 0, 0, 934, 459
77 77 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
78 78 EXSTYLE WS_EX_APPWINDOW
79 79 CAPTION "BlueFlashTool"
80 80 FONT 9, "宋体", 0, 0, 0x1
81 81 BEGIN
82   - PUSHBUTTON "全部开始",IDC_START_ALL,487,31,84,30
83 82 PUSHBUTTON "全部停止",IDC_STOP_ALL,487,66,84,30
84 83 PUSHBUTTON "参数设置",IDC_BUTTON_SETTING,487,161,84,30
85   - CONTROL "",IDC_MSCOMM0,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
86   - CONTROL "",IDC_MSCOMM1,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
87   - CONTROL "",IDC_MSCOMM2,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
88   - CONTROL "",IDC_MSCOMM3,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
89   - CONTROL "",IDC_MSCOMM4,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
90   - CONTROL "",IDC_MSCOMM5,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
91   - CONTROL "",IDC_MSCOMM6,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
92   - CONTROL "",IDC_MSCOMM7,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
93   - CONTROL "",IDC_MSCOMM8,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
94   - CONTROL "",IDC_MSCOMM9,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
95   - CONTROL "",IDC_MSCOMM10,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
96   - CONTROL "",IDC_MSCOMM11,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
97   - CONTROL "",IDC_MSCOMM12,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
98   - CONTROL "",IDC_MSCOMM13,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
99   - CONTROL "",IDC_MSCOMM14,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
100   - CONTROL "",IDC_MSCOMM15,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
101   - CONTROL "",IDC_MSCOMM16,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
102   - CONTROL "",IDC_MSCOMM17,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
103   - CONTROL "",IDC_MSCOMM18,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
104   - CONTROL "",IDC_MSCOMM19,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
105   - CONTROL "",IDC_MSCOMM20,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
106   - CONTROL "",IDC_MSCOMM21,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
107   - CONTROL "",IDC_MSCOMM22,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
108   - CONTROL "",IDC_MSCOMM23,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
109   - CONTROL "",IDC_MSCOMM24,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
110   - CONTROL "",IDC_MSCOMM25,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
111   - CONTROL "",IDC_MSCOMM26,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
112   - CONTROL "",IDC_MSCOMM27,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
113   - CONTROL "",IDC_MSCOMM28,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
114   - CONTROL "",IDC_MSCOMM29,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
115   - CONTROL "",IDC_MSCOMM30,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
116   - CONTROL "",IDC_MSCOMM31,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
117   - CONTROL "",IDC_MSCOMM32,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
118   - CONTROL "",IDC_MSCOMM33,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
119   - CONTROL "",IDC_MSCOMM34,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
120   - CONTROL "",IDC_MSCOMM35,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
121   - CONTROL "",IDC_MSCOMM36,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
122   - CONTROL "",IDC_MSCOMM37,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
123   - CONTROL "",IDC_MSCOMM38,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
124   - CONTROL "",IDC_MSCOMM39,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
125   - CONTROL "",IDC_MSCOMM40,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
126   - CONTROL "",IDC_MSCOMM41,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
127   - CONTROL "",IDC_MSCOMM42,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
128   - CONTROL "",IDC_MSCOMM43,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
129   - CONTROL "",IDC_MSCOMM44,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
130   - CONTROL "",IDC_MSCOMM45,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
131   - CONTROL "",IDC_MSCOMM46,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
132   - CONTROL "",IDC_MSCOMM47,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
133   - CONTROL "",IDC_MSCOMM48,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
134   - CONTROL "",IDC_MSCOMM49,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
135   - CONTROL "",IDC_MSCOMM50,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,0,300,25,25
  84 + CONTROL "",IDC_MSCOMM0,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,860,361,25,25
  85 + CONTROL "",IDC_MSCOMM1,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,10,343,25,25
  86 + CONTROL "",IDC_MSCOMM2,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,843,343,25,25
  87 + CONTROL "",IDC_MSCOMM3,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,826,343,25,25
  88 + CONTROL "",IDC_MSCOMM4,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,809,343,25,25
  89 + CONTROL "",IDC_MSCOMM5,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,792,343,25,25
  90 + CONTROL "",IDC_MSCOMM6,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,775,343,25,25
  91 + CONTROL "",IDC_MSCOMM7,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,758,343,25,25
  92 + CONTROL "",IDC_MSCOMM8,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,741,343,25,25
  93 + CONTROL "",IDC_MSCOMM9,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,724,343,25,25
  94 + CONTROL "",IDC_MSCOMM10,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,707,343,25,25
  95 + CONTROL "",IDC_MSCOMM11,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,690,343,25,25
  96 + CONTROL "",IDC_MSCOMM12,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,673,343,25,25
  97 + CONTROL "",IDC_MSCOMM13,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,656,343,25,25
  98 + CONTROL "",IDC_MSCOMM14,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,639,343,25,25
  99 + CONTROL "",IDC_MSCOMM15,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,622,343,25,25
  100 + CONTROL "",IDC_MSCOMM16,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,605,343,25,25
  101 + CONTROL "",IDC_MSCOMM17,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,588,343,25,25
  102 + CONTROL "",IDC_MSCOMM18,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,571,343,25,25
  103 + CONTROL "",IDC_MSCOMM19,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,554,343,25,25
  104 + CONTROL "",IDC_MSCOMM20,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,537,343,25,25
  105 + CONTROL "",IDC_MSCOMM21,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,520,343,25,25
  106 + CONTROL "",IDC_MSCOMM22,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,503,343,25,25
  107 + CONTROL "",IDC_MSCOMM23,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,486,343,25,25
  108 + CONTROL "",IDC_MSCOMM24,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,469,343,25,25
  109 + CONTROL "",IDC_MSCOMM25,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,452,343,25,25
  110 + CONTROL "",IDC_MSCOMM26,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,435,343,25,25
  111 + CONTROL "",IDC_MSCOMM27,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,418,343,25,25
  112 + CONTROL "",IDC_MSCOMM28,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,401,343,25,25
  113 + CONTROL "",IDC_MSCOMM29,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,384,343,25,25
  114 + CONTROL "",IDC_MSCOMM30,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,367,343,25,25
  115 + CONTROL "",IDC_MSCOMM31,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,350,343,25,25
  116 + CONTROL "",IDC_MSCOMM32,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,333,343,25,25
  117 + CONTROL "",IDC_MSCOMM33,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,316,343,25,25
  118 + CONTROL "",IDC_MSCOMM34,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,299,343,25,25
  119 + CONTROL "",IDC_MSCOMM35,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,282,343,25,25
  120 + CONTROL "",IDC_MSCOMM36,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,265,343,25,25
  121 + CONTROL "",IDC_MSCOMM37,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,248,343,25,25
  122 + CONTROL "",IDC_MSCOMM38,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,231,343,25,25
  123 + CONTROL "",IDC_MSCOMM39,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,214,343,25,25
  124 + CONTROL "",IDC_MSCOMM40,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,197,343,25,25
  125 + CONTROL "",IDC_MSCOMM41,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,180,343,25,25
  126 + CONTROL "",IDC_MSCOMM42,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,163,343,25,25
  127 + CONTROL "",IDC_MSCOMM43,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,146,343,25,25
  128 + CONTROL "",IDC_MSCOMM44,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,129,343,25,25
  129 + CONTROL "",IDC_MSCOMM45,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,112,343,25,25
  130 + CONTROL "",IDC_MSCOMM46,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,95,343,25,25
  131 + CONTROL "",IDC_MSCOMM47,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,78,343,25,25
  132 + CONTROL "",IDC_MSCOMM48,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,61,343,25,25
  133 + CONTROL "",IDC_MSCOMM49,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,44,343,25,25
  134 + CONTROL "",IDC_MSCOMM50,"{648A5600-2C6E-101B-82B6-000000000014}",WS_TABSTOP,27,343,25,25
136 135 LISTBOX IDC_DEBUG_MESSAGE,0,261,591,41,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
137 136 PUSHBUTTON "连接夹具",IDC_BUTTON_INIT_COMPORT,487,119,84,30
138 137 GROUPBOX "静态",IDC_STATIC_GROUP_EAR,39,27,48,40
... ... @@ -238,9 +237,9 @@ BEGIN
238 237 IDD_BLUEFLASHTOOL_DIALOG, DIALOG
239 238 BEGIN
240 239 LEFTMARGIN, 7
241   - RIGHTMARGIN, 590
  240 + RIGHTMARGIN, 927
242 241 TOPMARGIN, 7
243   - BOTTOMMARGIN, 388
  242 + BOTTOMMARGIN, 452
244 243 END
245 244
246 245 IDD_SYSTEM_CONFIG, DIALOG
... ...
... ... @@ -31,8 +31,6 @@ CBlueFlashToolDlg::CBlueFlashToolDlg(CWnd* pParent /*=NULL*/)
31 31 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
32 32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
33 33 memset(ifUartEnable,0,BLUE_TYPE_MAX*MAX_TOPWELL_DEVICE_NUM);
34   - memcpy(strSignalFlashReady,"ROM boot",16);
35   - memcpy(strSignalFlashing,"Programming:97",20);
36 34 mystrAppcurrDir = GetCurrPath();
37 35 }
38 36
... ... @@ -267,10 +265,6 @@ BOOL CBlueFlashToolDlg::OnInitDialog()
267 265
268 266
269 267
270   - GetDlgItem(IDC_START_ALL)->MoveWindow(
271   - rect_SN_info[loop1-1][loop2-1].right+50,
272   - rect_SN_info[0][0].top+20,
273   - 100,50);
274 268 GetDlgItem(IDC_STOP_ALL)->MoveWindow(
275 269 rect_SN_info[loop1-1][loop2-1].right+50,
276 270 rect_SN_info[0][0].top+90,
... ... @@ -284,7 +278,6 @@ BOOL CBlueFlashToolDlg::OnInitDialog()
284 278 rect_SN_info[loop1-1][loop2-1].bottom-70,
285 279 100,50);
286 280
287   - GetDlgItem(IDC_START_ALL)->SetFont(&myfontButton);
288 281 GetDlgItem(IDC_STOP_ALL)->SetFont(&myfontButton);
289 282 GetDlgItem(IDC_BUTTON_INIT_COMPORT)->SetFont(&myfontButton);
290 283 GetDlgItem(IDC_BUTTON_SETTING)->SetFont(&myfontButton);
... ... @@ -395,14 +388,13 @@ void CBlueFlashToolDlg::UpdateGroupsCaptions()
395 388
396 389 }
397 390 }
398   - GetDlgItem(IDC_START_ALL)->EnableWindow(sumPort> 0 ? TRUE: FALSE);
399 391 }
400 392
401 393
402 394 BEGIN_EVENTSINK_MAP(CBlueFlashToolDlg, CDialog)
403 395 ON_EVENT(CBlueFlashToolDlg, IDC_MSCOMM0, 1, CBlueFlashToolDlg::OnCommMscommDebug, VTS_NONE)
404   - //ON_EVENT(CBlueFlashToolDlg, IDC_MSCOMM1, 1, CBlueFlashToolDlg::OnCommMscomm1, VTS_NONE)
405   - ON_EVENT_RANGE(CBlueFlashToolDlg, IDC_MSCOMM1,IDC_MSCOMM1+50, 1 /* OnComm */, OnCommMscomm1, VTS_I4 )
  396 + //ON_EVENT_RANGE(CBlueFlashToolDlg, IDC_MSCOMM1,IDC_MSCOMM1+50, 1 /* OnComm */, OnCommMscomm1, VTS_I4 )
  397 +// ON_EVENT(CBlueFlashToolDlg, IDC_MSCOMM1, 1, CBlueFlashToolDlg::OnCommMscomm1, VTS_NONE)
406 398 END_EVENTSINK_MAP()
407 399
408 400
... ... @@ -425,9 +417,11 @@ void CBlueFlashToolDlg::OnBnClickedButtonInitComport()
425 417 }
426 418 }
427 419 GetDlgItem(IDC_BUTTON_INIT_COMPORT)->SetWindowText("断开夹具");
  420 +
428 421 }
429 422 else
430 423 {
  424 + OnBnClickedStopAll();
431 425 for (loop1 = 0; loop1 < BLUE_TYPE_MAX; loop1++)
432 426 {
433 427 for (loop2 = 0; loop2 < MAX_TOPWELL_DEVICE_NUM; loop2++)
... ... @@ -469,7 +463,7 @@ bool CBlueFlashToolDlg::OpenComport(int earOrUsb, int index)
469 463 if (QuerySingleSerialPortEx(comopen_port) != TRUE)
470 464 {
471 465 DBG_print("[%d]已被占用 %d",__LINE__,comopen_port);
472   - g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][loop]=0;
  466 + g_AppMainData.ary_myComPort[earOrUsb][loop]=0;
473 467 ifUartEnable[earOrUsb][index] = false;
474 468 return false;
475 469 }
... ... @@ -483,7 +477,7 @@ bool CBlueFlashToolDlg::OpenComport(int earOrUsb, int index)
483 477 }
484 478 mycom[earOrUsb][index].SetCommPort(g_AppMainData.ary_myComPort[earOrUsb][index]); //选择com1
485 479 mycom[earOrUsb][index].SetInputMode(1);
486   - mycom[earOrUsb][index].SetInputLen(BLUE_UART_INPUTBUFFER_SIZE); //设置当前接收区数据长度为0
  480 + mycom[earOrUsb][index].SetInputLen(0); //设置当前接收区数据长度为0
487 481 mycom[earOrUsb][index].SetOutBufferSize(512);
488 482 mycom[earOrUsb][index].SetSettings(m_strSettings); //波特率9600,无校验,8个数据位,1个停止位
489 483
... ... @@ -506,7 +500,7 @@ bool CBlueFlashToolDlg::OpenComport(int earOrUsb, int index)
506 500 else
507 501 {
508 502 DBG_print("[%d]串口%d无法打开",__LINE__,comopen_port );
509   - g_AppMainData.ary_myComPort[BLUE_TYPE_EAR][loop]=0;
  503 + g_AppMainData.ary_myComPort[earOrUsb][loop]=0;
510 504 ifUartEnable[earOrUsb][index] = false;
511 505 }
512 506 mycom[earOrUsb][index].GetInput(); //先预读缓冲区以清除残留数据
... ... @@ -558,79 +552,123 @@ int CBlueFlashToolDlg::DBG_print(const char * strMsg, ...)
558 552 }
559 553
560 554
561   -void CBlueFlashToolDlg::OnCommMscomm1(UINT nID)
  555 +void CBlueFlashToolDlg::CommMscomm(int aDeviceType,int aIndex)
562 556 {
563 557 // TODO: Add your control notification handler code here
  558 +
  559 + typedef enum
  560 + {
  561 + PCBCMD_NOCMD,
  562 + PCBCMD_START,
  563 + PCBCMD_PROCESS,
  564 + PCBCMD_FINISH_SUCESS,
  565 + PCBCMD_FINISH_FAIL
  566 + }UART_CMD_FROM_PCB_ENUM;
  567 +
  568 +
564 569 CMSComm * apctrlMSComm;
565 570 VARIANT variant_inp_com_msg;
566 571 COleSafeArray safearray_inp;
567 572 LONG len, k;
568   - int aDeviceType ;//设备类型
569   - int aIndex; //设备索引
570 573 //char flash_process[4];
571   - char message_rev[BLUE_UART_INPUTBUFFER_SIZE];
  574 + char message_rev[BLUE_UART_INPUTBUFFER_SIZE*2];
572 575 char onecharOfBuf;
573   - char *pmybufferFromUart;
  576 + char *pmybufferMsgFromPcb;
  577 + bool stop_check_command = false;
  578 + UART_CMD_FROM_PCB_ENUM commandFromPcb = PCBCMD_NOCMD;
  579 + if (aDeviceType <0 || aDeviceType > BLUE_TYPE_MAX) return;
  580 + if (aIndex <0 || aIndex > MAX_TOPWELL_DEVICE_NUM) return;
  581 +
  582 +
574 583 memset(message_rev,0,BLUE_UART_INPUTBUFFER_SIZE);
575   - aDeviceType = (nID - IDC_MSCOMM1)/MAX_TOPWELL_DEVICE_NUM;
576   - aIndex = (nID - IDC_MSCOMM1)%MAX_TOPWELL_DEVICE_NUM;
577   - pmybufferFromUart = (char *)mybufferFromUart[aDeviceType][aIndex];
578   - if (strlen(pmybufferFromUart) >= BLUE_UART_INPUTBUFFER_SIZE)
579   - memset(pmybufferFromUart,0,BLUE_UART_INPUTBUFFER_SIZE);
  584 + pmybufferMsgFromPcb = (char *)mybufferFromUart[aDeviceType][aIndex];
  585 + if (strlen(pmybufferMsgFromPcb) >= BLUE_UART_INPUTBUFFER_SIZE)
  586 + memset(pmybufferMsgFromPcb,0,BLUE_UART_INPUTBUFFER_SIZE);
580 587 if (mycom[aDeviceType][aIndex].GetCommEvent() == 2) //事件值为2表示接收缓冲区内有字符
581 588 {
582 589 variant_inp_com_msg = mycom[aDeviceType][aIndex].GetInput(); //读缓冲区
583 590 safearray_inp = variant_inp_com_msg; //VARIANT型变量转换为ColeSafeArray型变量
584 591 len = safearray_inp.GetOneDimSize(); //得到有效数据长度
  592 + if(len < 1|| len >= 512 ) return;
585 593 for (k = 0; k < len; k++)
586 594 {
587 595 safearray_inp.GetElement(&k, &onecharOfBuf);
588 596 if (onecharOfBuf != 0 && onecharOfBuf != 10)
589 597 {//把UART接收缓冲区的一个非零字节保存下来
590   - pmybufferFromUart[strlen(pmybufferFromUart)] = onecharOfBuf;
  598 + pmybufferMsgFromPcb[strlen(pmybufferMsgFromPcb)] = onecharOfBuf;
591 599 }
592 600 else
593   - {// 如果UART缓冲区的这个字节是0, 则表示结束 , 开始解析该命令
594   - if (strlen(pmybufferFromUart))
595   - strcpy(message_rev,pmybufferFromUart);
596   - memset(pmybufferFromUart,0,BLUE_UART_INPUTBUFFER_SIZE);
  601 + {// 如果UART缓冲区的这个字节是0, 或者是换行符, 则接收到一条完整的信息, , 开始解析该命令
  602 + if (strlen(pmybufferMsgFromPcb))
  603 + {
  604 + strcpy(message_rev,pmybufferMsgFromPcb);
  605 + //立即清空缓冲区, 以待保存下一个新命令
  606 + memset(pmybufferMsgFromPcb,0,BLUE_UART_INPUTBUFFER_SIZE);
  607 + }
  608 + else
  609 + return; //依然是空的, 则什么也不做
597 610 }
598 611 }
599   - // 最后一个字符没有结尾, 接着读下一次UART的缓冲区
600   - if (onecharOfBuf != 0 && onecharOfBuf != 10)
601   - return;
602   - //pmessage_rev = safearray_inp.;
603   - if (strlen(message_rev) == 0)
604   - {
605   - myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapWait);
606   - return;
607   - }
608   - DBG_print("线路 %d %s",g_AppMainData.ary_myComPort[aDeviceType][aIndex],message_rev);
609   - if(strstr(message_rev, strSignalFlashReady) != NULL)
  612 + if (strlen(message_rev) == 0) return;
  613 + if (strstr(message_rev, "ROM boot"))
610 614 {
611   - CString strtmsg;
612   - myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapReady);
613   -
614   - myStaticSn[aDeviceType][aIndex].GetWindowText(strtmsg);
615   - myThreadData[aDeviceType][aIndex].Filename = mystrAppcurrDir+"Bins\\ear\\"+strtmsg;
616   -
617   - mytickcount[aDeviceType][aIndex] = GetTickCount();
618   - myThreadData[aDeviceType][aIndex].pDlg = this;
619   - myThreadData[aDeviceType][aIndex].blue_device_type = (BYTE)aDeviceType;
620   - myThreadData[aDeviceType][aIndex].nIndex = aIndex;
621   - myThreadData[aDeviceType][aIndex].StartThread = BLUE_THREAD_READY;
622   - myThreadData[aDeviceType][aIndex].pctrlMSComm = &mycom[aDeviceType][aDeviceType];
623   - myThreadData[aDeviceType][aIndex].m_hThread = AfxBeginThread(BlueFlashThreadProc, &myThreadData[aDeviceType][aIndex]);
624   - myctrlStartButton[aDeviceType][aIndex].SetWindowText("停止");
  615 + DBG_print("线路 %d 开始下载",g_AppMainData.ary_myComPort[aDeviceType][aIndex]);
  616 + commandFromPcb = PCBCMD_START;
625 617 }
626   - else if (strstr((char *)message_rev,strSignalFlashing) != NULL)
  618 + if (strstr(message_rev, "Programming:"))
627 619 {
628   - myctrlProcess[aDeviceType][aIndex].SetPos(atoi(message_rev+12)*10);
  620 + DBG_print("线路 %d 下载中",g_AppMainData.ary_myComPort[aDeviceType][aIndex]);
  621 + commandFromPcb = PCBCMD_PROCESS;
629 622 }
630   - else
  623 + if (strstr(message_rev, "Verify successful"))
  624 + commandFromPcb = PCBCMD_FINISH_SUCESS;
  625 + if (strstr(message_rev, "Verify fail"))
  626 + commandFromPcb = PCBCMD_FINISH_FAIL;
  627 + if (commandFromPcb ==PCBCMD_NOCMD) return;
  628 + // 无效UART信息, 直接返回, 什么也不做
  629 + memset(message_rev,0,BLUE_UART_INPUTBUFFER_SIZE);
  630 + switch(commandFromPcb)
631 631 {
632   - DBG_print("线路 %d %s",g_AppMainData.ary_myComPort[aDeviceType][aIndex],message_rev);
633   - myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapWait);
  632 + case PCBCMD_START:
  633 + {
  634 + CString strtmsg;
  635 + myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapReady);
  636 + if (myThreadData[aDeviceType][aIndex].StartThread == BLUE_THREAD_DOING)
  637 + return;
  638 + myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapReady);
  639 + myStaticSn[aDeviceType][aIndex].GetWindowText(strtmsg);
  640 + myThreadData[aDeviceType][aIndex].Filename = mystrAppcurrDir+"Bins\\ear\\"+strtmsg;
  641 + mytickcount[aDeviceType][aIndex] = GetTickCount();
  642 + myThreadData[aDeviceType][aIndex].pDlg = this;
  643 + myThreadData[aDeviceType][aIndex].blue_device_type = (BYTE)aDeviceType;
  644 + myThreadData[aDeviceType][aIndex].nIndex = aIndex;
  645 + myThreadData[aDeviceType][aIndex].pctrlMSComm = &mycom[aDeviceType][aDeviceType];
  646 + myThreadData[aDeviceType][aIndex].m_hThread = AfxBeginThread(BlueFlashThreadProc, &myThreadData[aDeviceType][aIndex]);
  647 + myctrlStartButton[aDeviceType][aIndex].SetWindowText("停止");
  648 + DBG_print("线路 %d 开始下载",g_AppMainData.ary_myComPort[aDeviceType][aIndex]);
  649 + }
  650 + break;
  651 + case PCBCMD_PROCESS:
  652 + {
  653 + char *numPercent = strstr(message_rev,":");
  654 + int percent = atoi(numPercent+1);
  655 + myctrlProcess[aDeviceType][aIndex].SetPos(percent);
  656 + if(!(percent&0x0f)) DBG_print("线路 %d.下载中%d",g_AppMainData.ary_myComPort[aDeviceType][aIndex],percent);
  657 + myctrlProcess[aDeviceType][aIndex].SendMessage(PBM_SETBARCOLOR, 0, RGB(0, 0,150));
  658 + }
  659 + break;
  660 + case PCBCMD_FINISH_SUCESS:
  661 + {
  662 + DBG_print("下载成功");
  663 + myctrlProcess[aDeviceType][aIndex].SendMessage(PBM_SETBARCOLOR, 0, RGB(0, 255,0));
  664 + }
  665 + break;
  666 + case PCBCMD_FINISH_FAIL:
  667 + {
  668 + DBG_print("下载失败!!");
  669 + myctrlProcess[aDeviceType][aIndex].SendMessage(PBM_SETBARCOLOR, 0, RGB(255, 0,0));
  670 + }
  671 + break;
634 672 }
635 673 }
636 674 }
... ... @@ -665,6 +703,7 @@ UINT BlueFlashThreadProc(LPVOID lParam)
665 703 if (!pctrlMSComm)
666 704 {
667 705 pThreadData->StartThread = BLUE_THREAD_STOP;
  706 + pThreadData->pDlg->DBG_print("[%d]线路%d 无效, 终止下载",__LINE__,g_AppMainData.ary_myComPort[aDeviceType][aIndex]);
668 707 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
669 708 pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
670 709 return -1; //如果线程参数位空, 直接退出
... ... @@ -697,11 +736,11 @@ UINT BlueFlashThreadProc(LPVOID lParam)
697 736
698 737 for(loop=0;loop<numParts;loop++)
699 738 {
700   - if (pThreadData->StartThread == false)
  739 + if (pThreadData->StartThread == BLUE_THREAD_STOP)
701 740 {// 检查是否有停止指令
702   - pThreadData->StartThread = BLUE_THREAD_STOP;
703 741 MyFile1.Close();
704 742 ByteArray_512.RemoveAll();
  743 + pThreadData->pDlg->DBG_print("[%d]线路%d 被中止",__LINE__,g_AppMainData.ary_myComPort[aDeviceType][aIndex]);
705 744 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
706 745 pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
707 746 return 0;
... ... @@ -712,10 +751,12 @@ UINT BlueFlashThreadProc(LPVOID lParam)
712 751 ByteArray_512.SetSize(1 * 512);
713 752 for (int i= 0;i < 512; i++)
714 753 ByteArray_512.SetAt(i, ByteBuf_512[i]); //把buf的1k数据转化为十六进制到array中,用于串口发送
  754 + if (pctrlMSComm)
715 755 pctrlMSComm->SetOutput((COleVariant) ByteArray_512); //发送
716 756 Sleep (2); //等待接收端接收
717   - ::SendMessage(pThreadData->pDlg->m_hWnd,WM_UPDATEPOS,pThreadData->blue_device_type<<16|pThreadData->nIndex,loop*100/numParts);
718   - if(!(loop&0x7f)) pThreadData->pDlg->DBG_print("线路 %d.%d下载中%d/%d",aDeviceType+1,aIndex+1,loop,numParts);
  757 +
  758 + //::SendMessage(pThreadData->pDlg->m_hWnd,WM_UPDATEPOS,pThreadData->blue_device_type<<16|pThreadData->nIndex,loop*100/numParts);
  759 + //if(!(loop&0xff)) pThreadData->pDlg->DBG_print("线路 %d.%d下载中%d",aDeviceType+1,aIndex+1,loop/numParts);
719 760 }
720 761 if (Partsremain>0)
721 762 {
... ... @@ -724,16 +765,17 @@ UINT BlueFlashThreadProc(LPVOID lParam)
724 765 ByteArray_512.SetSize(1 * Partsremain);
725 766 for (int i= 0; i < 1 * Partsremain; i++)
726 767 ByteArray_512.SetAt(i, ByteBuf_512[i]); //把buf的1k数据转化为十六进制到array中,用于串口发送
  768 + if (pctrlMSComm)
727 769 pctrlMSComm->SetOutput((COleVariant) ByteArray_512); //发送
728 770 }
729 771 Sleep(1000); //等待接收端写30M数据到文件中
730   - ::SendMessage(pThreadData->pDlg->m_hWnd,WM_UPDATEPOS,pThreadData->blue_device_type<<16|pThreadData->nIndex,100);
  772 + //::SendMessage(pThreadData->pDlg->m_hWnd,WM_UPDATEPOS,pThreadData->blue_device_type<<16|pThreadData->nIndex,100);
731 773 //任务结束, 清理现场
732 774 MyFile1.Close();
733 775 ByteArray_512.RemoveAll();
734 776
735 777 //pThreadData->pDlg->DBG_print("线路%d, %d 下载完成!!!",aDeviceType+1,aIndex+1);
736   - pThreadData->pDlg->calcTImeWhenFinished(aDeviceType,aIndex);
  778 + //pThreadData->pDlg->calcTImeWhenFinished(aDeviceType,aIndex);
737 779 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
738 780 pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
739 781 pThreadData->StartThread = BLUE_THREAD_STOP;
... ... @@ -943,29 +985,6 @@ LRESULT CBlueFlashToolDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam
943 985
944 986 void CBlueFlashToolDlg::OnBnClickedStartAll()
945 987 {
946   - int loop1,loop2;
947   - CString strtmsg;
948   - for (loop1 = 0; loop1 < BLUE_TYPE_MAX; loop1++)
949   - {
950   - for (loop2 = 0; loop2 < MAX_TOPWELL_DEVICE_NUM; loop2++)
951   - {
952   - myThreadData[loop1][loop2].pDlg = this;
953   - myThreadData[loop1][loop2].blue_device_type = (BYTE)loop1;
954   - myThreadData[loop1][loop2].nIndex = loop2;
955   - myThreadData[loop1][loop2].pctrlMSComm = &mycom[loop1][loop2];
956   - myStaticSn[loop1][loop2].GetWindowText(strtmsg);
957   - myThreadData[loop1][loop2].Filename = mystrAppcurrDir+"Bins\\ear\\"+strtmsg;
958   -
959   - if (g_AppMainData.ary_myComPort[loop1][loop2] >2)
960   - {
961   - myThreadData[loop1][loop2].StartThread = BLUE_THREAD_READY;
962   - myctrlStartButton[loop1][loop2].SetWindowText("停止");
963   - //myThreadData[loop1][loop2].m_hThread = AfxBeginThread(BlueFlashThreadProc, &myThreadData[loop1][loop2]);
964   - }
965   - }
966   - }
967   -
968   - // TODO: Add your control notification handler code here
969 988 }
970 989
971 990 // 拔出或者插入UART线, 更新列表信息
... ... @@ -1178,13 +1197,23 @@ void CBlueFlashToolDlg::calcTImeWhenFinished(int device_type, int index)
1178 1197 myStaticSn[device_type][index].GetWindowText(strOfFilename);
1179 1198 pchar = strOfFilename.GetBuffer(0);
1180 1199 strncpy(fileid,pchar+3,4);
1181   - for (loop = 0; loop < myAryFlashFail.GetSize(); loop++)
1182   - {
1183   - WORD thefileid = myAryFlashFail.GetAt(loop);
1184   - if (atoi(fileid) == thefileid)
1185   - {
1186   - myAryFlashFail.RemoveAt(loop);
1187   - myAryFlashSuc.Add(thefileid);
1188   - }
1189   - }
  1200 +// for (loop = 0; loop < myAryFlashFail.GetSize(); loop++)
  1201 +// {
  1202 +// WORD thefileid = myAryFlashFail.GetAt(loop);
  1203 +// if (atoi(fileid) == thefileid)
  1204 +// {
  1205 +// myAryFlashFail.RemoveAt(loop);
  1206 +// myAryFlashSuc.Add(thefileid);
  1207 +// }
  1208 +// }
1190 1209 }
  1210 +
  1211 +
  1212 +
  1213 +
  1214 +
  1215 +
  1216 +
  1217 +
  1218 +
  1219 +
... ...
... ... @@ -68,8 +68,6 @@ public:
68 68 CWordArray myAryFlashFail;
69 69
70 70
71   - char strSignalFlashReady[16];
72   - char strSignalFlashing[20];
73 71 //开始下载时, 计时器
74 72 INT64 mytickcount[BLUE_TYPE_MAX][MAX_TOPWELL_DEVICE_NUM];
75 73
... ... @@ -84,7 +82,10 @@ public:
84 82 int myLenForFileUSB;
85 83 topwell_SN_write_struct *pSN_write;
86 84 #endif
87   - BYTE mybufferFromUart[BLUE_TYPE_MAX][MAX_TOPWELL_DEVICE_NUM][BLUE_UART_INPUTBUFFER_SIZE]; //设置BYTE数组 An 8-bit integerthat is not signed.
  85 +
  86 +
  87 +
  88 + char mybufferFromUart[BLUE_TYPE_MAX][MAX_TOPWELL_DEVICE_NUM][BLUE_UART_INPUTBUFFER_SIZE]; //设置BYTE数组 An 8-bit integerthat is not signed.
88 89
89 90
90 91 int DBG_print(const char * strMsg, ...);
... ... @@ -177,7 +178,7 @@ public:
177 178 void OnCommMscommDebug();
178 179 bool OpenComport(int earOrUsb, int index);
179 180 bool CloseComport(int earOrUsb, int index);
180   - void OnCommMscomm1(UINT nID);
  181 + void CommMscomm(int aDeviceType,int aIndex);
181 182 bool SendFileToComPort(BLUE_DEVICE_TYPE earOrUsb, int index);
182 183
183 184
... ...
... ... @@ -10,11 +10,11 @@ SN_cur=0
10 10 数据位=3
11 11 停止位=-127
12 12 流控制=0
13   -ear_port1=0
14   -ear_port2=0
15   -ear_port3=0
16   -ear_port4=0
17   -ear_port5=0
  13 +ear_port1=6
  14 +ear_port2=11
  15 +ear_port3=12
  16 +ear_port4=13
  17 +ear_port5=14
18 18 ear_port6=0
19 19 ear_port7=0
20 20 ear_port8=0
... ... @@ -30,7 +30,7 @@ usb_port7=0
30 30 usb_port8=0
31 31 usb_port9=0
32 32 usb_port10=0
33   -ear_port0=2
  33 +ear_port0=5
34 34 ear_port11=0
35 35 usb_port0=0
36 36 usb_port11=0
... ...
Please register or login to post a comment