Скорость последовательного порта более 230400 в OS X

Я пытаюсь написать небольшой переносимый скрипт, который позволяет анализировать последовательный порт без каких-либо дополнительных требований к программному обеспечению анализатора, используя только некоторые стандартные утилиты командной строки.

я могу позвонить ./serialSniffer.sh /dev/cu.usbserial-xyz а затем подключите к отображаемому устройству программное обеспечение, которое я хочу прослушать.

serialSniffer.sh:

#! /usr/bin/env zsh

TEMPORARYDIR="$(mktemp -d 2>/dev/null || mktemp -d -t 'serialSniffer')"

cleanup ()
{
    kill $(cat $TEMPORARYDIR/rx_tee.pid) 2> /dev/null
    kill $(cat $TEMPORARYDIR/rx_cat.pid) 2> /dev/null
    kill $(cat $TEMPORARYDIR/tx_tee.pid) 2> /dev/null
    kill $(cat $TEMPORARYDIR/tx_cat.pid) 2> /dev/null
    rm $TEMPORARYDIR/rxfifo
    rm $TEMPORARYDIR/txfifo
    kill $(cat $TEMPORARYDIR/socat.pid) 2> /dev/null
    rm $TEMPORARYDIR/rx_tee.pid
    rm $TEMPORARYDIR/rx_cat.pid
    rm $TEMPORARYDIR/tx_tee.pid
    rm $TEMPORARYDIR/tx_cat.pid
    rm $TEMPORARYDIR/socat.pid
    exit 0
}

trap cleanup SIGINT SIGTERM

socat pty,raw,echo=0,link=$TEMPORARYDIR/ttyDevice pty,raw,echo=0,link=$TEMPORARYDIR/ttyHost &
echo $! > $TEMPORARYDIR/socat.pid
sleep 0.01

mkfifo $TEMPORARYDIR/rxfifo
cat $TEMPORARYDIR/ttyDevice > $TEMPORARYDIR/rxfifo &
echo $! > $TEMPORARYDIR/rx_cat.pid
tee $1 $TEMPORARYDIR/rx < $TEMPORARYDIR/rxfifo > /dev/null &
echo $! > $TEMPORARYDIR/rx_tee.pid

mkfifo $TEMPORARYDIR/txfifo
cat $1 > $TEMPORARYDIR/txfifo &
echo $! > $TEMPORARYDIR/tx_cat.pid
tee $TEMPORARYDIR/ttyDevice $TEMPORARYDIR/tx < $TEMPORARYDIR/txfifo > /dev/null &
echo $! > $TEMPORARYDIR/tx_tee.pid

echo "Connect computer side software to '$TEMPORARYDIR/ttyHost'."

tail -f $TEMPORARYDIR/tx $TEMPORARYDIR/rx

Он работает с низкими скоростями передачи данных до 230400. Но при выборе 460800 в моем программном обеспечении PySerial, например, я получил ошибки "Несоответствующий ioctl для устройства". С помощью stty не работает для установки высоких скоростей.

Прямая связь между PySerial и dev/cu.usbserial-xyz работает так что это не аппаратная проблема.

1 ответ

Здесь есть хороший ответ: Как установить скорость передачи данных для Mac в терминале

В основном используйте stty, чтобы установить скорость передачи данных и фон, чтобы он не выходил:

stty -f /dev/cu.usbserial 460800 &
Другие вопросы по тегам