bash中的串口交互

bash中的串口交互,bash,serial-port,hex,Bash,Serial Port,Hex,我有一个串行读卡器连接到COM1/dev/ttyS0 我需要发送一个十六进制序列并接收一个答案,然后根据答案发送另一个十六进制序列 例如: #|/bin/bash echo -en '\x02\x00\x02\x30\x31\x03\x02' > /dev/ttyS0 #I want something like: while read -r line < /dev/ttyS0; do data = data + $line done if [$data = \x06 ]

我有一个串行读卡器连接到COM1
/dev/ttyS0

我需要发送一个十六进制序列并接收一个答案,然后根据答案发送另一个十六进制序列

例如:

#|/bin/bash
echo -en '\x02\x00\x02\x30\x31\x03\x02' > /dev/ttyS0

#I want something like:
while read -r line < /dev/ttyS0; do
   data = data + $line
done


if [$data = \x06 ]; then
   echo -en '\x05' > /dev/ttyS0
fi

done
#|/bin/bash
echo-en'\x02\x00\x02\x30\x31\x03\x02'>/dev/ttyS0
#我想要像这样的东西:
当读取-r行时/dev/ttyS0
fi
完成
能做到吗

现在我正在尝试这个, 但是串行端口没有应答。 如果我使用终端应用程序,它会回答

function ReadCard(){

CardReply="reply.txt"
> $CardReply

filesize=$(wc -c < "$CardReply")

until [  $filesize -gt 0 ]; do
    filesize=$(wc -c < "$CardReply")
    echo "Size:$filesize"
    echo -en '\x02\x00\x04\x45\x30\x30\x32\x03\x72' > $SerialPort
    echo -en '\x05' > $SerialPort
    cat $SerialPort >> $CardReply
done

}
函数读取卡(){
CardReply=“reply.txt”
>$CardReply
文件大小=$(wc-c<“$CardReply”)
直到[$filesize-gt 0];执行
文件大小=$(wc-c<“$CardReply”)
回显“大小:$filesize”
echo-en'\x02\x00\x04\x45\x30\x30\x32\x03\x72'>$SerialPort
echo-en'\x05'>$SerialPort
cat$SerialPort>>>$CardReply
完成
}

这取决于您在寻找什么。通过Unix read命令读取数据可能会很慢。您可以将输入保存到一个文件中,然后使用python或其他更快的方法进行处理。即使是随意使用sed也可以,那么如何将输入保存到文件中呢?在第一篇文章中添加了一个新代码。还是没什么!!:(这取决于您要查找的内容。使用Unix read命令读取数据可能会很慢。您可以将输入保存到一个文件中,然后使用python或其他更快的方法进行处理。随意使用sed也可以。如何将输入保存到文件中?在第一篇文章中添加了新代码。仍然没有任何内容!!:(