bash中的串口交互
我有一个串行读卡器连接到COM1bash中的串口交互,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 ]
/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也可以。如何将输入保存到文件中?在第一篇文章中添加了新代码。仍然没有任何内容!!:(