PyPiにあるXMODEMプロトコル実装を使用するのは非常に簡単です。上記の例について注意すべき点は、不要なものがいくつかあることです。(たぶん、これは作者のために、またはモジュールの以前のバージョンで機能しましたか?)
ここにあるドキュメントは非常に役立つので、怖がらせないでください。明らかに送信者と受信者が必要になります。Pythonスクリプトがどちらになるかわからないため、以下にテストして作業している2つの例を示します。(基本的に、PyPiの例からコピーして貼り付けました)
import serial
from xmodem import XMODEM
ser = serial.Serial(port='COM56')
def getc(size, timeout=8):
gbytes = ser.read(size)
print(f'Read Byte: {gbytes}')
return gbytes or None
def putc(data, timeout=8):
pbytes = ser.write(data)
print(f'Put Byte: {pbytes}')
return pbytes or None
if __name__ == '__main__':
modem = XMODEM(getc, putc)
シリアルデバイスから受信するには:
stream = open('output', 'wb')
modem.recv(stream, crc_mode=0)
シリアルデバイスに送信するには:
stream = open('input', 'rb')
modem.send(stream)
ここで重要なのは、ボーレートが両側に設定されていることを確認することです(デフォルトはここにあります)。これは時間ベースではなく、トランザクションベースであるため、遅延やスリープを追加しないでください。印刷により、データがファイル/シリアルポートに出入りするときにトランザクションをリアルタイムで確認できます。