投稿

7月, 2023の投稿を表示しています

PiMagの自動・外部制御にむけて(1)

イメージ
PiMag(ポータブル40テスラ装置)にはraspberry piが搭載されていて、そこにに置いた自作pythonプログラムで制御しています。そこでtkinterというpython標準のGUIを使用しています。そのGUI特有の機能を使っています。 問題は外部でリモートコントロールしたり、自動計測することを考えたときに、GUIベースなのは微妙と言うことです。今のソフトはtkinterの機能を駆使しているので、フレキシブルじゃないです。そこで 「テキスト設定ファイル」に値を読み書きすることを基本とする、というプログラムにしようと思います。ボタンを押しても、まずはテキストファイルの値を書き換え、それを別のプログラムが参照して次の動きを作る、ということです。 そうすれば、GUIのボタンを押さなくても、外部からテキストファイルを書き換えることで、ボタンを押すようなことができそうです。 そのテキストファイルは複数のプログラムが参照する可能性があるので、ファイルを安全に読み書きできる必要があります。 ファイル名readerwriter.pyとして下記を作ります。 from filelock import FileLock def safe_write(filename, content): lock_file = filename + ".lock" with FileLock(lock_file): with open(filename, 'w') as f: f.write(content) def safe_read(filename): lock_file = filename + ".lock" with FileLock(lock_file): with open(filename, 'r') as f: return f.read() 実行結果は下記です。 これを応用して、望みのプログラムを作ろうと思います。

GUIの進歩

イメージ
 今日、すごい進歩したので動画ではります。

Python: 1D 2D データを格納したリスト(stack)を作る

Untitled Making a stack of 2D and 1D data ¶ In [51]: import numpy as np In [52]: a1 = np . ones ( 6 ) . reshape ( 2 , 3 ) a2 = a1 * 2 make a stack of two images ¶ In [53]: mat1 = np . stack ([ a1 , a2 ]) add an image to the stack of two images ¶ In [54]: mat1 = np . vstack ([ mat1 , [ a1 ]]) In [55]: mat1 Out[55]: array([[[1., 1., 1.], [1., 1., 1.]], [[2., 2., 2.], [2., 2., 2.]], [[1., 1., 1.], [1., 1., 1.]]]) In [56]: b1 = np . ones ( 6 ) b2 = b1 * 2 b3 = b1 * 3 make a stack of two 1D list ¶ In [57]: mat2 = np . vstack ([ b1 , b2 ]) add a 1D list to the stack of two 1D list ¶ In [58]...