나는 블루투스를 통해 직렬 포트를 통해 전송되는 데이터를 읽을 수있는 파이썬 스크립트를 작성하고 경과 시간을 계산해야하는 코드를 디버깅하고 있습니다. 각 연속 패킷. 시리얼 포트에서 데이터를 읽는 방법을 알고 있지만 각 패킷 사이의 시간을 계산하는 데 문제가 있습니다.시리얼 포트를 통해받은 2 연속 패킷 사이의 시간을 계산하는 파이썬 스크립트
어떤 제안이 도움이 될 것입니다.
감사합니다.
나는 블루투스를 통해 직렬 포트를 통해 전송되는 데이터를 읽을 수있는 파이썬 스크립트를 작성하고 경과 시간을 계산해야하는 코드를 디버깅하고 있습니다. 각 연속 패킷. 시리얼 포트에서 데이터를 읽는 방법을 알고 있지만 각 패킷 사이의 시간을 계산하는 데 문제가 있습니다.시리얼 포트를 통해받은 2 연속 패킷 사이의 시간을 계산하는 파이썬 스크립트
어떤 제안이 도움이 될 것입니다.
감사합니다.
같은 것을 사용하고 경과 시간 (초)을 찾아 빼기하는 것입니다.
import time
# receive one packet
t0 = time.time()
# then receive the other packet
t1 = time.time()
print 'Time between packets (seconds):', t1 - t0
나는 당신의 접근법을 시도했다 ... 나는 더 복잡한 것이 필요하지 않은 어떤 방법을하고 있었다. ... thanks :) – serendipity
당신은 환영합니다! 내 대답이 도움이 되었기 때문에 기쁩니다. :) 코드를 사용하여 위로 감은 경우 내 대답 옆에있는 녹색 체크 표시를 클릭하여 "아직 열림"상태이고 더 많은 답변이 필요한 질문에 더 이상 질문이 나타나지 않게하고 계속 스택 오버플로를 즐기시기 바랍니다 ! –
트릭을 할 수 있습니다. IntTimer() 객체를 만들고 패킷을받을 때마다 .stamp()를 호출하면됩니다. 시작일 뿐이므로 원하는 작업을 수행하면 이전 스탬프 등을 정리하기 위해이를 변경해야 할 수도 있습니다. 그렇지 않으면 self.timestamps가 성장하고 커질 것입니다. self.timestamps를 사용하여 패킷 간의 평균 시간 등을 계산할 수 있습니다.
import time
class IntTimer:
def __init__(self):
self.timestamps = []
def stamp(self):
if self.timestamps:
last = self.timestamps[-1]
else:
last = False
now = time.time()
self.timestamps.append(now)
if last:
#return the time since the last packet
return now - last
else:
return -1
이것은 매우 간단한 대답입니다. 그렇다면 더 복잡한 질문을하는 것이 좋습니다.
솔루션을 제공해 주셔서 감사합니다 ... 저는 귀하의 솔루션과 비슷한 것을 찾고 있었으며 문제에 대해 많은 명확성과 통찰력을 갖게되었습니다. 다시 감사드립니다! – serendipity
이것이 내가 작성한 것이며 작동했습니다. 답장을 보내 주셔서 감사합니다.
#!/bin/python
import serial
import time
time_stamp_prev = 0
ser = serial.Serial( \
port="/dev/tty.bluetoothmodule", \
baudrate=115200, \
parity=serial.PARITY_NONE, \
stopbits=serial.STOPBITS_ONE, \
bytesize=serial.EIGHTBITS)
while True:
if ser.inWaiting() > 0:
print ser.readline();
time_stamp_curr = time.time()
time_between_packets = time_stamp_curr - time_stamp_prev
time_stamp_prev = time_stamp_curr
코드를 제공 할 수 있습니까? – Velociraptors