Quote:
Originally Posted by caduser1
Here's my code. Please feel free to comment.
#!/bin/bash
#Port Initialization
stty -F /dev/ttyS000 ispeed 9600 ospeed 9600 sane cs8 -parodd -cstopb ixon
#Port Variable Definition
PORT="/dev/ttyS000"
#Control Characters Definition
STX=$(printf "\x02")
ETX=$(printf "\x03")
ENQ=$(printf "\x05")
ACK=$(printf "\x06")
NACK=$(printf "\x15")
LINETEST=$STX"AREYUTHERE"$ETX
#Some Timers
ENQTIMER=2
PMSTIMER=5
AREYUTHERETIMER=5
RESP="GRS"
RESP2="CHK"
SUCCESS=1
FAILURE=0
DATAFILE="/usr/bin/dgrp/pmsdata.txt"
LOGFILE="/usr/bin/dgrp/log.txt"
Init ()
{
echo -en $ENQ > $PORT
read -r -s -t $ENQTIMER -n 1 DATA1 < $PORT
case $DATA1 in
$ACK)
echo -en $LINETEST > $PORT
read -r -s -t $ENQTIMER -n 1 DATA2 < $PORT
case $DATA2 in
$ACK)
RCODE=$SUCCESS
;;
*)
RCODE=$FAILURE
;;
esac
;;
$ENQ)
echo -en $ACK > $PORT
read -r -s -t $ENQTIMER DATA3 < $PORT
case $DATA3 in
AREYUTHERE)
echo -en $ACK > $PORT
RCODE=$SUCCESS
;;
*)
echo -en $NACK > $PORT
RCODE=$FAILURE
;;
esac
;;
*)
RCODE=$FAILURE
;;
esac
}
NormalOp ()
{
while true
do
read -u 1 -r -s -t $PMSTIMER -n 1 DATA3
case $DATA3 in
$ENQ)
echo -en $ACK > $PORT
read -u 1 -r -s -t $PMSTIMER DATA4
LEN=${#DATA4[*]}
STARTOFDATA=${DATE4:0:3}
ENDOFDATA=${DATA4:-3}
MESSAGE=${DATA4:1:3}
if [ "$STARTOFDATA" = "STX" -a "$ENDOFDATA" = "ETX" ]; then
if [ "$MESSAGE" = "CHK" -o "$MESSAGE" = "EDT" -o "$MESSAGE" = "RST" -o "$MESSAGE" = "STS" -o "$MESSAGE" = "MW " ]; then
echo -e $ACK > $PORT
echo $DATA4 >> $DATAFILE
echo $DATA4 >> $LOGFILE
elif
[ "${MESSAGE:1:10}" = "AREYUTHERE" -o "${MESSAGE:1:8}" = "LINETEST" -o "${MESSAGE:1:3}" = "GRS" -o "${MESSAGE:1:5}" = "RQINZ" ]; then
echo -e $ACK > $PORT
else
echo -e $NACK > $PORT
echo $DATA >> $LOGFILE
fi
else
echo -en $NACK > $PORT
fi
;;
esac
done
}
while true
do
Init
if [ "$RCODE" -eq 1 ]; then
echo "Link success..."
break
else
echo "Link not initialized..."
sleep 2
fi
done
NormalOp
exit 0
|
Here's the log of what happens when I execute it:
2004.12.7: 15:17:24 - Sending ENQ
2004.12.7: 15:17:25 - Received: {ACK}
2004.12.7: 15:17:25 - VMs_Xmit->Sending: {STX}AREYUTHERE{ETX}
2004.12.7: 15:17:29 - Received: {NAK}
2004.12.7: 15:17:29 - Received NAK - Sending again
2004.12.7: 15:17:29 - Sending ENQ
2004.12.7: 15:17:35 - Timed Out - Trying again
2004.12.7: 15:17:35 - Sending ENQ
2004.12.7: 15:17:35 - Received: {ACK}
2004.12.7: 15:17:35 - VMs_Xmit->Sending: {STX}AREYUTHERE{ETX}
2004.12.7: 15:17:39 - Received: {NAK}
2004.12.7: 15:17:39 - Received NAK - Sending again
2004.12.7: 15:17:39 - Sending ENQ
2004.12.7: 15:17:45 - Timed Out - Trying again
2004.12.7: 15:17:45 - Sending ENQ
2004.12.7: 15:17:45 - Received: {ACK}
2004.12.7: 15:17:46 - VMs_Xmit->Sending: {STX}AREYUTHERE{ETX}
2004.12.7: 15:17:49 - Received: {NAK}
2004.12.7: 15:17:49 - Received NAK - Sending again
2004.12.7: 15:17:55 - Received: {ACK}