QuakeGod
2023-10-20 6fa60de2b0d0237054aa7571191df0f291838031
提交 | 用户 | age
418cb3 1 // DialogFactCfg.cpp: 实现文件
Q 2 //
3
4 #include "pch.h"
5 #include "MTerm1.h"
6 #include "DialogFactCfg.h"
7 #include "afxdialogex.h"
8
9 #include "MTerm1Doc.h"
10
11 // CDialogFactCfg 对话框
12
13 IMPLEMENT_DYNAMIC(CDialogFactCfg, CDialogEx)
14
15 CDialogFactCfg::CDialogFactCfg(CWnd* pParent /*=nullptr*/)
16     : CDialogEx(IDD_DIALOG_FACT_CFG, pParent)
17 {
18     InitDataItems();
19 }
20
21 CDialogFactCfg::~CDialogFactCfg()
22 {
23 }
24
25 void CDialogFactCfg::DoDataExchange(CDataExchange* pDX)
26 {
27     CDialogEx::DoDataExchange(pDX);
28 }
29
30
31 BEGIN_MESSAGE_MAP(CDialogFactCfg, CDialogEx)
32     ON_BN_CLICKED(IDC_BUTTON_CONN, &CDialogFactCfg::OnBnClickedButtonConn)
33     ON_BN_CLICKED(IDC_BUTTON_DISCONN, &CDialogFactCfg::OnBnClickedButtonDisconn)
34     ON_BN_CLICKED(IDC_BUTTON_READDATA, &CDialogFactCfg::OnBnClickedButtonReaddata)
35     ON_BN_CLICKED(IDC_BUTTON_WRITEDATA, &CDialogFactCfg::OnBnClickedButtonWritedata)
36
37 END_MESSAGE_MAP()
38
39 // CDialogFactCfg 消息处理程序
40 int CDialogFactCfg::AddDataItem(int nOffset, int nSize, int nType, CString sName)
41 {
42     FactoryDataItems[nFactoryDataItemsCount] = { nOffset,nSize,nType,sName };
43     nFactoryDataItemsCount++;
44     return 0;
45 }
46
47 int CDialogFactCfg::InitDataItems()
48 {
49     AddDataItem(0, 2, typeBIN, _T("开始标志"));
50     AddDataItem(2, 2, typeINT, _T("序号"));
51     AddDataItem(4, 2, typeHEX, _T("ModelNo"));
52     AddDataItem(6, 2, typeHEX, _T("ModelVer"));
53     AddDataItem(8, 4, typeUINT, _T("nLotNo"));
54     AddDataItem(12, 4, typeDATETIME, _T("nProductDate"));
55     AddDataItem(16, 4, typeUINT, _T("nSN1"));
56     AddDataItem(20, 4, typeHEX, _T("nProtocalVer"));
57     AddDataItem(24, 4, typeHEX, _T("nDefaultFuncr"));
58     AddDataItem(28, 16, typeString, _T("sModelStr"));
59     AddDataItem(44, 16, typeString, _T("sLot_No"));
60     AddDataItem(60, 16, typeString, _T("sSNStr"));
61     AddDataItem(76, 2, typeHEX, _T("CRC1"));
62     AddDataItem(78, 2, typeHEX, _T("EndSign"));
63     return 0;
64 }
65
66 int CDialogFactCfg::FindIdByName(CString sName)
67 {
68     for (int i = 0; i < nFactoryDataItemsCount; i++)    {
69         if (FactoryDataItems[i].sName == sName)    {
70             return i;
71         }
72     }
73     return -1;
74 }
75
76 int CDialogFactCfg::GetDataByOffset(void * pDataBlock, int nOffset)
77 {
78     return 0;
79 }
80 int CDialogFactCfg::GetDataByName(void * pDataBlock, CString sName)
81 {
82     return 0;
83 }
84 CString CDialogFactCfg::GetDataStrByName(void * pDataBlock, CString sName)
85 {
86     UCHAR * pBuf2 = (UCHAR *)pDataBlock;
87     CString s1;
88     UCHAR buf3[256];
89     CString s3;
90     int nIdx = FindIdByName(sName);
91     if (nIdx >= 0)
92     {
93         CTime ctime1;
94         int nType = FactoryDataItems[nIdx].nType;
95         int nSize = FactoryDataItems[nIdx].nSize;
96         int nOffset = FactoryDataItems[nIdx].nOffset;
97         int nValue;
98         UINT uValue;
99         switch (nType)
100         {
101         case typeINT:
102             if (nSize == 1) {
103                 nValue = *((char *)(pBuf2 + nOffset));
104             }
105             else if (nSize == 2) {
106                 nValue = *(short *)(pBuf2 + nOffset);
107             }
108             else if (nSize == 3) {
109
110             }
111             else if (nSize == 4) {
112                 nValue = *(int *)(pBuf2 + nOffset);
113             }
114             s1.Format(_T("%d"), nValue);
115             break;
116         case typeUINT:
117             if (nSize == 1) {
118                 uValue = *((UCHAR *)(pBuf2 + nOffset));
119             }
120             else if (nSize == 2) {
121                 uValue = *(USHORT *)(pBuf2 + nOffset);
122             }
123             else if (nSize == 3) {
124
125             }
126             else if (nSize == 4) {
127                 uValue = *(UINT *)(pBuf2 + nOffset);
128             }
129             s1.Format(_T("%u"), uValue);
130             break;
131         case typeHEX:
132             if (nSize == 1) {
133                 uValue = *((UCHAR *)(pBuf2 + nOffset));
134                 s1.Format(_T("%02X"), uValue);
135             }
136             else if (nSize == 2) {
137                 uValue = *(USHORT *)(pBuf2 + nOffset);
138                 s1.Format(_T("%04X"), uValue);
139             }
140             else if (nSize == 3) {
141
142             }
143             else if (nSize == 4) {
144                 uValue = *(UINT *)(pBuf2 + nOffset);
145                 s1.Format(_T("%08X"), uValue);
146             }
147
148             break;
149         case typeBIN:
150             if (nSize == 1) {
151                 uValue = *((UCHAR *)(pBuf2 + nOffset));
152                 s1.Format(_T("%02X"), uValue);
153             }
154             else if (nSize == 2) {
155                 uValue = *(USHORT *)(pBuf2 + nOffset);
156                 s1.Format(_T("%04X"), uValue);
157             }
158             else if (nSize == 3) {
159
160             }
161             else if (nSize == 4) {
162                 uValue = *(UINT *)(pBuf2 + nOffset);
163                 s1.Format(_T("%08X"), uValue);
164             }
165
166             break;
167         case typeFLOAT:
168             break;
169         case typeFIX:
170             break;
171         case typeBIT:
172             break;
173         case typeString:
174             for (int j = 0; j < nSize; j++)
175             {
176                 buf3[j] = pBuf2[nOffset + j];
177             }
178             buf3[nSize] = 0;
179             s3 = buf3;
180             s1.Format(_T("%s"), s3);
181             break;
182         case typeDATETIME:
183             nValue = *(UINT *)(pBuf2 + nOffset);
184             ctime1 = nValue;
185             ctime1 = CStringToCTime(_T("2000-01-01 08:00:00"));
186             ctime1 += nValue;
187             s3 = ctime1.Format(_T("%Y-%m-%d %H:%M:%S"));
188             s1.Format(_T("%s"), s3);
189             break;
190         default:
191             break;
192         }
193     }
194     return s1;
195 }
196 int CDialogFactCfg::SetDataByName(void * pDataBlock, CString sName, UINT uValue)
197 {
198     UCHAR * pBuf2 = (UCHAR *)pDataBlock;
199 //    UCHAR buf3[256];
200     int nIdx = FindIdByName(sName);
201     if (nIdx >= 0)
202     {
203         CTime ctime1;
204         CTime ctime2;
205         CTimeSpan ctime3;
206         int nType = FactoryDataItems[nIdx].nType;
207         int nSize = FactoryDataItems[nIdx].nSize;
208         int nOffset = FactoryDataItems[nIdx].nOffset;
209         int nValue;
210         switch (nType)
211         {
212         case typeINT:
213             if (nSize == 1) {
214                 *((char *)(pBuf2 + nOffset)) = uValue;
215             }
216             else if (nSize == 2) {
217                 *(short *)(pBuf2 + nOffset) = uValue;
218             }
219             else if (nSize == 3) {
220
221             }
222             else if (nSize == 4) {
223                 *(int *)(pBuf2 + nOffset) = uValue;
224             }
225             break;
226         case typeUINT:
227         case typeHEX:
228             if (nSize == 1) {
229                 *((UCHAR *)(pBuf2 + nOffset)) = uValue;
230             }
231             else if (nSize == 2) {
232                 *(USHORT *)(pBuf2 + nOffset) = uValue;
233             }
234             else if (nSize == 3) {
235
236             }
237             else if (nSize == 4) {
238                 *(UINT *)(pBuf2 + nOffset) = uValue;
239             }
240             break;
241         case typeBIN:
242             if (nSize == 1) {
243                 *((UCHAR *)(pBuf2 + nOffset)) = uValue;
244             }
245             else if (nSize == 2) {
246                 *(USHORT *)(pBuf2 + nOffset) = uValue;
247             }
248             else if (nSize == 3) {
249
250             }
251             else if (nSize == 4) {
252                 *(UINT *)(pBuf2 + nOffset) = uValue;
253             }
254
255             break;
256         case typeFLOAT:
257             break;
258         case typeFIX:
259             break;
260         case typeBIT:
261             break;
262         case typeString:
263             break;
264         case typeDATETIME:
265             ctime1 = CStringToCTime(_T("2000-01-01 08:00:00"));
266             ctime2 = uValue;
267             ctime3 = ctime2 - ctime1;
268             nValue = (long)(ctime3.GetTotalSeconds());
269             *(UINT *)(pBuf2 + nOffset) = uValue;
270
271             break;
272         default:
273             break;
274         }
275     }
276     return 0;
277 }
278 int CDialogFactCfg::SetDataByName(void * pDataBlock, CString sName, CString sValue)
279 {
280     UCHAR * pBuf2 = (UCHAR *)pDataBlock;
281 //    UCHAR buf3[256];
282     CStringA s3;
283     int nIdx = FindIdByName(sName);
284     if (nIdx >= 0)
285     {
286         CTime ctime1;
287         CTime ctime2;
288         CTimeSpan ctime3;
289         int nType = FactoryDataItems[nIdx].nType;
290         int nSize = FactoryDataItems[nIdx].nSize;
291         int nOffset = FactoryDataItems[nIdx].nOffset;
292         int nValue;
293         int len;
294         switch (nType)
295         {
296         case typeINT:
297             if (nSize == 1) {
298                 *((char *)(pBuf2 + nOffset)) = _tstoi(sValue);
299             }
300             else if (nSize == 2) {
301                 *(short *)(pBuf2 + nOffset) = _tstoi(sValue);
302             }
303             else if (nSize == 3) {
304
305             }
306             else if (nSize == 4) {
307                 *(int *)(pBuf2 + nOffset) = _tstoi(sValue);
308             }
309             break;
310         case typeUINT:
311             if (nSize == 1) {
312                 *((UCHAR *)(pBuf2 + nOffset)) = _tstoi(sValue);
313             }
314             else if (nSize == 2) {
315                 *(USHORT *)(pBuf2 + nOffset) = _tstoi(sValue);
316             }
317             else if (nSize == 3) {
318
319             }
320             else if (nSize == 4) {
321                 *(UINT *)(pBuf2 + nOffset) = _tstoi(sValue);
322             }
323             break;
324         case typeHEX:
325             if (nSize == 1) {
326                 *((UCHAR *)(pBuf2 + nOffset)) = _tstoi(sValue);
327                 
328             }
329             else if (nSize == 2) {
330                 *(USHORT *)(pBuf2 + nOffset) = _tstoi(sValue);
331             }
332             else if (nSize == 3) {
333
334             }
335             else if (nSize == 4) {
336                 *(UINT *)(pBuf2 + nOffset) = _tstoi(sValue);
337             }
338             break;
339         case typeBIN:
340             if (nSize == 1) {
341                 *((UCHAR *)(pBuf2 + nOffset)) = _tstoi(sValue);
342             }
343             else if (nSize == 2) {
344                 *(USHORT *)(pBuf2 + nOffset) = _tstoi(sValue);
345             }
346             else if (nSize == 3) {
347
348             }
349             else if (nSize == 4) {
350                 *(UINT *)(pBuf2 + nOffset) = _tstoi(sValue);
351             }
352
353             break;
354         case typeFLOAT:
355             break;
356         case typeFIX:
357             break;
358         case typeBIT:
359             break;
360         case typeString:
361             s3 = sValue;
362             len = s3.GetLength();
363             for (int j = 0; j < nSize; j++) {
364                 if (j < len) {
365                     pBuf2[nOffset + j] = s3[j];
366                 }else {
367                     pBuf2[nOffset + j] = ' ';
368                 }
369             }
370             break;
371         case typeDATETIME:
372             ctime1 = CStringToCTime(_T("2000-01-01 08:00:00"));
373             ctime2 = CStringToCTime(sValue);;
374             ctime3 = ctime2 - ctime1;
375             nValue = (long)(ctime3.GetTotalSeconds());
376             *(UINT *)(pBuf2 + nOffset) = nValue;
377
378             break;
379         default:
380             break;
381         }
382     }
383     return 0;
384 }
385
386
387
388 CMTerm1Doc * CDialogFactCfg::GetDocument()
389 {
390     // TODO: 在此处添加实现代码.
391     CMDIFrameWnd  *pFrame = (CMDIFrameWnd*)AfxGetApp()->m_pMainWnd;
392     CMDIChildWnd  *pChild = (CMDIChildWnd   *)pFrame->GetActiveFrame();
393     CView   *pV = (CView*)pChild->GetActiveView();
394     CMTerm1Doc* pDoc = (CMTerm1Doc *)(pV->GetDocument());
395     return pDoc;
396 }
397
398 int CDialogFactCfg::Connect()
399 {
400     // TODO: 在此处添加实现代码.
401     CString s1;
402     CMTerm1Doc* pDoc = (CMTerm1Doc *)GetDocument();
403
404
405     int r = pDoc->Connect();
406     s1.Format(_T("Open %s  = %d"), pDoc->MyKLink1.MySerPort1.m_strResult, r);
407     SysLog(s1);
408     if (r == pDoc->MyKLink1.MySerPort1.R_OK)
409     {
410         pDoc->MyKLink1.Open();
411         return false;
412     }
413     return true;
414     return 0;
415 }
416
417
418 int CDialogFactCfg::Disconnect()
419 {
420     // TODO: 在此处添加实现代码.
421     CMTerm1Doc* pDoc = (CMTerm1Doc *)GetDocument();
422     
423     pDoc->DisConnect();
424     pDoc->MyKLink1.Close();
425     return 0;
426 }
427
428 int CDialogFactCfg::ReadData()
429 {
430     CMTerm1Doc* pDoc = (CMTerm1Doc *)GetDocument();
431
432     unsigned short buf1[1024];
433     unsigned short len1;
434     int res = pDoc->MyKLink1.GetInfo(1 ,&len1, buf1);
435     SysLog(pDoc->MyKLink1.m_resultStr);
436     CString s1;
437     s1.Format(_T("GetInfo = %d %d bytes"), res,len1);
438     if (res == pDoc->MyKLink1.KL_OK)
439     {
440         s1.Append(_T("\r\n"));
441         for (int i = 0; i < len1 / 2; i++)
442         {
443             s1.AppendFormat(_T("%04X "), buf1[i]);
444         }
445     }
446     SysLog(s1);
447     pKMInfoBlock pinfob = (pKMInfoBlock)buf1;
448
449     s1.Format(_T("%04X"), pinfob->nDeviceTypeVer);
450     SetDlgItemText(IDC_EDIT_DEVICE_TYPE, s1);
451     s1.Format(_T("%04X"), pinfob->nProgVer);
452     SetDlgItemText(IDC_EDIT_FIRM_VER, s1);
453     s1.Format(_T("%04X"), pinfob->nKLinkVer);
454     SetDlgItemText(IDC_EDIT_KLINK_VER, s1);
455     s1.Format(_T("%04X"), pinfob->nKBusVer);
456     SetDlgItemText(IDC_EDIT_KBUS_VER, s1);
457     s1.Format(_T("%04X"), 0);
458     s1.Empty();
459     SetDlgItemText(IDC_EDIT_KNET_VER, s1);
460     //s1.Format(_T("%04X"), 0);
461     SetDlgItemText(IDC_EDIT_KWL_VER, s1);
462     s1.Format(_T("%04X"), pinfob->nAbility);
463     SetDlgItemText(IDC_EDIT_FUNCTIONS, s1);
464     
465     s1.Format(_T("%d"), pinfob->nCapacity1);
466     SetDlgItemText(IDC_EDIT_CAP_PROG, s1);
467     s1.Format(_T("%d"), pinfob->nCapacity2);
468     SetDlgItemText(IDC_EDIT_CAP_DT, s1);
469
470     SetDlgItemText(IDC_EDIT_CAP_WR, s1);
471     SetDlgItemText(IDC_EDIT_CAP_TM, s1);
472     s1.Format(_T("%d"), pinfob->nSwitchBits);
473     SetDlgItemText(IDC_EDIT_CAP_SW, s1);
474     s1.Format(_T("%d"), pinfob->nPorts);
475     SetDlgItemText(IDC_EDIT_CAP_COM, s1);
476     s1.Format(_T("%d"), pinfob->nManSize);
477     SetDlgItemText(IDC_EDIT_CAP_CFG, s1);
478     s1.Format(_T("%d"), pinfob->nLogSize);
479     SetDlgItemText(IDC_EDIT_CAP_EVENT, s1);
480
481     s1.Format(_T("%d"), pinfob->nDInput);
482     SetDlgItemText(IDC_EDIT_CAP_DIN, s1);
483     s1.Format(_T("%d"), pinfob->nDInput);
484     SetDlgItemText(IDC_EDIT_CAP_DOUT, s1);
485     s1.Format(_T("%d"), pinfob->nAInput);
486     SetDlgItemText(IDC_EDIT_CAP_AIN_I, s1);
487     s1.Format(_T("%d"), pinfob->nAOutput);
488     SetDlgItemText(IDC_EDIT_CAP_AOUT_I, s1);
489     s1.Format(_T("%d"), pinfob->nAInput);
490     SetDlgItemText(IDC_EDIT_CAP_AIN_E, s1);
491     s1.Format(_T("%d"), pinfob->nAOutput);
492     SetDlgItemText(IDC_EDIT_CAP_AOUT_E, s1);
493     s1.Format(_T("%d"), pinfob->nHInput);
494     SetDlgItemText(IDC_EDIT_CAP_HIN, s1);
495     s1.Format(_T("%d"), pinfob->nHOutput);
496     SetDlgItemText(IDC_EDIT_CAP_HOUT, s1);
497     s1.Empty();
498     SetDlgItemText(IDC_EDIT_CAP_IRQ_I, s1);
499     SetDlgItemText(IDC_EDIT_CAP_IRQ_O, s1);
500     SetDlgItemText(IDC_EDIT_CAP_EXT_I, s1);
501     SetDlgItemText(IDC_EDIT_CAP_EXT_O, s1);
502
503     CString s2;
504     CString s3;
505     unsigned char buf2[1024];
506     res = pDoc->MyKLink1.GetUID(1, &len1, (unsigned short *)buf2);
507     SysLog(pDoc->MyKLink1.m_resultStr);
508     s1.Format(_T("GetUID = %d %d bytes"), res,len1);
509     
510     if (res == pDoc->MyKLink1.KL_OK)
511     {
512         s1.Append(_T("\r\n"));
513         for (int i = 0; i < 12; i++)
514         {
515             s1.AppendFormat(_T("%02X "), buf2[i]);
516             s2.AppendFormat(_T("%02X"), buf2[12-i-1]);
517         //    s3.AppendFormat(_T("%c"), buf2[12 - i - 1]);
518         }
519     }
520     SysLog(s1);
521     SetDlgItemText(IDC_EDIT_DEVICE_UID, s2);
522
523     
524     res = pDoc->MyKLink1.GetSN(1, &len1, (unsigned short *)buf2);
525     SysLog(pDoc->MyKLink1.m_resultStr);
526     s1.Format(_T("GetSN = %d %d bytes"), res,len1);
527     s2.Empty();
528     if (res == pDoc->MyKLink1.KL_OK)
529     {
530         s1.Append(_T("\r\n"));
531         for (int i = 0; i < 4; i++)
532         {
533             s1.AppendFormat(_T("%02X "), buf2[i]);
534             s2.AppendFormat(_T("%02X"), buf2[4-i-1]);
535             //    s3.AppendFormat(_T("%c"), buf2[12 - i - 1]);
536         }
537     }
538     SysLog(s1);
539
540     res = pDoc->MyKLink1.ReadFactoryData(1, 0, 120, &len1, (unsigned short *)buf2);
541     SysLog(pDoc->MyKLink1.m_resultStr);
542     s1.Format(_T("GetFactoryData = %d %d bytes"), res, len1);
543     s2.Empty();
544     if (res == pDoc->MyKLink1.KL_OK)
545     {
546         s1.Append(_T("\r\n"));
547         for (int i = 0; i < 256 && i< len1; i++)
548         {
549             s1.AppendFormat(_T("%02X "), buf2[i]);
550         //    s2.AppendFormat(_T("%02X"), buf2[4 - i - 1]);
551             //    s3.AppendFormat(_T("%c"), buf2[12 - i - 1]);
552         }
553     }
554     SysLog(s1);
555     s2 = GetDataStrByName(buf2, _T("nSN1"));
556     SetDlgItemText(IDC_EDIT_ORG_FACT_SN, s2);
557
558 //    unsigned char buf3[1024];
559     CTime ctime1;
560     for (int i = 0; i < nFactoryDataItemsCount; i++)
561     {
562 //        int nType = FactoryDataItems[i].nType;
563 //        int nSize = FactoryDataItems[i].nSize;
564 //        int nOffset = FactoryDataItems[i].nOffset;
565         CString sName = FactoryDataItems[i].sName;
566         s3 = GetDataStrByName(buf2,sName);
567         s1.Format(_T("%d %s %s"), i, sName, s3);
568         SysLog(s1);
569     }
570
571     s3=GetDataStrByName(buf2, _T("sLot_No"));
572     SetDlgItemText(IDC_EDIT_ORG_LOT_NO, s3);
573
574     s3 = GetDataStrByName(buf2, _T("nProductDate"));
575     SetDlgItemText(IDC_EDIT_ORG_FAC_DATE, s3);
576
577
578     return 0;
579 }
580
581
582
583 int CDialogFactCfg::WriteData()
584 {
585     // TODO: 在此处添加实现代码.
586
587     CString s1;
588     CMTerm1Doc* pDoc = (CMTerm1Doc *)GetDocument();
589     unsigned short buf1[1024];
590 //    unsigned char buf2[1024];
591 //    unsigned char buf3[1024];
592 /*
593     AddDataItem(0, 2, typeBIN, _T("开始标志"));
594     AddDataItem(2, 2, typeINT, _T("序号"));
595     AddDataItem(4, 2, typeBIN, _T("ModelNo"));
596     AddDataItem(6, 2, typeBIN, _T("ModelVer"));
597     AddDataItem(8, 4, typeUINT, _T("nLotNo"));
598     AddDataItem(12, 4, typeDATETIME, _T("nProductDate"));
599     AddDataItem(16, 4, typeBIN, _T("nSN1"));
600     AddDataItem(20, 4, typeBIN, _T("nProtocalVer"));
601     AddDataItem(24, 4, typeBIN, _T("nDefaultFuncr"));
602     AddDataItem(28, 16, typeString, _T("sModelStr"));
603     AddDataItem(44, 16, typeString, _T("sLot_No"));
604     AddDataItem(60, 16, typeString, _T("sSNStr"));
605     AddDataItem(76, 2, typeBIN, _T("CRC1"));
606     AddDataItem(78, 2, typeBIN, _T("EndSign"));
607 */
608     int res = 0;
609     unsigned short len1;
610     res = pDoc->MyKLink1.ReadFactoryData(1, 0, 120, &len1, (unsigned short *)buf1);
611     SysLog(pDoc->MyKLink1.m_resultStr);
612     s1.Format(_T("GetFactoryData = %d %d bytes"), res,len1);
613
614     GetDlgItemText(IDC_DATETIMEPICKER1, s1);
615     SysLog(s1);
616     CTime date;
617     ((CDateTimeCtrl *)(GetDlgItem(IDC_DATETIMEPICKER1)))->GetTime(date);
618
619     UINT uValue;
620
621     SetDataByName(buf1, _T("开始标志"), 0x55AA);
622     SetDataByName(buf1, _T("序号"), 0x0002);
623     SetDataByName(buf1, _T("ModelNo"), 0x0008);
624     SetDataByName(buf1, _T("ModelVer"), 0x0100);
625     GetDlgItemText(IDC_EDIT_LOT_NO, s1);    uValue = _tstoi(s1);
626     SetDataByName(buf1, _T("nLotNo"), uValue);
627
628     GetDlgItemText(IDC_DATETIMEPICKER1, s1);
629     s1 = date.Format(_T("%Y-%m-%d %H:%M:%S"));
630     SetDataByName(buf1, _T("nProductDate"), s1);
631
632     GetDlgItemText(IDC_EDIT_FACT_SN, s1);      uValue = _tstoi(s1);
633     SetDataByName(buf1, _T("nSN1"), uValue);
634     SetDataByName(buf1, _T("nProtocalVer"), 0x01000100);
635     SetDataByName(buf1, _T("nDefaultFuncr"), 0x00000001);
636     SetDataByName(buf1, _T("sModelStr"), _T("12122121"));
637     GetDlgItemText(IDC_EDIT_LOT_NO, s1);
638     SetDataByName(buf1, _T("sLot_No"), s1);
639     SetDataByName(buf1, _T("sSNStr"), _T("56566565"));
640     SetDataByName(buf1, _T("CRC1"), 0xEFEF);
641     SetDataByName(buf1, _T("EndSign"), 0x55AA);
642
643     CString s3;
644
645     for (int i = 0; i < nFactoryDataItemsCount; i++)
646     {
647         //        int nType = FactoryDataItems[i].nType;
648         //        int nSize = FactoryDataItems[i].nSize;
649         //        int nOffset = FactoryDataItems[i].nOffset;
650         CString sName = FactoryDataItems[i].sName;
651         s3 = GetDataStrByName(buf1, sName);
652         s1.Format(_T("%d %s %s"), i, sName, s3);
653         SysLog(s1);
654     }
655
656     res = pDoc->MyKLink1.WriteFactoryData(1, 0, 80, buf1);
657     SysLog(pDoc->MyKLink1.m_resultStr);
658     s1.Format(_T("WriteFactoryData = %d "), res);
659     SysLog(s1);
660     return 0;
661 }
662
663 void CDialogFactCfg::OnBnClickedButtonReaddata()
664 {
665     // TODO: 在此添加控件通知处理程序代码
666     ReadData();
667 }
668
669 void CDialogFactCfg::OnBnClickedButtonConn()
670 {
671     // TODO: 在此添加控件通知处理程序代码
672     Connect();
673
674 }
675
676
677 void CDialogFactCfg::OnBnClickedButtonDisconn()
678 {
679     // TODO: 在此添加控件通知处理程序代码
680     Disconnect();
681
682 }
683
684
685
686
687 void CDialogFactCfg::OnBnClickedButtonWritedata()
688 {
689     // TODO: 在此添加控件通知处理程序代码
690     WriteData();
691
692 }
693
694 CString saveInputStr=_T(""), saveInput1Str= _T("");
695 CString sDisplayStr;
696 CString sStoreStr;
697 bool bEditEndFlg = false;
698
699 /*
700 int CDialogFactCfg::CharKeyClick(CString sKey)
701 {
702     // TODO: 在此处添加实现代码.
703     if (bEditEndFlg)
704     {
705         sDisplayStr.Empty();
706         bEditEndFlg = false;
707     }
708     sDisplayStr.Append(sKey);
709     int len1 = sDisplayStr.GetLength();
710     if (len1 > 1 && sDisplayStr[0] == _T('0')) sDisplayStr = sDisplayStr.Right(sDisplayStr.GetLength() - 1);
711
712     SetDlgItemText(IDC_EDIT_VIEW, sDisplayStr);
713     return 0;
714 }
715 void CDialogFactCfg::OnBnClickedBtn1()
716 {
717     CharKeyClick(_T("1"));
718 }
719 void CDialogFactCfg::OnBnClickedBtn3()
720 {
721     CharKeyClick(_T("3"));
722 }
723 void CDialogFactCfg::OnBnClickedBtn4()
724 {
725     CharKeyClick(_T("4"));
726 }
727 void CDialogFactCfg::OnBnClickedBtn5() 
728 {
729     CharKeyClick(_T("5"));
730 }
731 void CDialogFactCfg::OnBnClickedBtnClear()
732 {
733     sDisplayStr.Empty();
734     bEditEndFlg = false;
735     SetDlgItemText(IDC_EDIT_VIEW, _T("0"));
736 }
737 void CDialogFactCfg::OnBnClickedBtnAdd() 
738 {
739     bEditEndFlg = true;
740     sStoreStr = sDisplayStr;
741
742     //saveInput1Str = saveInputStr;
743     //saveInputStr = "";
744 }
745 void CDialogFactCfg::OnBnClickedBtnBackSpace()
746 {
747     int len1 = sDisplayStr.GetLength();
748     if (len1 > 1)
749     {
750         sDisplayStr = sDisplayStr.Left(sDisplayStr.GetLength() - 1);
751     }
752     else if (len1 == 1)
753     {
754         sDisplayStr = "0";
755     }
756 //    bEditEndFlg = false;
757     SetDlgItemText(IDC_EDIT_VIEW, sDisplayStr);
758 }
759
760
761
762 void CDialogFactCfg::OnBnClickedButton0()
763 {
764     // TODO: 在此添加控件通知处理程序代码
765     CharKeyClick(_T("0"));
766 }
767
768
769 void CDialogFactCfg::OnBnClickedButton1Dot()
770 {
771     // TODO: 在此添加控件通知处理程序代码
772     CharKeyClick(_T("."));
773 }
774
775
776 void CDialogFactCfg::OnBnClickedButtonEq()
777 {
778     // TODO: 在此添加控件通知处理程序代码
779     bEditEndFlg = true;
780
781     float a = (float)_tstof(sStoreStr);
782     float b = (float)_tstof(sDisplayStr);
783
784     float c = a + b;
785
786     sDisplayStr.Format(_T("%g"),c);
787     SetDlgItemText(IDC_EDIT_VIEW, sDisplayStr);
788
789 }
790 */