LINUX.ORG.RU

Bash + serial port + ifconfig

 , ,


0

3

Всем привет. Прошу помощи разобраться в скрипте, я новичок. Мне нужно написать скрипт, который в цикле опрашивает командой '\xff' контроллер по порту ttyUSB0. Контроллер отвечает одним байтом, и, если принятый байт не ноль, значит прекращаем цикл и поднимаем сеть с ip адресом, где принятый байт это последний байт в ip адресе.

#!/bin/bash
PORT="/dev/ttyUSB0"
stty -F $PORT 9600

while [ 1 ]; do
   printf '\xff' > $PORT
   <дальше затык здесь, не получается считать переменную и дальше с ней работать (железка на проводе)>
   read byte < $PORT
   echo $byte
done


a так:

if read -r -t 5 byte < /dev/ttyUSB0; then
     echo "$byte"
else
     echo "Talk to the hand"
fi

ну или пробуй dd, там в отличии от read можно указать кол-во байт, которое нужно прочитать, а не строку как делает это read.

byte=`dd if=/dev/ttyUSB0 count=1 2>/dev/null`
hope13 ★★★ ()
Ответ на: комментарий от hope13

1. В современном bash у read есть параметр -N.
2. dd действительно надёжней, только ты забыл 'bs=1'.
3. Для таких вещей следует делать 'stty raw -echo'.

ABW ★★★★★ ()
Ответ на: комментарий от hope13

Контроллер отвечает всего одним байтом, стоит ли явно указывать число байт, которое надо прочитать?

read -r -n1 byte

Less ()
Ответ на: комментарий от Less

стоит ли явно указывать число байт

да.

Ещё лучше вместо read пользоваться dd. Toлько добавь туда ещё bs=1, как посоветовал ABW. Как здесь использовать ssty raw я не знаю. Но возможно это действительно лучше.

hope13 ★★★ ()

и да dd вообще убер тулза.

ваще см:

 71.0211UNIXProgrammersManualNov71[SYS].pdf
 72.0260unixProgManual2ndEd.pdf
 77.0115LionsCommentaryOnUnix.6Ed1977[SYS].pdf
 77.0118x2v6UNIXLionSources.pdf
 78.0236TheCPL1edK&R.pdf
 78.0388BSTJ_Jul.pdf
 79.0250UNIXv7vol2b.pdf
 79.0336UNIXv7vol2a.pdf
 79.0404UNIXv7vol1.pdf
 82.0182TheCPuzzleBook.pdf
 83.0466baurnОперационная система UNIX.djvu <- The Unix System by Baurn 83 on ru 1986
 84.0369KernighanPikeTUpe.djvu
 85.725MJRochkindAdvanced UNIX Programming(2ndEd2004).pdf <- хотелось бы увидеть первое издание ибо 2ое слишком толстое.
 86.0488M.J.Bach-The Design of the UNIX Operating System.pdf
 88.0225The AWK PL.pdf
 93.0542manual_plan9_1ed.pdf
 95.0399prus-1995-1.pdf
 99.0289КерниганПайкПрактика программирования2004.djvu
 0115(1971-86)AResearchUNIXReader.complete[SYS].pdf
 0174Крокфорд Дуглас - JavaScript. Сильные стороны - 2012.pdf
 0465The Go PLKernighanDonovan2015.epub
 0544РеймондИскусствопрограммированиядляUNIX(2005).djvu
 ОрамУилсонИдеальный код-Питер (2011).djvu

вообще много яснее первоначальная роль Си как одного из языков отлично ясна из
 78.0388BSTJ_Jul.pdf (это знамений спец выпуск)
 79.0250UNIXv7vol2b.pdf 79.0336UNIXv7vol2a.pdf 79.0404UNIXv7vol1.pdf - ну а это руководства программиста

т.е большинсто вещей в юниксе по началу можно было реалзовывать буквально в шелле и только если нужна производительность переводить на Си.
qulinxao ★★☆ ()

ЛОР скатился. 6 ответов и ни одного посылания в job.

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