串行端口OS X上的波特率超过230400

时间:2015-10-13 14:53:13

标签: macos serial-port stty

我试图编写一个小的可扩展脚本,允许使用一些标准命令行实用程序进行串口嗅探而无需任何进一步的嗅探器软件要求。

我可以拨打./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的低波特率。但是当我在我的PySerial软件中选择460800时,我得到了“设备不适当的ioctl”。错误。 使用stty无法设置高波特率。

PySerial和dev/cu.usbserial-xyz之间的直接连接有效,因此它不是硬件问题。

1 个答案:

答案 0 :(得分:0)

这里有一个很好的答案:How to set the baud rate for Macs in a terminal

基本上使用stty来设置波特率和背景,使其不会退出:

stty -f /dev/cu.usbserial 460800 &