LINUX.ORG.RU

Сообщения HandBreak

 

Оптимизация bash-скрипта.

Форум — Development

Коллеги, поделитесь пожалуйста советами, как реализовать мою задачу на BASH-е с максимальной эффективностью и быстродействием ? Суть скрипта состоит в чтении _бинарного_ файла и передаче его содержимого в COM-порт, добавляя в процессе передачи управляющие двоичные коды. Данную задачу реализовал как смог:

#!/bin/bash
COUNTER=0 
FILE=$1
FILESIZE=$(stat -c%s "$FILE");
echo -en "\xFE\xFE\xFE\xFE" > /dev/ttyUSB0      # Синхронизируем поток данных. После исполнения устройство готово принять старший байт адреса
while [ "$COUNTER" -lt $FILESIZE ]
do
    let HR=COUNTER/256
    let LR=COUNTER%256
    hLR=`printf "%02X" $LR`
    hHR=`printf "%02X" $HR`
    hBT=`dd if=$FILE bs=1 count=1 skip=$COUNTER 2>/dev/null | hexdump -v -e '/1 "%02X"'`
    echo -en "\xFF\x$hHR\x$hLR\xFF\x$hBT" > /dev/ttyUSB0        # Паттерн чтения/записи байта в адрес $hHR$hLR

    let COUNTER=COUNTER+1
done
echo -en "\xFE" > /dev/ttyUSB0                  #  Перевести контроллер в состояние запрета записи данных

тапёра не бейте играет как умеет :))

P.S. Понимаю, что у меня производится много лишних и ненужных преобразований типа бинарные данные в текстовый HEX-формат, затем обратно в бинарные и т.д, что очень сильно тормозит обработку, но в силу редкого использования shell-а для меня затруднительно выбрать оптимальный путь.

 , , ,

HandBreak
()

RSS подписка на новые темы