public void actionPerformed(ActionEvent evt) {
		String Action = evt.getActionCommand();
		String last_line = null;
		String tmp = "";
		if (Action.equals("answer")) {
			if(state == -1) {
				return;		//Unexpected notification
			}
			last_line = serial.readline();
			Logtext = "<-- ["+last_line+"]";
			caller.mylog(Logtext);
			switch (state) {
			case 0:
				//Wake up sent to meter (DM@ sent : we should receive @ at 1st position)
				//Check if answer or not yet
				if(last_line.equals("") || ! last_line.substring(0, 1).equals("@")) {
					//No expected answer : redo !
					state = 0;
					connectToDevice();
					return;
				} else {
					
					tmp = ex_string(last_line, 2 ,  "\"");
					Logtext = "Meter ready, serial <"+tmp+"> received ";
					caller.meter_id = tmp;
					Logger(Logtext);
					notify_main("meter_id");
					state = 1;	//Wake up success !
					InitiateReadRecords();
				}
				break;
			case 1:
				// read BG records sent to meter : We should receive records count
				
				break;
				
			case 2:
				// Process record sent by meter 
				
				processed++;
				caller.processed = processed;
				
					//caller.Record = new Record_factory(caller.meter_id, caller.unit, itemdate, itemtime, res, itemflag);
					notify_main("record");
				
				if(processed >= expected) {
					notify_main("readfinished");
					state = -1;	//Nothing else expected
				}
						
				
				break;
			}
		}
	}