コマンドをuCに送信してデータを送信する前に、実行中の別のスレッドでシリアルインターフェイスから読み取ることを検討しましたか?
これにより、書き込みコマンドと読み取り開始後の遅延がいくらか解消されます。バッファ オーバーランが発生していなければ、この方法で成功した SO ユーザーは他にもいます。
これが明確でない場合はお知らせください。これを示すために何かをまとめることができます.
編集
もう少し考えてみると、バッファから読み込んでファイル システムに書き込もうとしている場合、スタンドアロン スレッドでも解決しない可能性があります。処理時間を最小限に抑えるには、一度に 100 バイトを読み取り、serial.Read(size=100)
そのデータをキューにプッシュして、転送が完了した後にすべてを処理することを検討してください。
疑似コードの例
def thread_main_loop(myserialobj, data_queue):
data_queue.put_no_wait(myserialobj.Read(size=100))
def process_queue_when_done(data_queue):
while(1):
if len(data_queue) > 0:
poped_data = data_queue.get_no_wait()
# Process the data as needed
else:
break;