45 lines
1.4 KiB
Bash
45 lines
1.4 KiB
Bash
|
|
#!/bin/sh
|
||
|
|
|
||
|
|
# @Param1 emc1413 data high 8bit
|
||
|
|
# @Param2 emc1413 data low 8bit
|
||
|
|
# @Param3 customization channel name
|
||
|
|
convert_emc1413_data(){
|
||
|
|
# remove data prefix '0x'
|
||
|
|
hex_value1=$(echo "$1" | awk '{sub(/^0x/,""); print}')
|
||
|
|
hex_value2=$(echo "$2" | awk '{sub(/^0x/,""); print}')
|
||
|
|
|
||
|
|
# bc calculator recognized upper case only, change data to upper case
|
||
|
|
upper_hex_value1=$(echo "$hex_value1" | awk '{
|
||
|
|
for(i=1; i<=length($0); i++){
|
||
|
|
if(tolower(substr($0,i,1)) ~ /^[a-f]$/)
|
||
|
|
printf toupper(substr($0,i,1));
|
||
|
|
else
|
||
|
|
printf substr($0,i,1);
|
||
|
|
}
|
||
|
|
print ""
|
||
|
|
}')
|
||
|
|
upper_hex_value2=$(echo "$hex_value2" | awk '{
|
||
|
|
for(i=1; i<=length($0); i++){
|
||
|
|
if(tolower(substr($0,i,1)) ~ /^[a-f]$/)
|
||
|
|
printf toupper(substr($0,i,1));
|
||
|
|
else
|
||
|
|
printf substr($0,i,1);
|
||
|
|
}
|
||
|
|
print ""
|
||
|
|
}')
|
||
|
|
|
||
|
|
# change data from hex to dec
|
||
|
|
dec_value1=$(echo "ibase=16; $upper_hex_value1" | bc)
|
||
|
|
dec_value2=$(echo "ibase=16; $upper_hex_value2" | bc)
|
||
|
|
|
||
|
|
# calculate tempreture
|
||
|
|
temp=$(echo "scale=4; $dec_value1 + ($dec_value2 / 32 * 0.125 )" | bc)
|
||
|
|
|
||
|
|
# print result to consol
|
||
|
|
format_temp=$(echo "$temp" | awk '{ if ($0 ~ /^\./) print "0" $0; else print $0 }')
|
||
|
|
|
||
|
|
echo "$3 : $format_temp C, hex value : $hex_value1 $hex_value2"
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
convert_emc1413_data $1 $2 $3
|