!RECONF(3) !LabRAD使ってみる(1) https://github.com/labrad/pylabrad/wiki を参考にするといいらしい まずはScalabrad https://github.com/labrad/scalabrad を 用意 バイナリが https://github.com/labrad/scalabrad/releases/tag/v0.8.3 で公開されている wget -O scalabrad-0.8.3.tar.gz \ https://github.com/labrad/scalabrad/releases/download/v0.8.3/scalabrad-0.8.3.tar.gz tar xvf scalabrad-0.8.3.tar.gz ./scalabrad-0.8.3/bin/labrad これでscalabradが起動する. 別のターミナルでPylabradを動かす. まずは準備. pipenv --python 2.7 pipenv shell pipenv install twisted pipenv install pylabrad pythonインタプリタを起動して, import labrad cxn = labrad.connect('localhost') # ユーザ名とか聞かれるのでエンター これでクライアントが起動した. cxn とすると auth manager registry というサーバーが起動していることが確認できる. cxn['manager']; cxn.manager でmanagerに接続.たとえば,インスタンスの詳細を表示できる. cxn.manager['data_to_string']; cxn.manager.data_to_string でサーバのdata_to_stringが呼べるようになる.たとえば, cxn.manager.data_to_string([(1, 'This'), (2, 'is'), (3, 'a'), (4, 'test.')]) とかするとメソッドを呼び出せる. !LabRAD使ってみる(2) クライアントは https://github.com/labrad/pylabrad/wiki/Writing-clients に サーバは https://github.com/labrad/pylabrad/wiki/Writing-Servers に詳細な説明がある. が,まずは,サンプルとして https://raw.githubusercontent.com/wiki/labrad/pylabrad/squaringserver.py を試してみる. import time from labrad.server import LabradServer, setting class SquaringServer(LabradServer): name = "Squaring Server" @setting(10, data='v[]', returns='v[]') def square(self, c, data): time.sleep(2) return data**2 __server__ = SquaringServer() if __name__ == '__main__': from labrad import util util.runServer(__server__) このスクリプトを,pylabradをセットアップ(pip install)したpipenv環境で実行. python squaringserver.py 2020-01-24 20:07:32+0900 [-] Log opened. みたいな表示が出力されるので,一旦エンターキーを入力すると, Enter LabRAD password (localhost:7682): とパスワードの入力を求められるので,空のままエンター 2020-01-24 20:07:52+0900 [LabradProtocol,client] Squaring Server starting... 2020-01-24 20:07:52+0900 [LabradProtocol,client] Squaring Server now serving とか出てサーバーが起動する. 別のターミナルでサーバにアクセスする. pipenv shell python として,pylabradをセットアップした環境に入ってpythonインタプリタを起動. import labrad cnx = labrad.connect('localhost') # 'localhost'不要という話もあるけどうちの環境では必要だった これで, Enter username, or blank for the global user (localhost:7682): Enter LabRAD password (localhost:7682): と,ユーザ名とパスワード求められるので空のままエンター. これで,squaringserverが待ち受けているLabRADネットワークに接続できる. cnx と入力すると, Available servers: auth manager registry squaring_server と,squaring_serverの存在が確認できる. s = cnx.squaring_server と,squaring_serverのインスタンスへのハンドラを変数に保存して, s.square(2) などと入力してsquaring_serverのメソッドが呼べる. しばらく待つと, 4.0 と結果(二乗した値)がかえってくる. !LabRAD使ってみる(3) Python 3.8でも,同様にして動作することを確認. !LabRAD使ってみる(4) リストをやりとりしたければ, import time from labrad.server import LabradServer, setting class SquaringServer(LabradServer): name = "Squaring Server" @setting(10, "square") def square(self, c, data): time.sleep(2) return [data[0]**2, data[1]**2] __server__ = SquaringServer() if __name__ == '__main__': from labrad import util util.runServer(__server__) とか用意しておいて,クライアントとなる側でインタプリタ起動して, import labrad cnx = labrad.connect('localhost'); cnx s = cnx.squaring_server s.square([2,3]) とすると, array([4, 9], dtype=int32) と返ってくる