!!!! README BEFORE COMPILED !!!!
		
			-----------------------------------------------------------------------------------------------------------------------------------
		
			* ICPDAS.
		
			* Power Meter Visual C++6.0 Demo Program
		
			------------------------------------------------------------------------------------------------------------------------------------
		
			 
		
			------------------------------------------------------------------------------------------------------------------------------------
		
			1. What is it?
		
			------------------------------------------------------------------------------------------------------------------------------------
		
			A simple program to read/write ICPDAS power meter.
		
			This program use CModbus source code to implement modbus protocol.
		
			 
		
			------------------------------------------------------------------------------------------------------------------------------------
		
			2. What is CModbus?
		
			------------------------------------------------------------------------------------------------------------------------------------
		
			CModbus is a free Windows Modbus Master project.
		
			Free to download its  Visual C++ 6.0 Source Code, Executables and Documentation.
		
			 
		
		
			 
		
			 
		
			------------------------------------------------------------------------------------------------------------------------------------
		
			3. Before your first compiler this program!
		
			------------------------------------------------------------------------------------------------------------------------------------
		
			(1). Download [ modsrc02.zip ] file from http://mbserver.tripod.com/index.htm
		
			(2). Decompress [ modsrc02.zip ] file, then you will see the [ utilclasses ] folder.
		
			(3). Copy the [ utilclasses ] folder.
		
			(4). Paste to the location that is the same layer with the [ Power Meter program ] folder.
		
			(5). Now you can open [ mfcApp.dsw ] demo program project, and compiler it.
		
			 
		
			--------------------------------------------------------------------------------------------------------------------------------------
		
			4. Modify CModbus CRC Error! (Optional)
		
			--------------------------------------------------------------------------------------------------------------------------------------
		
			When use the read/write register command of CModbus, it probably get a "CRC ERROR".
		
			Because CModbus receive the return data form a modbus slave device just once. 
		
			If modbus master (ex: your programm) can't receive all return datas at a time, "CRC ERROR" will happen!  
		
			Modify CModbus "CRC Error" is optional ,not nessary.
		
			 
		
			Do the changes listed below to avoid "CRC ERROR":
		
			(1). Open the "include\LocalModbus.h" and "scr\LocalModbus.cpp" file.
		
			(2). Add one parameter "fullLengthResponse" in function ReadResponseRTU().
		
			   LocalModbus.h:
		
			   BOOL ReadResponseRTU(CByteArray& abyResponse,     //Modbus Response with crc
		
			DWORD& dwRead,             //Real Number of bytes read from serial port
		
			WORD fullLengthResponse); //Total Number of bytes should read from serial port 
		
			   LocalModbus.cpp:
		
			    BOOL CLocalModbus::ReadResponseRTU(CByteArray& abyResponse,//bytes read 
		
			                                                                                    DWORD& dwRead, //Real Number of bytes read from serial port
		
			                                                                                    WORD fullLengthResponse){ //Total Number of bytes should read from serial port
		
			 
		
			 
		
			(3). In function CLocalModbus::ReadResponseRTU(go to the Line 932 at LocalModbus.cpp).
		
			   Use the following codes in blue color to add at Line 945:
		
			   ****************************************
		
			   iRespMaxSize = abyResponse.GetSize();   
		
			   dwRead=0;
		
			   
		
			   DWORD  dwTimeOut = 0;
		
			   WORD wError;
		
			   dwTimeOut = ::timeGetTime() + m_lTimeOut;
		
			   ****************************************
		
			 
		
			(4). In function CLocalModbus::ReadResponseRTU(go to the Line 932 at LocalModbus.cpp).
		
			   Use the following codes instead of the original codes at Line 960 to 990, or add the folloing codes in blue color : 
		
			 
		
			   ****************************************
		
			
				  if (INITIAL_READ==dwNumberOfBytesRead) {
			
				   
			
				  if (dwRead>DWORD(iRespMaxSize-INITIAL_READ)) {
			
				  return FALSE;
			
				  }
			
				 
		 
		
			  fullLengthResponse = fullLengthResponse + 2; // CRC has 2 bytes
		
			  do{
		
			if( !::ReadFile(m_hComHandle,&abyResponse[dwRead],(iRespMaxSize-INITIAL_READ),&dwNumberOfBytesRead,NULL) ) 
		
			{        //read one charcter 
		
			if (::ClearCommError(m_hComHandle,&dwErrors,&cstStatus))
		
			{ TRACE("ReadFile Errors 0x=%xd",dwErrors); }
		
			else
		
			{ TRACE(" ClearCommError Failed reading"); }
		
			return (FALSE);
		
			}
		
			 
		
			dwRead = dwRead+dwNumberOfBytesRead;
		
			 
		
			//if no data to receive,or baudrate/stopbit changed
		
			if( dwTimeOut<::timeGetTime() )
		
			{
		
			wError=(ERR_TIMEOUT);
		
			dwRead=0;
		
			break; // break do-while
		
			}
		
			  }while(dwRead < fullLengthResponse);
		
			    }
		
			   ****************************************
		
			 
		
			
				(5). In function CLocalModbus::TxRxMessage(), to use ReadResponseRTU like that:
			
				   ReadResponseRTU(m_abyBuffer, dwNumberOfBytesRead, wLengthResponse)
			
				   The "wLengthResponse" is a variance already declared in function TxRxMessage().
			
				   Example:
			
				    if (!ReadResponseRTU(m_abyBuffer, dwNumberOfBytesRead, wLengthResponse))
			
				    {
			
				       TRACE("ReadResponse Failed");
			
				       wError=ERR_RD_PORT);
			
				       goto TxRxError;
			
				    }
		 
		
			 
		
			(6). Compiler the program project again!