파이프 명령을 사용하여 16진수 덤프를 수행하고 마지막에 이를 파일로 리디렉션하는 스크립트가 있습니다. 지금은 Raspberry Pi 직렬 포트에서 데이터를 로깅하고 있습니다. 또한 쉘 스크립트에서 Python 스크립트를 호출합니다(시간을 밀리초 단위로 표시). 명령을 실행한 후 화면에 데이터가 표시되는 데 약 5분 정도 걸립니다.
timeout 2s ./ExpHmax
while :
do
sudo hexdump -v -e '1/1 "%02x\n"' /dev/ttyUSB0 | awk '$1=="ed" {
getline byte1
getline byte2
number = strtonum("0x" substr(byte2,2,1))+2
"./Time.py" |& getline timestamp;
data = ":: "timestamp " ::ED." byte1"."byte2
while(number-->0)
{getline byte; data = data"."byte}
print data"."
}' | tr '[a-z]' '[A-Z]'| grep -v '^.....................00' > Thur.log
done
파이프라인을 실행하지 않고 이 스크립트를 실행하는 방법을 제안할 수 있는 사람이 있습니까? 그것 때문에 지연이 발생한 것 같아요. 이것은 내 Python 스크립트입니다.
import time
millis = int(round(time.time() * 1000))
print millis
답변1
일치하는 모든 바이트(!)에서 Python을 인스턴스화하지 않는 것부터 시작할 수 있습니다.
#!/usr/bin/awk -f
function de() {
getline < "/proc/uptime"
close("/proc/uptime")
return $0
}
BEGIN {
ec = de()
}
$0 == "ed" {
getline byte1
getline byte2
number = strtonum("0x" substr(byte2, 2, 1)) + 2
data = ":: " de() - ec " ::ED." byte1 "." byte2
while (number--) {
getline byte
data = data "." byte
}
print data "."
}