Commit a94ea12333a9cc747a894a8f8db596f0da20b22b

Authored by xiemeng
1 parent c6eecadd

update 20210202

... ... @@ -30,6 +30,9 @@
30 30 #define WM_UPDATEPOS WM_USER + 1000
31 31 // 设备数目, 最大不能超过25个
32 32 #define MAX_TOPWELL_DEVICE_NUM 12
  33 +#define BLUE_UART_INPUTBUFFER_SIZE 64
  34 +
  35 +
33 36
34 37 typedef enum
35 38 {
... ... @@ -37,6 +40,18 @@ typedef enum
37 40 BLUE_TYPE_USB,
38 41 BLUE_TYPE_MAX
39 42 }BLUE_DEVICE_TYPE;
  43 +
  44 +
  45 +typedef enum
  46 +{
  47 + BLUE_THREAD_STOP,
  48 + BLUE_THREAD_READY,
  49 + BLUE_THREAD_DOING,
  50 + BLUE_THREAD_MAX
  51 +}BLUE_THREAD_STATE;
  52 +
  53 +
  54 +
40 55 #ifdef __TOPWELL_EDIT_SN_ENABLE__
41 56 typedef struct
42 57 {
... ...
... ... @@ -31,8 +31,8 @@ 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,"\xFC\x4F\x70\x74\x65\x6B\x20\x52\x4F\x4D\x20\x62\x6F\x6F\x74\x00",16);
35   - memcpy(strSignalFlashing,"\x50\x72\x6F\x67\x72\x61\x6D\x6D\x69\x6E\x67\x3A\x00",13);
  34 + memcpy(strSignalFlashReady,"ROM boot",16);
  35 + memcpy(strSignalFlashing,"Programming:97",20);
36 36 mystrAppcurrDir = GetCurrPath();
37 37 }
38 38
... ... @@ -373,10 +373,10 @@ void CBlueFlashToolDlg::UpdateGroupsCaptions()
373 373
374 374 for (loop2 = 0; loop2 < MAX_TOPWELL_DEVICE_NUM; loop2++)
375 375 {
376   - sumForSn = 0;
377 376 for (loop1 = 0; loop1 < BLUE_TYPE_MAX; loop1++)
378 377 {
379 378 //if (g_AppMainData.ary_myComPort[loop1][loop2] >1)
  379 + sumPort += ifUartEnable[loop1][loop2];
380 380 if (ifUartEnable[loop1][loop2])
381 381 {
382 382 if (BLUE_TYPE_EAR== loop1)
... ... @@ -402,7 +402,7 @@ void CBlueFlashToolDlg::UpdateGroupsCaptions()
402 402 BEGIN_EVENTSINK_MAP(CBlueFlashToolDlg, CDialog)
403 403 ON_EVENT(CBlueFlashToolDlg, IDC_MSCOMM0, 1, CBlueFlashToolDlg::OnCommMscommDebug, VTS_NONE)
404 404 //ON_EVENT(CBlueFlashToolDlg, IDC_MSCOMM1, 1, CBlueFlashToolDlg::OnCommMscomm1, VTS_NONE)
405   - ON_EVENT_RANGE(CBlueFlashToolDlg, IDC_MSCOMM1,IDC_MSCOMM1+20, 1 /* OnComm */, OnCommMscomm1, VTS_I4 )
  405 + ON_EVENT_RANGE(CBlueFlashToolDlg, IDC_MSCOMM1,IDC_MSCOMM1+50, 1 /* OnComm */, OnCommMscomm1, VTS_I4 )
406 406 END_EVENTSINK_MAP()
407 407
408 408
... ... @@ -448,6 +448,7 @@ void CBlueFlashToolDlg::OnDestroy()
448 448 #ifdef __TOPWELL_EDIT_SN_ENABLE__
449 449 delete mybufferForFile;
450 450 #endif
  451 + //myAryFlashFail.Serialize();
451 452 g_pmainapp->SaveConfigs();
452 453 }
453 454
... ... @@ -482,8 +483,8 @@ bool CBlueFlashToolDlg::OpenComport(int earOrUsb, int index)
482 483 }
483 484 mycom[earOrUsb][index].SetCommPort(g_AppMainData.ary_myComPort[earOrUsb][index]); //选择com1
484 485 mycom[earOrUsb][index].SetInputMode(1);
485   - mycom[earOrUsb][index].SetInputLen(512); //设置当前接收区数据长度为0
486   - mycom[earOrUsb][index].SetOutBufferSize(512);//设置当前接收区数据长度为0
  486 + mycom[earOrUsb][index].SetInputLen(BLUE_UART_INPUTBUFFER_SIZE); //设置当前接收区数据长度为0
  487 + mycom[earOrUsb][index].SetOutBufferSize(512);
487 488 mycom[earOrUsb][index].SetSettings(m_strSettings); //波特率9600,无校验,8个数据位,1个停止位
488 489
489 490
... ... @@ -560,46 +561,76 @@ int CBlueFlashToolDlg::DBG_print(const char * strMsg, ...)
560 561 void CBlueFlashToolDlg::OnCommMscomm1(UINT nID)
561 562 {
562 563 // TODO: Add your control notification handler code here
563   - VARIANT variant_inp;
564 564 CMSComm * apctrlMSComm;
  565 + VARIANT variant_inp_com_msg;
565 566 COleSafeArray safearray_inp;
566 567 LONG len, k;
567   - BYTE rxdata[512]; //设置BYTE数组 An 8-bit integerthat is not signed.
568   - BLUE_DEVICE_TYPE aDeviceType ;//设备类型
  568 + int aDeviceType ;//设备类型
569 569 int aIndex; //设备索引
570   - char flash_process[4];
571   - memset(rxdata,0,512);
572   - memset(flash_process,0,4);
573   - if (nID >= IDC_MSCOMM1 && nID <= IDC_MSCOMM10)
574   - {
575   - aDeviceType = BLUE_TYPE_EAR;
576   - aIndex = nID - IDC_MSCOMM1;
577   - }
578   - if (nID >= IDC_MSCOMM11 && nID <= IDC_MSCOMM20)
579   - {
580   - aDeviceType = BLUE_TYPE_USB;
581   - aIndex = nID - IDC_MSCOMM11;
582   - }
  570 + //char flash_process[4];
  571 + char message_rev[BLUE_UART_INPUTBUFFER_SIZE];
  572 + char onecharOfBuf;
  573 + char *pmybufferFromUart;
  574 + 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);
583 580 if (mycom[aDeviceType][aIndex].GetCommEvent() == 2) //事件值为2表示接收缓冲区内有字符
584 581 {
585   - variant_inp = mycom[aDeviceType][aIndex].GetInput(); //读缓冲区
586   - safearray_inp = variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
  582 + variant_inp_com_msg = mycom[aDeviceType][aIndex].GetInput(); //读缓冲区
  583 + safearray_inp = variant_inp_com_msg; //VARIANT型变量转换为ColeSafeArray型变量
587 584 len = safearray_inp.GetOneDimSize(); //得到有效数据长度
588 585 for (k = 0; k < len; k++)
589   - safearray_inp.GetElement(&k, rxdata + k); //转换为BYTE型数组
590   - if(strstr((char *)rxdata, strSignalFlashReady) == NULL)
  586 + {
  587 + safearray_inp.GetElement(&k, &onecharOfBuf);
  588 + if (onecharOfBuf != 0 && onecharOfBuf != 10)
  589 + {//把UART接收缓冲区的一个非零字节保存下来
  590 + pmybufferFromUart[strlen(pmybufferFromUart)] = onecharOfBuf;
  591 + }
  592 + else
  593 + {// 如果UART缓冲区的这个字节是0, 则表示结束 , 开始解析该命令
  594 + if (strlen(pmybufferFromUart))
  595 + strcpy(message_rev,pmybufferFromUart);
  596 + memset(pmybufferFromUart,0,BLUE_UART_INPUTBUFFER_SIZE);
  597 + }
  598 + }
  599 + // 最后一个字符没有结尾, 接着读下一次UART的缓冲区
  600 + if (onecharOfBuf != 0 && onecharOfBuf != 10)
  601 + return;
  602 + //pmessage_rev = safearray_inp.;
  603 + if (strlen(message_rev) == 0)
  604 + {
591 605 myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapWait);
592   - else
  606 + return;
  607 + }
  608 + DBG_print("线路 %d %s",g_AppMainData.ary_myComPort[aDeviceType][aIndex],message_rev);
  609 + if(strstr(message_rev, strSignalFlashReady) != NULL)
593 610 {
  611 + CString strtmsg;
594 612 myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapReady);
595   - mytickcount[aDeviceType][aIndex][0] = GetTickCount();
596   - if(myThreadData[aDeviceType][aIndex].StartThread)
597   - myThreadData[aDeviceType][aIndex].m_hThread = AfxBeginThread(BlueFlashThreadProc, &myThreadData[aDeviceType][aIndex]);
  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("停止");
598 625 }
599   - if (strstr((char *)rxdata,strSignalFlashing) != NULL)
  626 + else if (strstr((char *)message_rev,strSignalFlashing) != NULL)
600 627 {
601   - strncpy(flash_process,(char *)(rxdata+12),3);
602   - myctrlProcess[aDeviceType][aIndex].SetPos(atoi(flash_process));
  628 + myctrlProcess[aDeviceType][aIndex].SetPos(atoi(message_rev+12)*10);
  629 + }
  630 + else
  631 + {
  632 + DBG_print("线路 %d %s",g_AppMainData.ary_myComPort[aDeviceType][aIndex],message_rev);
  633 + myctrlPcbState[aDeviceType][aIndex].SetBitmap(myBitmapWait);
603 634 }
604 635 }
605 636 }
... ... @@ -617,20 +648,23 @@ UINT BlueFlashThreadProc(LPVOID lParam)
617 648 int Partsremain ;// 按512分割之后的尾数
618 649 int loop; //循环读取文件的计数器
619 650 CMSComm *pctrlMSComm;
620   -
  651 + CFile MyFile1;
  652 + BOOL res_openfile;
621 653
622 654
623 655 if(lParam == NULL)
624 656 {
625   - pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
626   - pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
  657 + pThreadData->StartThread = BLUE_THREAD_STOP;
627 658 return -1; //如果线程参数位空, 直接退出
628 659 }
  660 + pThreadData->StartThread = BLUE_THREAD_DOING;
629 661 aDeviceType = (BLUE_DEVICE_TYPE)pThreadData->blue_device_type;
630 662 aIndex = pThreadData->nIndex;
  663 +
631 664 pctrlMSComm = pThreadData->pctrlMSComm;
632 665 if (!pctrlMSComm)
633 666 {
  667 + pThreadData->StartThread = BLUE_THREAD_STOP;
634 668 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
635 669 pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
636 670 return -1; //如果线程参数位空, 直接退出
... ... @@ -638,13 +672,22 @@ UINT BlueFlashThreadProc(LPVOID lParam)
638 672
639 673 if (!IsExistFile(pThreadData->Filename))
640 674 {
  675 + pThreadData->StartThread = BLUE_THREAD_STOP;
641 676 pThreadData->pDlg->DBG_print("[%d]文件不存在, 请重新设定软件路径",__LINE__);
642 677 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
643 678 pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
644 679 return -1;
645 680 }
646 681 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("停止");
647   - CFile MyFile1(pThreadData->Filename,CFile::modeRead);
  682 + res_openfile = MyFile1.Open(pThreadData->Filename,CFile::modeRead|CFile::shareDenyNone);
  683 + if (!res_openfile)
  684 + {
  685 + pThreadData->StartThread = BLUE_THREAD_STOP;
  686 + pThreadData->pDlg->DBG_print("[%d]文件打开失败",__LINE__);
  687 + pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
  688 + pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
  689 + return -1;
  690 + }
648 691 //获得文件大小
649 692 Length = MyFile1.GetLength();
650 693 numParts = Length/512; //文件按512分割块数
... ... @@ -656,6 +699,7 @@ UINT BlueFlashThreadProc(LPVOID lParam)
656 699 {
657 700 if (pThreadData->StartThread == false)
658 701 {// 检查是否有停止指令
  702 + pThreadData->StartThread = BLUE_THREAD_STOP;
659 703 MyFile1.Close();
660 704 ByteArray_512.RemoveAll();
661 705 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
... ... @@ -692,6 +736,7 @@ UINT BlueFlashThreadProc(LPVOID lParam)
692 736 pThreadData->pDlg->calcTImeWhenFinished(aDeviceType,aIndex);
693 737 pThreadData->pDlg->myctrlStartButton[aDeviceType][aIndex].SetWindowText("开始");
694 738 pThreadData->pDlg->DeletePCB(aDeviceType,aIndex);
  739 + pThreadData->StartThread = BLUE_THREAD_STOP;
695 740 return 0;
696 741 }
697 742
... ... @@ -798,11 +843,11 @@ LRESULT CBlueFlashToolDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam
798 843 {
799 844 case WM_UPDATEPOS:
800 845 {
801   - int colorstep = (255/100)*lParam;
802   - int device_type = HIWORD(wParam);
803   - int device_index = LOWORD(wParam);
804   - myctrlProcess[device_type][device_index].SetPos(lParam);
805   - myctrlProcess[device_type][device_index].SendMessage(PBM_SETBARCOLOR, 0, RGB(0, colorstep, 255-colorstep));//背景色为蓝色
  846 + int colorstep = (255/100)*lParam;
  847 + int device_type = HIWORD(wParam);
  848 + int device_index = LOWORD(wParam);
  849 + myctrlProcess[device_type][device_index].SetPos(lParam);
  850 + myctrlProcess[device_type][device_index].SendMessage(PBM_SETBARCOLOR, 0, RGB(0, colorstep, 255-colorstep));//背景色为蓝色
806 851 }
807 852 break;
808 853 case WM_DEVICECHANGE:
... ... @@ -873,26 +918,15 @@ LRESULT CBlueFlashToolDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam
873 918 return 0;
874 919 }
875 920 #endif
876   - myStaticSn[device_type][device_index].GetWindowText(strtmsg);
877   - myThreadData[device_type][device_index].Filename = mystrAppcurrDir+"Bins\\ear\\"+strtmsg;
878 921 GetDlgItem(currID)->GetWindowText(strButonText);
879 922 if (strButonText == "开始")
880 923 {
881   - //pThreadData = new FLASH_THREAD_DATA;
882   - myThreadData[device_type][device_index].pDlg = this;
883   - myThreadData[device_type][device_index].blue_device_type = (BYTE)
884   - device_type;
885   - myThreadData[device_type][device_index].nIndex = device_index;
886   - myThreadData[device_type][device_index].StartThread = true;
887   - myThreadData[device_type][device_index].pctrlMSComm = &mycom[device_type][device_index];
888   - //myThreadData[device_type][device_index].m_hThread = AfxBeginThread(BlueFlashThreadProc, &myThreadData[device_type][device_index]);
889   - GetDlgItem(currID)->SetWindowText("停止");
890 924 }
891 925 else if (strButonText == "停止")
892 926 {
893 927 DWORD threadExitcode;
894 928 //TerminateThread(m_hThread[aDeviceType][aIndex], 0);
895   - myThreadData[device_type][device_index].StartThread = false;
  929 + myThreadData[device_type][device_index].StartThread = BLUE_THREAD_STOP;
896 930 GetExitCodeThread(myThreadData[device_type][device_index].m_hThread, &threadExitcode);
897 931 if (threadExitcode != STILL_ACTIVE)
898 932 GetDlgItem(currID)->SetWindowText("开始");
... ... @@ -924,7 +958,8 @@ void CBlueFlashToolDlg::OnBnClickedStartAll()
924 958
925 959 if (g_AppMainData.ary_myComPort[loop1][loop2] >2)
926 960 {
927   - myThreadData[loop1][loop2].StartThread = true;
  961 + myThreadData[loop1][loop2].StartThread = BLUE_THREAD_READY;
  962 + myctrlStartButton[loop1][loop2].SetWindowText("停止");
928 963 //myThreadData[loop1][loop2].m_hThread = AfxBeginThread(BlueFlashThreadProc, &myThreadData[loop1][loop2]);
929 964 }
930 965 }
... ... @@ -939,8 +974,16 @@ void CBlueFlashToolDlg::UartDeviceChange(void)
939 974 int loop1,loop2,loop3;
940 975 DWORD itemdataComPortList;
941 976 int sumPort = 0;
  977 + CString strinfo;
942 978
943 979 QuerySerialPortStatusEx(myAryExistPort,myAryNoneOpenedPort,myAryAlreadyOpenedPort,myAryNotExistPort,1,254);
  980 +
  981 + for (loop1 = 0;loop1< myAryExistPort.GetSize();loop1++)
  982 + {
  983 + strinfo.Format("%d",myAryExistPort.GetAt(loop1));
  984 + mylistDebugInfo.AddString(strinfo);
  985 + }
  986 +
944 987 for (loop1 = 0;loop1<BLUE_TYPE_MAX; loop1++)
945 988 {
946 989 for (loop2 = 0;loop2 <MAX_TOPWELL_DEVICE_NUM;loop2++)
... ... @@ -958,7 +1001,7 @@ void CBlueFlashToolDlg::UartDeviceChange(void)
958 1001 strComName.Format("COM%d",myAryExistPort.GetAt(loop3));
959 1002 int add_index = myctrlComboComPort[loop1][loop2].AddString(strComName);
960 1003 itemdataComPortList=0;
961   - itemdataComPortList = loop1<<16|loop2<<8|add_index,myAryExistPort.GetAt(loop3);
  1004 + itemdataComPortList = loop1<<16|loop2<<8|myAryExistPort.GetAt(loop3);
962 1005 myctrlComboComPort[loop1][loop2].SetItemData(add_index,itemdataComPortList);
963 1006 if (myAryExistPort.GetAt(loop3) == g_AppMainData.ary_myComPort[loop1][loop2])
964 1007 {
... ... @@ -1105,11 +1148,12 @@ void CBlueFlashToolDlg::OnBnClickedStopAll()
1105 1148 int loop1,loop2;
1106 1149 CString strtmsg;
1107 1150 DWORD threadExitcode;
  1151 + mylistDebugInfo.ResetContent();
1108 1152 for (loop1 = 0; loop1 < BLUE_TYPE_MAX; loop1++)
1109 1153 {
1110 1154 for (loop2 = 0; loop2 < MAX_TOPWELL_DEVICE_NUM; loop2++)
1111 1155 {
1112   - myThreadData[loop1][loop2].StartThread = false;
  1156 + myThreadData[loop1][loop2].StartThread = BLUE_THREAD_STOP;
1113 1157 GetExitCodeThread(myThreadData[loop1][loop2].m_hThread, &threadExitcode);
1114 1158 if (threadExitcode != STILL_ACTIVE)
1115 1159 myctrlStartButton[loop1][loop2].SetWindowText("开始");
... ... @@ -1129,10 +1173,8 @@ void CBlueFlashToolDlg::calcTImeWhenFinished(int device_type, int index)
1129 1173 int loop;
1130 1174 CString strOfFilename;
1131 1175 memset(fileid,0,6);
1132   - mytickcount[device_type][index][1] = GetTickCount();
1133 1176 DBG_print("线路 %d %d 下载完成, 耗时 %d 秒",device_type+1,index+1,
1134   - (mytickcount[device_type][index][1] -mytickcount[device_type][index][0] )/1000);
1135   - mytickcount[device_type][index][0]=mytickcount[device_type][index][1] =0;
  1177 + (GetTickCount() -mytickcount[device_type][index] )/1000);
1136 1178 myStaticSn[device_type][index].GetWindowText(strOfFilename);
1137 1179 pchar = strOfFilename.GetBuffer(0);
1138 1180 strncpy(fileid,pchar+3,4);
... ...
... ... @@ -23,7 +23,7 @@ typedef struct ThreadData
23 23 BYTE blue_device_type;
24 24 int nIndex;
25 25 HANDLE m_hThread;
26   - bool StartThread;
  26 + BLUE_THREAD_STATE StartThread;
27 27 CString Filename;
28 28 CMSComm *pctrlMSComm;
29 29 }FLASH_THREAD_DATA;
... ... @@ -69,8 +69,9 @@ public:
69 69
70 70
71 71 char strSignalFlashReady[16];
72   - char strSignalFlashing[13];
73   - INT64 mytickcount[BLUE_TYPE_MAX][MAX_TOPWELL_DEVICE_NUM][2];
  72 + char strSignalFlashing[20];
  73 + //开始下载时, 计时器
  74 + INT64 mytickcount[BLUE_TYPE_MAX][MAX_TOPWELL_DEVICE_NUM];
74 75
75 76 HBITMAP myBitmapWait;
76 77 HBITMAP myBitmapReady;
... ... @@ -83,6 +84,7 @@ public:
83 84 int myLenForFileUSB;
84 85 topwell_SN_write_struct *pSN_write;
85 86 #endif
  87 + BYTE mybufferFromUart[BLUE_TYPE_MAX][MAX_TOPWELL_DEVICE_NUM][BLUE_UART_INPUTBUFFER_SIZE]; //设置BYTE数组 An 8-bit integerthat is not signed.
86 88
87 89
88 90 int DBG_print(const char * strMsg, ...);
... ...
  1 +RX_0000
  2 +RX_0001
  3 +RX_0002
  4 +RX_0003
  5 +RX_0004
  6 +RX_0005
  7 +RX_0006
  8 +RX_0007
  9 +RX_0008
  10 +RX_0009
  11 +RX_0010
  12 +RX_0011
  13 +RX_0012
  14 +RX_0013
  15 +RX_0014
  16 +RX_0015
  17 +RX_0016
  18 +RX_0017
  19 +RX_0018
  20 +RX_0019
  21 +RX_0020
  22 +RX_0021
  23 +RX_0022
  24 +RX_0023
  25 +RX_0024
  26 +RX_0025
  27 +RX_0026
  28 +RX_0027
  29 +RX_0028
  30 +RX_0029
  31 +RX_0030
  32 +RX_0031
  33 +RX_0032
  34 +RX_0033
  35 +RX_0034
  36 +RX_0035
  37 +RX_0036
  38 +RX_0037
  39 +RX_0038
  40 +RX_0039
  41 +RX_0040
  42 +RX_0041
  43 +RX_0042
  44 +RX_0043
  45 +RX_0044
  46 +RX_0045
  47 +RX_0046
  48 +RX_0047
  49 +RX_0048
  50 +RX_0049
  51 +RX_0050
  52 +RX_0051
  53 +RX_0052
  54 +RX_0053
  55 +RX_0054
  56 +RX_0055
  57 +RX_0056
  58 +RX_0057
  59 +RX_0058
  60 +RX_0059
  61 +RX_0060
  62 +RX_0061
  63 +RX_0062
  64 +RX_0063
  65 +RX_0064
  66 +RX_0065
  67 +RX_0066
  68 +RX_0067
  69 +RX_0068
  70 +RX_0069
  71 +RX_0070
  72 +RX_0071
  73 +RX_0072
  74 +RX_0073
  75 +RX_0074
  76 +RX_0075
  77 +RX_0076
  78 +RX_0077
  79 +RX_0078
  80 +RX_0079
  81 +RX_0080
  82 +RX_0081
  83 +RX_0082
  84 +RX_0083
  85 +RX_0084
  86 +RX_0085
  87 +RX_0086
  88 +RX_0087
  89 +RX_0088
  90 +RX_0089
  91 +RX_0090
  92 +RX_0091
  93 +RX_0092
  94 +RX_0093
  95 +RX_0094
  96 +RX_0095
  97 +RX_0096
  98 +RX_0097
  99 +RX_0098
  100 +RX_0099
  101 +RX_0100
  102 +RX_0101
  103 +RX_0102
  104 +RX_0103
  105 +RX_0104
  106 +RX_0105
  107 +RX_0106
  108 +RX_0107
  109 +RX_0108
  110 +RX_0109
  111 +RX_0110
  112 +RX_0111
  113 +RX_0112
  114 +RX_0113
  115 +RX_0114
  116 +RX_0115
  117 +RX_0116
  118 +RX_0117
  119 +RX_0118
  120 +RX_0119
  121 +RX_0120
  122 +RX_0121
  123 +RX_0122
  124 +RX_0123
  125 +RX_0124
  126 +RX_0125
  127 +RX_0126
  128 +RX_0127
  129 +RX_0128
  130 +RX_0129
  131 +RX_0130
  132 +RX_0131
  133 +RX_0132
  134 +RX_0133
  135 +RX_0134
  136 +RX_0135
  137 +RX_0136
  138 +RX_0137
  139 +RX_0138
  140 +RX_0139
  141 +RX_0140
  142 +RX_0141
  143 +RX_0142
  144 +RX_0143
  145 +RX_0144
  146 +RX_0145
  147 +RX_0146
  148 +RX_0147
  149 +RX_0148
  150 +RX_0149
  151 +RX_0150
  152 +RX_0151
  153 +RX_0152
  154 +RX_0153
  155 +RX_0154
  156 +RX_0155
  157 +RX_0156
  158 +RX_0157
  159 +RX_0158
  160 +RX_0159
  161 +RX_0160
  162 +RX_0161
  163 +RX_0162
  164 +RX_0163
  165 +RX_0164
  166 +RX_0165
  167 +RX_0166
  168 +RX_0167
  169 +RX_0168
  170 +RX_0169
  171 +RX_0170
  172 +RX_0171
  173 +RX_0172
  174 +RX_0173
  175 +RX_0174
  176 +RX_0175
  177 +RX_0176
  178 +RX_0177
  179 +RX_0178
  180 +RX_0179
  181 +RX_0180
  182 +RX_0181
  183 +RX_0182
  184 +RX_0183
  185 +RX_0184
  186 +RX_0185
  187 +RX_0186
  188 +RX_0187
  189 +RX_0188
  190 +RX_0189
  191 +RX_0190
  192 +RX_0191
  193 +RX_0192
  194 +RX_0193
  195 +RX_0194
  196 +RX_0195
  197 +RX_0196
  198 +RX_0197
  199 +RX_0198
  200 +RX_0199
  201 +RX_0200
  202 +RX_0201
  203 +RX_0202
  204 +RX_0203
  205 +RX_0204
  206 +RX_0205
  207 +RX_0206
  208 +RX_0207
  209 +RX_0208
  210 +RX_0209
  211 +RX_0210
  212 +RX_0211
  213 +RX_0212
  214 +RX_0213
  215 +RX_0214
  216 +RX_0215
  217 +RX_0216
  218 +RX_0217
  219 +RX_0218
  220 +RX_0219
  221 +RX_0220
  222 +RX_0221
  223 +RX_0222
  224 +RX_0223
  225 +RX_0224
  226 +RX_0225
  227 +RX_0226
  228 +RX_0227
  229 +RX_0228
... ...
  1 +RX_0000
  2 +RX_0001
  3 +RX_0002
  4 +RX_0003
  5 +RX_0004
  6 +RX_0005
  7 +RX_0006
  8 +RX_0007
  9 +RX_0008
  10 +RX_0009
  11 +RX_0010
  12 +RX_0011
  13 +RX_0012
  14 +RX_0013
  15 +RX_0014
  16 +RX_0015
  17 +RX_0016
  18 +RX_0017
  19 +RX_0018
  20 +RX_0019
  21 +RX_0020
  22 +RX_0021
  23 +RX_0022
  24 +RX_0023
  25 +RX_0024
  26 +RX_0025
  27 +RX_0026
  28 +RX_0027
  29 +RX_0028
  30 +RX_0029
  31 +RX_0030
  32 +RX_0031
  33 +RX_0032
  34 +RX_0033
  35 +RX_0034
  36 +RX_0035
  37 +RX_0036
  38 +RX_0037
  39 +RX_0038
  40 +RX_0039
  41 +RX_0040
  42 +RX_0041
  43 +RX_0042
  44 +RX_0043
  45 +RX_0044
  46 +RX_0045
  47 +RX_0046
  48 +RX_0047
  49 +RX_0048
  50 +RX_0049
  51 +RX_0050
  52 +RX_0051
  53 +RX_0052
  54 +RX_0053
  55 +RX_0054
  56 +RX_0055
  57 +RX_0056
  58 +RX_0057
  59 +RX_0058
  60 +RX_0059
  61 +RX_0060
  62 +RX_0061
  63 +RX_0062
  64 +RX_0063
  65 +RX_0064
  66 +RX_0065
  67 +RX_0066
  68 +RX_0067
  69 +RX_0068
  70 +RX_0069
  71 +RX_0070
  72 +RX_0071
  73 +RX_0072
  74 +RX_0073
  75 +RX_0074
  76 +RX_0075
  77 +RX_0076
  78 +RX_0077
  79 +RX_0078
  80 +RX_0079
  81 +RX_0080
  82 +RX_0081
  83 +RX_0082
  84 +RX_0083
  85 +RX_0084
  86 +RX_0085
  87 +RX_0086
  88 +RX_0087
  89 +RX_0088
  90 +RX_0089
  91 +RX_0090
  92 +RX_0091
  93 +RX_0092
  94 +RX_0093
  95 +RX_0094
  96 +RX_0095
  97 +RX_0096
  98 +RX_0097
  99 +RX_0098
  100 +RX_0099
  101 +RX_0100
  102 +RX_0101
  103 +RX_0102
  104 +RX_0103
  105 +RX_0104
  106 +RX_0105
  107 +RX_0106
  108 +RX_0107
  109 +RX_0108
  110 +RX_0109
  111 +RX_0110
  112 +RX_0111
  113 +RX_0112
  114 +RX_0113
  115 +RX_0114
  116 +RX_0115
  117 +RX_0116
  118 +RX_0117
  119 +RX_0118
  120 +RX_0119
  121 +RX_0120
  122 +RX_0121
  123 +RX_0122
  124 +RX_0123
  125 +RX_0124
  126 +RX_0125
  127 +RX_0126
  128 +RX_0127
  129 +RX_0128
  130 +RX_0129
  131 +RX_0130
  132 +RX_0131
  133 +RX_0132
  134 +RX_0133
  135 +RX_0134
  136 +RX_0135
  137 +RX_0136
  138 +RX_0137
  139 +RX_0138
  140 +RX_0139
  141 +RX_0140
  142 +RX_0141
  143 +RX_0142
  144 +RX_0143
  145 +RX_0144
  146 +RX_0145
  147 +RX_0146
  148 +RX_0147
  149 +RX_0148
  150 +RX_0149
  151 +RX_0150
  152 +RX_0151
  153 +RX_0152
  154 +RX_0153
  155 +RX_0154
  156 +RX_0155
  157 +RX_0156
  158 +RX_0157
  159 +RX_0158
  160 +RX_0159
  161 +RX_0160
  162 +RX_0161
  163 +RX_0162
  164 +RX_0163
  165 +RX_0164
  166 +RX_0165
  167 +RX_0166
  168 +RX_0167
  169 +RX_0168
  170 +RX_0169
  171 +RX_0170
  172 +RX_0171
  173 +RX_0172
  174 +RX_0173
  175 +RX_0174
  176 +RX_0175
  177 +RX_0176
  178 +RX_0177
  179 +RX_0178
  180 +RX_0179
  181 +RX_0180
  182 +RX_0181
  183 +RX_0182
  184 +RX_0183
  185 +RX_0184
  186 +RX_0185
  187 +RX_0186
  188 +RX_0187
  189 +RX_0188
  190 +RX_0189
  191 +RX_0190
  192 +RX_0191
  193 +RX_0192
  194 +RX_0193
  195 +RX_0194
  196 +RX_0195
  197 +RX_0196
  198 +RX_0197
  199 +RX_0198
  200 +RX_0199
  201 +RX_0200
  202 +RX_0201
  203 +RX_0202
  204 +RX_0203
  205 +RX_0204
  206 +RX_0205
  207 +RX_0206
  208 +RX_0207
  209 +RX_0208
  210 +RX_0209
  211 +RX_0210
  212 +RX_0211
  213 +RX_0212
  214 +RX_0213
  215 +RX_0214
  216 +RX_0215
  217 +RX_0216
  218 +RX_0217
  219 +RX_0218
  220 +RX_0219
  221 +RX_0220
  222 +RX_0221
  223 +RX_0222
  224 +RX_0223
  225 +RX_0224
  226 +RX_0225
  227 +RX_0226
  228 +RX_0227
  229 +RX_0228
... ...
... ... @@ -10,11 +10,11 @@ SN_cur=0
10 10 数据位=3
11 11 停止位=-127
12 12 流控制=0
13   -ear_port1=3
14   -ear_port2=5
15   -ear_port3=0
16   -ear_port4=0
17   -ear_port5=0
  13 +ear_port1=11
  14 +ear_port2=12
  15 +ear_port3=13
  16 +ear_port4=3
  17 +ear_port5=4
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=7
  33 +ear_port0=6
34 34 ear_port11=0
35 35 usb_port0=0
36 36 usb_port11=0
... ...
Please register or login to post a comment