2021年
5月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2021-05-24 測定機器のインターフェース

_ rubyのclassとmodule

自作の装置で測定する場合には、rubyを用いて測定している。PCと機器で通信する場合には、インターフェースとしてGPIBやRS232CやUSBTMCを主に使っているが、これらを切り替える必要がある場合がある。当初は、機器に対してインターフェースを固定して、それ専用のプログラムを書いていたが、インターフェースを変えるために、別のプログラムを作らないといけないので面倒である。

現在ホームページに公開しているversionでは、インターフェースをclassとして定義して、機器はそれらのサブclassとして定義することによって、インターフェースを指定している。インターフェースを切り替えるためには、機器を記述しているプログラムのスーパーclassの部分を書き換えるだけで良い。スーパーclassは後から変えることは出来ないようなので、プログラムの書き換えが必須であった。

新たに装置を立ち上げるにあたって、いろいろと考えていたら、moduleを使えば、インターフェースと装置のプログラムを書き換えずに、測定プログラムからインターフェースを切り替えるという方法を思いついた。つまり、インターフェースはmoduleにして、測定プログラムの中から、機器のclassを再定義してincludeさせるのである。測定プログラムの先頭が少し長くなるが、そこでそれぞれの機器のインターフェースが明示されるのは、良い点とも考えられる。もう少しプログラムが固まってきたら、公開するかも知れません。