示例#1
0
	void create_multis_cfg( FILE* multi_idx, FILE* multi_mul, FILE* multis_cfg )
	{
	  if ( fseek( multi_idx, 0, SEEK_SET ) != 0 )
          throw std::runtime_error("create_multis_cfg: fseek failed");
	  unsigned count = 0;
	  USTRUCT_IDX idxrec;
	  for ( int i = 0; fread( &idxrec, sizeof idxrec, 1, multi_idx ) == 1; ++i )
	  {
		const USTRUCT_VERSION* vrec = NULL;

		if ( check_verdata( VERFILE_MULTI_MUL, i, vrec ) )
		{
		  write_multi( multis_cfg, i, verfile, vrec->filepos, vrec->length );
		  ++count;
		}
		else
		{
		  if ( idxrec.offset == 0xFFffFFffLu )
			continue;

		  write_multi( multis_cfg, i, multi_mul, idxrec.offset, idxrec.length );
		  ++count;
		}
	  }
      INFO_PRINT << count << " multi definitions written to multis.cfg\n";
	}
int write_multi_t(unsigned char device_var,unsigned char *to_write,unsigned short start_address,int length, int slot)
{
	int retVal = -100;
	int executeMBFunc = 0;
	static int writeCount = 0;
	
	if (MbPollOpen == 1)
	{
		executeMBFunc = 1;
	}
	else
	{
		executeMBFunc = 0;
	}

	if (executeMBFunc == 1)
	{
		//LoadWriteMultiData(device_var, to_write, start_address, length);
		if ((trafficSlotNo == slot) && (trafficSlotNo != -1))
		{
			retVal = write_multi_log(device_var, to_write, start_address, length, &sendData[0], &recvData[0], &sendDataLen, &recvDataLen);
			insertDataString = 1;
		}
		else
		{
			retVal = write_multi(device_var, to_write, start_address, length);
		}

		mbpollTotalCount[slot]++;
		if (retVal < 0)
		{
			mbpollErrCount[slot]++;
		}
		/*CString temp;
		writeCount++;
		temp.Format(_T("addr = %d count = %d ret = %d"), start_address, writeCount, retVal); 
		MessageBox(NULL, temp, L"write_multi", MB_OK);*/
	}
	return retVal;
}
示例#3
0
	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,&register_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;
	}