LINUX.ORG.RU

Обмен данными с последовательным портом.

 , , , ,


1

2

Пишу следующий скрипт:

#!/bin/sh

DEV=/dev/ttyS0
CMD=$1

echo $CMD >$DEV
dd if=$DEV count=1 2>/dev/null

На другой машине.

#!/bin/sh

DEV=/dev/ttyS0
TEST=test

while true
do
dd if=$DEV count=1 2>/dev/null
echo $TEST >$DEV
done

На второй машине запускаю второй скрипт:
./testserial.sh
data
<entry>

И начиную отправлять туда данные:

./test.sh data
test
./test.sh data
test
./test.sh data
ata
est

От чего такое происходит, и как это исправить?

★★★★★

Что-нибудь такое...

А вообще, зачем это на баше делать? Проще сразу Си взять.

solovey ★★
()

а у меня вот такая есть штуковина на баше. думаю, ты её себе сможешь приспособить. ;)

cat ./at.sh

!/bin/bash

MODEM=$2
TMP=$(mktemp)
trap 'rm -f $TMP' EXIT

function get_response
{
        local ECHO
        # cat will read the response, then die on timeout
        cat <&5 >$TMP &
        echo -e "$1\r" >&5
        # wait for cat to die
        wait $!

        exec 6<$TMP
        read ECHO <&6
        if [ "$ECHO" != "$1" ]
        then
                exec 6<&-
                return 1
        fi

        read RESPONSE <&6
        exec 6<&-
        return 0
}

RESPONSE=""

# Set modem with timeout of 5/10 a second
stty -F "$MODEM" 9600 -echo igncr -icanon onlcr ixon min 0 time 8

# Open modem on FD 5
exec 5<>"$MODEM"

get_response "ate1;$1" || echo "Bad response"
echo ${RESPONSE}
exec 5<&-

aol ★★★★★
()

Проблема решилаль так:

stty -F $DEV 115200 -echo tine 8

Кароче, надо экспереминтировать с stty.

ne-vlezay ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.