byte
[] readBuf = (
byte
[]) msg.obj;
String readMessage =
new
String(readBuf,
0
, msg.arg1);
dataRecieved = readMessage;
rx.setText(dataRecieved);
dataRecieved = dataRecieved.trim();
String[] bytes = dataRecieved.split(
" "
);
if
((dataRecieved !=
null
) && (dataRecieved.matches(
"\\s*[0-9A-Fa-f]{2} [0-9A-Fa-f]{2}\\s*\r?\n?"
))) {
dataRecieved = dataRecieved.trim();
String[] bytes = dataRecieved.split(
" "
);
if
((bytes[
0
] !=
null
)&&(bytes[
1
] !=
null
)) {
PID = Integer.parseInt(bytes[
0
].trim(),
16
);
value = Integer.parseInt(bytes[
1
].trim(),
16
);
}
int
RPM_value = (value*
256
)/
4
;
needle_value = ((RPM_value *
22
)/
1000
) -
85
;
if
(prev_RPM ==
0
) {
RotateAnimation RPM_animation =
new
RotateAnimation(-
85
, needle_value,
30
,
97
);
RPM_animation.setInterpolator(
new
LinearInterpolator());
RPM_animation.setDuration(
500
);
RPM_animation.setFillAfter(
true
);
((View) pointer).startAnimation(RPM_animation);
prev_RPM = needle_value;
}
else
{
RotateAnimation RPM_animation =
new
RotateAnimation(prev_RPM, needle_value,
30
,
97
);
RPM_animation.setInterpolator(
new
LinearInterpolator());
RPM_animation.setDuration(
500
);
RPM_animation.setFillAfter(
true
);
((View) pointer).startAnimation(RPM_animation);
prev_RPM = needle_value;
}
String displayRPM = String.valueOf(RPM_value);
RPM.setText(displayRPM);
}
else
if
((dataRecieved !=
null
) && (dataRecieved.matches(
"\\s*[0-9A-Fa-f]{1,2} [0-9A-Fa-f]{2} [0-9A-Fa-f]{2}\\s*\r?\n?"
))) {
dataRecieved = dataRecieved.trim();
String[] bytes = dataRecieved.split(
" "
);
if
((bytes[
0
] !=
null
)&&(bytes[
1
] !=
null
)&&(bytes[
2
] !=
null
)) {
PID = Integer.parseInt(bytes[
0
].trim(),
16
);
value = Integer.parseInt(bytes[
1
].trim(),
16
);
value2 = Integer.parseInt(bytes[
2
].trim(),
16
);
}
int
RPM_value = ((value*
256
)+value2)/
4
;
int
needle_value = ((RPM_value *
22
)/
1000
) -
85
;
if
(prev_RPM ==
0
) {
RotateAnimation RPM_animation =
new
RotateAnimation(-
85
, needle_value,
30
,
97
);
RPM_animation.setInterpolator(
new
LinearInterpolator());
RPM_animation.setDuration(
500
);
RPM_animation.setFillAfter(
true
);
((View) pointer).startAnimation(RPM_animation);
prev_RPM = needle_value;
}
else
{
RotateAnimation RPM_animation =
new
RotateAnimation(prev_RPM, needle_value,
30
,
97
);
RPM_animation.setInterpolator(
new
LinearInterpolator());
RPM_animation.setDuration(
500
);
RPM_animation.setFillAfter(
true
);
((View) pointer).startAnimation(RPM_animation);
prev_RPM = needle_value;
}
String displayRPM = String.valueOf(RPM_value);
RPM.setText(displayRPM);