2015-10-13 199 views
0

我想寫一點可移植腳本,允許串行端口,而無需使用只是一些標準的命令行工具,任何進一步的嗅探軟件要求嗅探。串口波特率超過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.但是,選擇在我的PySerial軟件,例如460800的時候,我得到的錯誤「的設備不適當的ioctl」。 使用stty無法設置高波特率。

PySerial和dev/cu.usbserial-xyz作品,所以它不是一個硬件問題之間的直接連接。

+0

有同樣的問題。你找到解決方案嗎?我已經嘗試使用由FTDI提供的驅動程序,但是它也不起作用。這個問題只發生在OSX上。 Linux和Windows可以使用內置和FTDI驅動程序來選擇大於230400的波特率。 –

+0

@StefanD。不,我沒有解決方案,但不幸的是。 – Zappel

回答