現在、シリアル接続からデータをログに記録しようとしています。私は python モジュールpyserialを使用しています。
シリアル接続から行を読み取った後、タイムスタンプを先頭に追加して、ファイルに書き込みたいと思います。
これはほとんどの場合機能しますが、タイムスタンプがファイルの中央に表示されることがあります。エンドラインのキャラクターにはほど遠い。
私が使用しているコードのスニペットは次のとおりです。
self.serialconnection = serial.Serial(port=self.port, baudrate=115200,
timeout=0)
def run(self):
openfile = open(self.logfile, 'a')
while not self.stoprequest.isSet():
try:
linefromserial = self.serialconnection.readline()
if linefromserial:
linefromserial = linefromserial.replace('\00', '')
datenow = datetime.datetime.strftime(datetime.datetime.now(), "%Y-%m-%d %H:%M:%S ")
dated_linefromserial = datenow + linefromserial
openfile.write(dated_linefromserial)
except self.stoprequest.isSet():
openfile.close()
break
これを別のスレッドで実行しているため、シリアル接続にタイムアウトを使用していません。ブロックしたくありません。
では、この方法に明らかな問題はありますか? 問題が readline() メソッドが想定どおりに機能しないことにあるのか、それともファイル書き込みの問題なのかを判断するにはどうすればよいですか?