diff --git a/.gitignore b/.gitignore
index d5e3e9dca83e2583b6cbf12fe7ca104a141a8bf5..f078348b6b678cd8f29616782b0c4a83964e38b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 O.*
 /bin
 /db
-/dbd
\ No newline at end of file
+/dbd
+.vscode
\ No newline at end of file
diff --git a/cmds/st.cmd b/cmds/st.cmd
index 8253611325024d1a6337722cdbea9046ea912582..36d7252b0d5c120ca0bc5a56a2e81e1fd4735ba3 100644
--- a/cmds/st.cmd
+++ b/cmds/st.cmd
@@ -2,8 +2,8 @@
 require rheometermcr702e,dev
 # require essioc
 
-epicsEnvSet("PREFIX", "TEST:")
-epicsEnvSet("DEVICE", "RHEO:")
+epicsEnvSet("PREFIX", "SE-SEE:")
+epicsEnvSet("DEVICE", "SE-RHEO-001:")
 epicsEnvSet("IPADDR", "172.30.32.60")
 epicsEnvSet("PORT", "1025")
 
diff --git a/rheometerApp/Db/read_data.db b/rheometerApp/Db/read_data.db
index 7f7e645e542454c6c5c8035739a9f86537871555..799038f4ffe1906e3f9729597d05a2eae50dbdfc 100644
--- a/rheometerApp/Db/read_data.db
+++ b/rheometerApp/Db/read_data.db
@@ -12,7 +12,7 @@
 record(longin, "$(P)$(R)MeasNumb-R") {
 	field(DESC, "Measurement")
 	field(DTYP, "stream")
-	field(INP, "@rheo_comm.proto getWaveform($(P)$(R)MeasInterval-R, $(P)$(R)meas_data) rheo")
+	field(INP, "@rheo_comm.proto getWaveform($(P)$(R)MeasInterval-R, $(P)$(R)#meas_data) rheo")
 	field(SCAN, "I/O Intr")
 	field(PRIO, "HIGH")
 }
@@ -40,31 +40,32 @@ record(aSub, "$(P)$(R)#split_waveform") {
 	field(NOB, "20")
 	field(INPC, "$(P)$(R)MeasInterval-R")
 	field(FTC, "LONG")
-	field(OUTA, "$(P)$(R)Temp-R")
+	field(OUTA, "$(P)$(R)Temp-R PP")
 	field(NOVA, "1")
 	field(FTVA, "FLOAT")
-	field(OUTB, "$(P)$(R)Torque-R")
+	field(OUTB, "$(P)$(R)Torque-R PP")
 	field(FTVB, "FLOAT")
 	field(NOVB, "1")
-	field(OUTC, "$(P)$(R)RotSpeed-R")
+	field(OUTC, "$(P)$(R)RotSpeed-R PP")
 	field(FTVC, "FLOAT")
 	field(NOVC, "1")
-	field(OUTD, "$(P)$(R)PhaseAng-R")
+	field(OUTD, "$(P)$(R)PhaseAng-R PP")
 	field(FTVD, "FLOAT")
 	field(NOVD, "1")
-	field(OUTE, "$(P)$(R)Strain1-R")
+	field(OUTE, "$(P)$(R)Strain1-R PP")
 	field(FTVE, "FLOAT")
 	field(NOVE, "1")
-	field(OUTF, "$(P)$(R)#MeasState.SELN")
+	field(OUTF, "$(P)$(R)MeasState.SELN")
 	field(FTVF, "USHORT")
 	field(NOVF, "1")
-	field(FLNK, "$(P)$(R)#MeasState")
+	field(FLNK, "$(P)$(R)MeasState.PROC")
+	field(EFLG, "ALWAYS")
 }
 
-record(fanout, "$(P)$(R)#MeasState") {
+record(fanout, "$(P)$(R)MeasState") {
 	field(SELM, "Specified")
-	field(LNK0, "$(P)$(R)Viscosity")
-	field(LNK1, "$(P)$(R)TotModulus-RB")
+	field(LNK0, "$(P)$(R)Viscosity.PROC")
+	field(LNK1, "$(P)$(R)TotModulus.PROC")
 }
 
 record(waveform, "$(P)$(R)MeasHeader-R") {
@@ -84,36 +85,35 @@ record(ai, "$(P)$(R)PhaseAng-R") {
 	field(DESC, "Phase angle")
 	field(EGU,  "rad")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP")
 }
 
 record(ai, "$(P)$(R)Strain1-R") {
 	field(DESC, "Strain") 
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
-	field(FLNK, "$(P)$(R)ShearStrain-RB.PROC")
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP")
+	
 }
 
 record(ai, "$(P)$(R)Temp-R"){
 	field(DESC, "Temperature in control system")
 	field(EGU,  "K")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
+	field(TSEL, "$(P)$(R)#meas_data.TIMEE NPP")
 }
 
 record(ai, "$(P)$(R)Torque-R"){
 	field(DESC, "Torque")
 	field(EGU,  "Nm")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP")
 }
 
 record(ai, "$(P)$(R)RotSpeed-R"){
 	field(DESC, "Rotational speed")
 	field(EGU,  "Hz")
-	field(FLNK, "$(P)$(R)ShearRate-RB.PROC")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP")
 }
 
 # --------------------------------------------------------------------------------
@@ -132,7 +132,7 @@ record(ai, "$(P)$(R)CSSfactor") {
 record(ai, "$(P)$(R)CSRfactor") {
 	field(DESC, "Defined by the measuring system")
 	field(VAL,  "149.382")
-	field(EGU,  "s/s")
+	field(EGU,  "1")
 	field(PINI, "YES")
 }
 
@@ -143,7 +143,7 @@ record(calc, "$(P)$(R)ShearStress") {
 	field(CALC, "A*B")
 	field(EGU,  "Pa")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP")
 }
 
 record(calc, "$(P)$(R)ShearRate") {
@@ -151,9 +151,9 @@ record(calc, "$(P)$(R)ShearRate") {
 	field(INPA, "$(P)$(R)RotSpeed-R.VAL NPP")
 	field(INPB, "$(P)$(R)CSRfactor.VAL NPP")
 	field(CALC, "A*B")
-	field(EGU,  "Hz")
+	field(EGU,  "1/s")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP")
 }
 
 record(calc, "$(P)$(R)ShearStrain") {
@@ -161,7 +161,7 @@ record(calc, "$(P)$(R)ShearStrain") {
 	field(INPA, "$(P)$(R)Strain1-R.VAL NPP")
 	field(INPB, "$(P)$(R)CSRfactor.VAL NPP")
 	field(CALC, "A*B/(2*PI)")
-	field(EGU,  "Pa")
+	field(EGU,  "1")
 }
 
 record(calc, "$(P)$(R)Viscosity") {
@@ -171,7 +171,7 @@ record(calc, "$(P)$(R)Viscosity") {
 	field(CALC, "A/B")
 	field(EGU,  "Pa*s")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP") 
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP") 
 }
 
 record(calc, "$(P)$(R)TotModulus") {
@@ -179,7 +179,7 @@ record(calc, "$(P)$(R)TotModulus") {
 	field(INPA, "$(P)$(R)ShearStress.VAL PP")
 	field(INPB, "$(P)$(R)ShearStrain.VAL PP")
 	field(CALC, "A/B")
-	field(EGU,  "?")
+	field(EGU,  "1")
 	field(TSE,  "-2")
-	field(TSEL, "$(P)$(R)MeasNumb-R.TIME NPP")
+	field(TSEL, "$(P)$(R)#meas_data.TIME NPP")
 }
\ No newline at end of file
diff --git a/rheometerApp/Db/rheo_comm.db b/rheometerApp/Db/rheo_comm.db
index dd9e827031239bbc11a7c4a2f5591d250f1725da..f4f4def5900522c4c5ad76bdf06e3815c5e64196 100644
--- a/rheometerApp/Db/rheo_comm.db
+++ b/rheometerApp/Db/rheo_comm.db
@@ -8,11 +8,11 @@ record(ai, "$(P)$(R)InError-RB"){
 	field(DTYP, "stream")
 	field(INP,  "@rheo_comm.proto ErrorMsg rheo")
 	field(SCAN, "I/O Intr")
-	field(FLNK, "$(P)$(R)CheckAirPressure")
+	field(FLNK, "$(P)$(R)CheckAirPressure.PROC")
 }
 
 record(calc, "$(P)$(R)#CheckAirPressure") {
-	field(INPA, "$(P)$(R)InError-RG NPP")
+	field(INPA, "$(P)$(R)InError-RB NPP")
 	field(CALC, "(A = 9311) ? 1 : 0")
 	field(FLNK, "$(P)(R)ErrorAirPres.PROC")
 }
@@ -69,7 +69,7 @@ record(int64in, "$(P)$(R)InitDevice") {
 	field(DTYP, "stream")
 	field(INP,  "@rheo_comm.proto initRheo($(P)$(R)errMessage) rheo")
 	field(SCAN, "Passive")
-	field(FLNK, "$(P)$(R)TempeSetting-S")
+	field(FLNK, "$(P)$(R)TempSetting-S")
 }
 
 record(stringin, "$(P)$(R)TempSetting-S") {
@@ -147,7 +147,7 @@ record(lso, "$(P)$(R)LoadMeasConfig-S") {
 	field(OMSL, "supervisory")
 	field(OUT, "@rheo_comm.proto set_config($(P)$(R)LoadMeasConfig-RB) rheo")
 	field(SCAN, "Passive")
-	field(FLNK, "$(P)$(R)MeasHeader-R.PROC")
+	#field(FLNK, "$(P)$(R)MeasHeader-R.PROC")
 }
 
 record(lsi, "$(P)$(R)LoadMeasConfig-RB") {
@@ -158,7 +158,7 @@ record(stringin, "$(P)$(R)Debug"){
 	field(SCAN, "Passive")
 }
 
-record(stringin, "$(P)$(R)MeasSystemVisco-S") {
+record(stringin, "$(P)$(R)LoadMeasSystem-S") {
 	field(DTYP, "stream")
 	field(INP,  "@rheo_comm.proto Kconfig_viscometry($(P)$(R)errMessage) rheo")
 }
@@ -206,4 +206,31 @@ record(stringout, "$(P)$(R)TestRun") {
 	field(DESC, "")
 	field(DTYP, "stream")
 	field(OUT, "@rheo_comm.proto testrun rheo" )
+}
+
+
+# Status message
+
+record(mbbi, "$(P)$(R)MeasStatus"){
+	field(SCAN, "Passive")
+	field(ZRVL, "0")
+	field(ZRST, "Idle")
+	field(ONVL, "1")
+	field(ONST, "Busy")
+	field(TWVL, "2")
+	field(TWST, "Error")
+	field(INP, "$(P)$(R)#CalcStatus")
+}
+
+record(longin, "$(P)$(R)#ReadPart"){
+	field(DTYP, "stream")
+	field(SCAN, "I/O Intr")
+	field(INP, "@rheo_comm.proto measurement_status rheo")
+	field(FLNK, "$(P)$(R)#CalcStatus.PROC")
+}
+
+record(calc, "$(P)$(R)#CalcStatus"){
+	field(INPA, "$(P)$(R)#MeasStatus.VAL")
+	field(CALC, "(A > 0) ? 1 : 0")
+	field(FLNK, "$(P)$(R)Status.PROC")
 }
\ No newline at end of file
diff --git a/rheometerApp/Db/rheo_comm.proto b/rheometerApp/Db/rheo_comm.proto
index b11517891e47841325a50ea46c2d9adf09d20269..db6a8b8c86efc48afc200e0733a9836ecee2e996 100644
--- a/rheometerApp/Db/rheo_comm.proto
+++ b/rheometerApp/Db/rheo_comm.proto
@@ -120,6 +120,7 @@ Kconfig_amp_sweep {
 getWaveform {
 	Separator = ',';
 	InTerminator = ")]",SUB;
+	# InTerminator = ")]",LF;
 	in ":MEAS[%d,%(\$1)i,%*f,%*f,%*i,(),(%(\$2)[^,]";
 	
 }
@@ -177,6 +178,7 @@ MoveToLoadPos {
 ######################################################
 
 set_config {
+	ReplyTimeout = 2000;
     out "%s";
     in "%(\$1)#s";
 }
@@ -198,3 +200,8 @@ get_meas_head {
 testrun {
 	out ":RUN[]";
 }
+
+
+measurement_status {
+	in ":PART[%i,%d]";
+}
diff --git a/rheometerApp/src/split_data.cpp b/rheometerApp/src/split_data.cpp
index 6acd978f12e8e123deda2f7af080a39726d71d65..cd6578f96d56d949ed83e61cb28523d278bb7684 100644
--- a/rheometerApp/src/split_data.cpp
+++ b/rheometerApp/src/split_data.cpp
@@ -15,11 +15,6 @@ static int split_routine(aSubRecord *precord) {
 
 	string mdef;
 
-	// Definition of different measurement modes
-	string visc = "DAPT[TEMP[2,??T]],DAPT[TORQ[1,??T]],DAPT[SPEE[1,??T]],DAPT[EXCU[1,??T]]";
-    string osc1 = "VALF[STRA[1,?&]],DAPT[TEMP[2,??T]],COMP[MODU[1,??F],1,PHAS]";
-    string osc2 = "VALF[TORQ[1,?&]],DAPT[TEMP[2,??T]],COMP[MODU[1,??F],1,PHAS]";
-
 	cout << "get input" << endl;
 	int n = precord->noa;
 	
@@ -42,8 +37,8 @@ static int split_routine(aSubRecord *precord) {
 		*(float*)precord->vala = stof(inp[0]);
 		*(float*)precord->valb = stof(inp[1]);
 		*(float*)precord->valc = stof(inp[2]);
-		*(float*)precord->valf = state;
-	} else if ((state == 1) || (state == 2)) { 
+		*(int*)precord->valf = 0;
+	} else if ((state == 1) || (state == 2) || (state == 3)) { 
 		// Amp. Sweep //
 		cout << inp[0] << " " << inp[2] << " ";
 		cout << inp[4] << " " << inp[8] << endl;
@@ -51,7 +46,7 @@ static int split_routine(aSubRecord *precord) {
 		*(float*)precord->vald = stof(inp[2]);
 		*(float*)precord->valb = stof(inp[4]);
 		*(float*)precord->vale = stof(inp[8]);
-		*(float*)precord->valf = state;
+		*(int*)precord->valf = 1;
 	} else {
 		cout << "Unknown measurement mode" << endl;	
 	}
@@ -75,17 +70,33 @@ string read_meas_header(aSubRecord *precord) {
 	return a; 
 }
 
+bool checkIfStringsExist(const std::string& input, const std::string predefinedStrings[], size_t size) {
+
+    // Check if each pre-defined string exists in the input
+    for (size_t i = 0; i < size; ++i) {
+        if (input.find(predefinedStrings[i]) == std::string::npos) {
+            // If any pre-defined string is not found, return false
+            return false;
+        }
+		std::cout << predefinedStrings[i] << "exist." << std::endl;
+    }
+
+    // All pre-defined strings were found, return true
+    return true;
+}
+
+
 int id_intervals(string mdef, long interval) {
 	cout << "---id_intervals start---" << endl;
 	// Preset measurement modes
-	string visc = "DAPT[TEMP[2,??T]],DAPT[TORQ[1,??T]],DAPT[SPEE[1,??T]],DAPT[EXCU[1,??T]]";
-    string osc1 = "VALF[STRA[1,?&]],DAPT[TEMP[2,??T]],COMP[MODU[1,??F],1,PHAS]";
-    string osc2 = "VALF[TORQ[1,?&]],DAPT[TEMP[2,??T]],COMP[MODU[1,??F],1,PHAS]";
-
+	string visc[] = {"DAPT[TEMP[2,??T]]","DAPT[TORQ[1,??T]]","DAPT[SPEE[1,??T]]","DAPT[EXCU[1,??T]]"};
+    string osc1[] = {"VALF[STRA[1,?&]]","DAPT[TEMP[2,??T]]","COMP[MODU[1,??F],1,PHAS]"};
+    string osc2[] = {"VALF[TORQ[1,?&]]","DAPT[TEMP[2,??T]]","COMP[MODU[1,??F],1,PHAS]"};
+	string osc3[] = {"VALF[STRE[1,?&]]","DAPT[TEMP[2,??T]]","COMP[MODU[1,??F],1,PHAS]"};
 	size_t pos = 0;
 	int bracketLevel = 0;
 	int ipos = 0;
-	int state;
+	int state = -1;
 	int current_interval = 0;
 	string element;
 	
@@ -100,8 +111,8 @@ int id_intervals(string mdef, long interval) {
             bracketLevel--;
             if (bracketLevel == 0) {
                 // Extract the entire element and compare to
-                element = mdef.substr(ipos, (pos + 1) - ipos);
                 if (current_interval == interval) {
+					element = mdef.substr(ipos, (pos + 1) - ipos);
 					cout << "element:" << element << endl;
 					break;
 				}
@@ -111,17 +122,20 @@ int id_intervals(string mdef, long interval) {
         pos++;
 	}
 
-	if (element.find(visc) != std::string::npos) {
+	if (checkIfStringsExist(element, visc, sizeof(visc)/sizeof(visc[0]))) {
 		std::cout << "VISC mode found!" << std::endl;
 		state = 0;
-	} else if (element.find(osc1) != std::string::npos) {
-		std::cout << "OSC mode 1 found!" << std::endl;
+	} else if (checkIfStringsExist(element, osc1, sizeof(osc1)/sizeof(osc1[0]))) {
+		std::cout << "OSC mode STRA found!" << std::endl;
 		state = 1;
-	} else if (element.find(osc2) != std::string::npos) {
-		std::cout << "OSC mode 2 found!" << std::endl;
+	} else if (checkIfStringsExist(element, osc2, sizeof(osc2)/sizeof(osc2[0]))) {
+		std::cout << "OSC mode TORQ found!" << std::endl;
 		state = 2;
+	} else if (checkIfStringsExist(element, osc3, sizeof(osc3)/sizeof(osc3[0]))){
+		std::cout << "OSC mode STRE found!" << std::endl;
+		state = 3;
 	} else {
-		cout << "Mode not found!" << endl;
+		std::cout << "Mode not found!" << endl;
 		state = -1;
 	}
 	
@@ -138,6 +152,7 @@ int id_intervals(string mdef, long interval) {
 }
 
 
+
 epicsRegisterFunction(split_routine);
 // epicsRegisterFunction(measHead);
 // epicsRegisterFunction(id_intervals);
\ No newline at end of file