そのため、pyserial ライブラリを使用してファイルをシリアル経由で別のコンピューターに送信する python スクリプトがあります。シリアル経由で送信される前後のファイルの md5 チェックサムを計算するスクリプトを書きましたが、いくつかの問題が発生しました。
例: 1 から 10 までの数字のリストを含む third.txt という名前の単純なファイルを送信しました。ファイルが明らかに同じであっても、送信前のファイルのチェックサムは、他のコンピューターで送信した後のファイルのチェックサムとはまったく異なります。
ファイルを USB 経由で移動し、この方法でチェックサム計算を行うだけで、コードに問題がないかどうかを確認しました。今回はうまくいきました。
なぜこれが起こっているのか、どうすれば修正できるのでしょうか?
これが送信前のチェックサムコードです。これは正確なコードではありませんが、基本的に私がしたことです。
<<Code that waits for command from client>>
with open(file_loc) as file_to_read:
data = file_to_read.read()
md5a = hashlib.md5(data).hexdigest()
ser.write('\n' + md5a + '\n')
送信後のチェックサムコードは次のとおりです。
with open(file_loc) as file_to_read:
data = file_to_read.read()
md5b = hashlib.md5(data).hexdigest()
print('Sending Checksum Command')
ser.write("\n<<SENDCHECKSUM>>\n")
md5a = ser.readline()
print(md5a)
print(md5b)
if md5a == md5b:
print("Correct File Transmission")
else:
print("The checksum indicated incorrect file transmission, please check.")
ser.flush()