int Write_One_t(unsigned char device_var, unsigned short address, unsigned short val, int slot) { int retVal = -100; int executeMBFunc = 0; static int writeCount = 0; if (MbPollOpen == 1) { executeMBFunc = 1; } else { executeMBFunc = 0; } if (executeMBFunc == 1) { //LoadWriteOneData(val, device_var, address); if ((trafficSlotNo == slot) && (trafficSlotNo != -1)) { retVal = Write_One_log(device_var, address, val, &sendData[0], &recvData[0], &sendDataLen, &recvDataLen); insertDataString = 1; } else { retVal = Write_One(device_var, address, val); } mbpollTotalCount[slot]++; if (retVal < 0) { mbpollErrCount[slot]++; } /*CString temp; writeCount++; temp.Format(_T("addr = %d count = %d ret = %d"), address, writeCount, retVal); MessageBox(NULL, temp, L"Write_One", MB_OK);*/ } return retVal; }
int flash_a_tstat(BYTE m_ID,unsigned int the_max_register_number,unsigned char *register_data_orginal,int baudrate_var,int &which_register_was_interrupt) { //the return value 1,successful //<0 ,have some trouble unsigned char *register_data=register_data_orginal; unsigned int ii=0; //**************************************************inspect the flash that last flash position ** if(read_one(m_ID,0xee10)<0)//retry times is better { //read_one from globle_function.h //the return value == -1 ,no connecting //AfxMessageBox("before write,need to open the com!"); //close_com(); //error -1 return -1; } { //from 0000 register flash //from 0000 flash update ii=0; showing_text="initializing!"; Sleep(500); //********************write register 16 value 0x7f ************** int temp_baudrate=baudrate_var;//get the input baudrate do{ if(ii<RETRY_TIMES) if(-2==Write_One(m_ID,16,0x7f))//From Common.h { ii++; if(ii==RETRY_TIMES && baudrate_var==9600 && temp_baudrate!=19200) { Change_BaudRate(19200);//From Common.h temp_baudrate=19200; ii=1;// } Sleep(6000); } else ii=0; else { return -2;//error -2 Unable to Initialize... } }while(ii); //********************write register 16 value 0x3f ************** ii=0; showing_text+="erasing!"; do{ if(ii<RETRY_TIMES) if(-2==Write_One(m_ID,16,0x3f))//From common.h ii++; else ii=0; else { return -6;//error -6 } }while(ii); //********************write register 16 value 0x1f ************** ii=0; Sleep(3000); //must have this ,the Tstat need } while(ii<=the_max_register_number) { unsigned char data_to_send[160]={0};// buffer that writefile() will to use int itemp=0; replace_flag=TRUE; showing_text.Format(_T("initialized!erasing!programming!Programing progress %.1f%%"),100*((float)ii)/the_max_register_number); do{ if(itemp<RETRY_TIMES) { //From common.h if(-2==write_multi(m_ID,®ister_data[ii],ii,WRITE_MUTLI_NUMBER)) //to write multiple WRITE_MUTLI_NUMBER bytes { itemp++; //showing_text.Format("initialized!erasing!programming!Writing line %d to %d...",ii,ii+WRITE_MUTLI_NUMBER); replace_flag=TRUE; showing_text.Format(_T("initialized!erasing!programming!Programing progress %.1f%%"),100*((float)ii)/the_max_register_number); } else { itemp=0; which_register_was_interrupt=ii; } } else { return -8;//the com connection is wrong! error -8 } }while(itemp); ii+=WRITE_MUTLI_NUMBER; } //********************write register 16 value 0x01 ************** ii=0; which_register_was_interrupt=-9; //********************write register 16 value 01 ************** do{ if(ii<RETRY_TIMES) if(-2==Write_One(m_ID,16,1)) ii++; else ii=0; else { return -8;//error -8 } }while(ii); Change_BaudRate(baudrate_var);//back baudrate return 1; }
void CFlashSN::FlashTstatSN() { m_nSerialNumber=GetNewSerialNumber();// get last serialnumber of the file if(m_nSerialNumber==-1)//can't fine the serialnumber file on z drive { AfxMessageBox(_T("WARNING : Can't find serial number file on Z driver.")); return; } unsigned int loword,hiword; loword=m_nSerialNumber & 0xffff; hiword=(m_nSerialNumber >> 16) & 0xffff; if (open_com(m_nComPort)) {if(Write_One(m_nMBID,0,loword)>0 && Write_One(m_nMBID,2,hiword)>0) { int nSWVersion=Read_One(m_nMBID, 4);//tstat version if(nSWVersion >= 240 && nSWVersion < 250) nSWVersion /=10; else { nSWVersion = Read_One(255,5)*256+Read_One(255,4); nSWVersion /=10; }//tstat_version if(nSWVersion >= 25) { Write_One(255,7,m_nProductModel);//write product_model register Write_One(255,8,m_nHardWareVersion);//write hardware_rev register } int year,month,day; char software_version[8]={'\0'}; time_t curtime; struct tm* today = NULL; curtime = time(NULL); //today = localtime(&curtime); localtime_s(today, &curtime); year = today->tm_year + 1900; month = today->tm_mon + 1; day = today->tm_mday; // getTime(&year,&month,&day);//get the month,day,year of now float fl_temp=(float)nSWVersion; CString f_l_temp; f_l_temp.Format(_T("%.1f"),fl_temp); for(int j=0;j<f_l_temp.GetLength();j++) software_version[j]=(char)f_l_temp.GetAt(j); //fstream tstat; ////tstat.open(_T("z:\\Serial_Records\\serial_records.txt"),ios_base::out | ios_base::app); //tstat.open(_T("e:\\serial_records.txt"),ios_base::out | ios_base::app); //if(tstat.is_open()) //{ // tstat <<endl<<m_nSerialNumber //serialnumber // <<_T(", ")<<m_strProductModel //product_model // <<_T(", ")<<m_nHardWareVersion //hardware version // <<_T(", ")<<nSWVersion //software version // <<_T(", ")<<month<<_T("-")<<day<<_T("-")<<year; //the time //} //tstat.close(); CString stringlog; stringlog.Format(_T("%d,%s,%d,%s,%d-%d-%d"), m_nSerialNumber, m_strProductModel, m_nHardWareVersion, f_l_temp, month, day, year); CStdioFile seriallogfile; if(seriallogfile.Open(c_strSNRecordFileName.GetString(),CFile::modeReadWrite | CFile::shareDenyNone)) { seriallogfile.SeekToEnd(); seriallogfile.WriteString(_T("\n")+stringlog); seriallogfile.Close(); } else { ASSERT(0); seriallogfile.Close(); } CString index; index.Format(_T("SN=%d have been written,sucessfully."),m_nSerialNumber); AfxMessageBox(index); } else { m_nSerialNumber = Read_One(255,0 ) + Read_One(255,1) * 256 + Read_One(255,2) * 65536 + // 256 * 256 Read_One(255 , 3) * 16777216 ;// 256 *256 *256 CString index; index.Format(_T("SN:%d have not been overwritten."),m_nSerialNumber); AfxMessageBox(index); } } else { AfxMessageBox(_T("COM Can't Open")); } }
void binarySearchforview_networkcontroller(BYTE devLo, BYTE devHi) { // had_scaned=true;////////////////////////////////////////////////had scan if(net_work_is_exist_or_not==true) Sleep(200); else Sleep(10);// int a=NetController_CheckTstatOnline(devLo,devHi); TRACE("L:%d H:%d a:%d\n",devLo,devHi,a); if(binary_search_crc(a)) return ; char c_array_temp[5]={'0'}; CString temp=""; if(a>0) { ///////****************************************************************8888888 // TRACE("L:%d H:%d\n",devLo,devHi); // TRACE("%d\n",a); /* #if 1 binary_search_result temp; temp.baudrate=m_baudrate2; temp.id=a; temp.product_class_id=read_one(a,7); get_serialnumber(temp.serialnumber,temp.id ); temp.hardware_version=read_one(temp.id ,8); m_binary_search_networkcontroller_background_thread.push_back(temp); if(read_one(a,7)==NET_WORK_CONT_PRODUCT_MODEL)//net work controller keep_back_mac_address(a); #endif */ binary_search_result temp; temp.baudrate=m_baudrate2; unsigned short SerialNum[9]; memset(SerialNum,0,sizeof(SerialNum)); int nRet=0; temp.id=a; nRet=Read_Multi(temp.id,&SerialNum[0],0,9,3); if(nRet>0) { //serial=SerialNum[0]&0x00ff+(SerialNum[0]&0xff00>>8)*256+(SerialNum[1]&0x00ff)*65536 // +(SerialNum[1]&0xff00>>8)*16777216; if(SerialNum[0]==255&&SerialNum[1]==255&&SerialNum[2]==255&&SerialNum[3]==255) { srand((unsigned)time(NULL)); SerialNum[0]=rand()%255; SerialNum[1]=rand()%255; SerialNum[2]=rand()%255; SerialNum[3]=rand()%255; write_one(temp.id,0,SerialNum[0]); write_one(temp.id,1,SerialNum[1]); write_one(temp.id,2,SerialNum[2]); write_one(temp.id,3,SerialNum[3]); } temp.serialnumber=SerialNum[0]+SerialNum[1]*256+SerialNum[2]*256*256+SerialNum[3]*256*256*256; temp.product_class_id=SerialNum[7]; temp.hardware_version=SerialNum[8]; float tstat_version2; tstat_version2=SerialNum[4];//tstat version if(tstat_version2 >=240 && tstat_version2 <250) tstat_version2 /=10; else { tstat_version2 = SerialNum[5]*256+SerialNum[4]; tstat_version2 /=10; }//tstat_version temp.software_version=tstat_version2; if(read_one(temp.id,185)==0) temp.baudrate=9600; else { temp.baudrate=19200; } temp.nEPsize=read_one(temp.id,326); if(temp.serialnumber>0) m_binary_search_networkcontroller_background_thread.push_back(temp); } } switch(a) { case -2: //crc error if(devLo!=devHi) { binarySearchforview_networkcontroller(devLo,(devLo+devHi)/2); binarySearchforview_networkcontroller((devLo+devHi)/2+1,devHi); } else binarySearchforview_networkcontroller(devLo,devHi); break; case -3: //more than 2 Tstat is connect if(devLo!=devHi) { binarySearchforview_networkcontroller(devLo,(devLo+devHi)/2); binarySearchforview_networkcontroller((devLo+devHi)/2+1,devHi); } else {//Two Tstat have the same ID,fewness do { Sleep(20);//////////////////////////////////for running is better char c_temp_arr[100]={'\0'}; if(Read_One(devLo,10)!=-2)//one times { CString str_temp; for(int j=254;j>=1;j--) if(j!=devLo) { if(!found_same_net_work_controller_by_mac(a)) { bool find=false;//false==no find;true==find for(int w=0;w<m_binary_search_product_background_thread.size();w++) if(j==m_binary_search_product_background_thread.at(w).id) { find=true; break; } if(find==false) { //************************change the Id // Sleep(20);//////////////////////////////////for running is better if(Write_One(devLo,10,j)>0)//sometimes write failure ,so inspect,important if(j<devLo) { /* #if 1 binary_search_result temp; temp.baudrate=m_baudrate2; temp.id=j; temp.product_class_id=read_one(j,7); get_serialnumber(temp.serialnumber,j); temp.hardware_version=read_one(j,8); m_binary_search_networkcontroller_background_thread.push_back(temp); if(read_one(j,7)==NET_WORK_CONT_PRODUCT_MODEL)//net work controller keep_back_mac_address(j); #endif */ binary_search_result temp; temp.baudrate=m_baudrate2; unsigned short SerialNum[9]; memset(SerialNum,0,sizeof(SerialNum)); int nRet=0; temp.id=j; nRet=Read_Multi(temp.id,&SerialNum[0],0,9,3); if(nRet>0) { //serial=SerialNum[0]&0x00ff+(SerialNum[0]&0xff00>>8)*256+(SerialNum[1]&0x00ff)*65536 // +(SerialNum[1]&0xff00>>8)*16777216; if(SerialNum[0]==255&&SerialNum[1]==255&&SerialNum[2]==255&&SerialNum[3]==255) { srand((unsigned)time(NULL)); SerialNum[0]=rand()%255; SerialNum[1]=rand()%255; SerialNum[2]=rand()%255; SerialNum[3]=rand()%255; write_one(temp.id,0,SerialNum[0]); write_one(temp.id,1,SerialNum[1]); write_one(temp.id,2,SerialNum[2]); write_one(temp.id,3,SerialNum[3]); } temp.serialnumber=SerialNum[0]+SerialNum[1]*256+SerialNum[2]*256*256+SerialNum[3]*256*256*256; temp.product_class_id=SerialNum[7]; temp.hardware_version=SerialNum[8]; float tstat_version2; tstat_version2=SerialNum[4];//tstat version if(tstat_version2 >=240 && tstat_version2 <250) tstat_version2 /=10; else { tstat_version2 = SerialNum[5]*256+SerialNum[4]; tstat_version2 /=10; }//tstat_version temp.software_version=tstat_version2; if(read_one(temp.id,185)==0) temp.baudrate=9600; else { temp.baudrate=19200; } temp.nEPsize=read_one(temp.id,326); if(temp.serialnumber>0) m_binary_search_networkcontroller_background_thread.push_back(temp); } } binarySearchforview_networkcontroller(devLo,devHi); return; } } else { return; } } } }while(1); } break; case -4:break; //no connection case -5:break; //the input error } }