ADALM2000をWindows10 WSL上のPythonからコントロールする

Windows10からADALM2000をコントロールするには管理者権限が必要だったりPythonのバージョンの制限があったり少々不便(以前の記事)。一方で、ADALM2000にはネットワークインタフェースが備わっており、ネットワークごしにアクセスすることによって、WSL上のLinuxの一般ユーザ権限でPythonプログラムからADALM2000をコントロール出来る。

スポンサーリンク

WSL上のUbuntu18.04へlibm2kをインストール

WSL上のUbuntu18.04にlibm2kをインストール。スタンドアロンのUbuntu18.04への方法と全く同じだが、再掲しておく。

  1. まずはビルド用ツールをシステムにインストール。
$ sudo apt-get install git cmake swig g++ python3-dev python3-setuptools
  1. libiioのインストール。libiioとはAnalog Devices社が開発したLinux用のI/Oインタフェースとのこと。
$ wget http://swdownloads.analog.com/cse/travis_builds/master_latest_libiio-ubuntu-18.04-amd64.deb
$ sudo dpkg -i master_latest_libiio-ubuntu-18.04-amd64.deb 
  1. libm2kのビルドとインストール
$ git clone https://github.com/analogdevicesinc/libm2k.git
$ cd libm2k
$ mkdir build
$ cd build
$ cmake -DENABLE_EXCEPTIONS=TRUE ../
$ make
$ sudo make install

ADALM2000ネットワークインタフェースの確認

ADALM2000をWindows10マシンにUSB接続すると、USBマスストレージデバイスとしてm2kという名前のドライブがマウントされる。このドライブのconfig.txtやinfo.htmlを開くとネットワーク設定など各種情報が確認出来る。

config.txtをメモ帳などで開いてネットワーク設定を確認。

[NETWORK]
hostname = m2k
ipaddr = 192.168.2.1
ipaddr_host = 192.168.2.10

192.168.2.1がADALM2000のIPアドレス、192.168.2.10がWindows10側の仮想インタフェースのIPアドレスだ。

WSLの中からpingを実行すると、応答が返ってくる。

$ ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=0.535 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=0.596 ms
^C
--- 192.168.2.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.535/0.565/0.596/0.038 ms

WSLからADALM2000をコントロールするためのPythonコード

デバイスをオープン時、libm2kのm2kOpenメソッドの引数にIPアドレスを渡せば良い。
デバイスをオープン以降のctxオブジェクトへの操作は全く同じでOK。

USB直接接続

import libm2k

ctx=libm2k.m2kOpen()

WSLから接続(ネットワークデバイス経由)

import libm2k

uri = "ip:192.168.2.1"
ctx=libm2k.m2kOpen(uri)

まとめ

Windows10ネイティブのPythonからADALM2000にアクセスしようとする場合、管理者権限が必要だったり、Pythonのバージョンをインタフェースライブラリlibm2kが対応する物と厳密に合わせないといけなかったりと、結構面倒臭い。

個人的に普段からWindows10でPythonのプログラミング作業する時はWSL上で行っていることもあって、上記方法はとても便利!

コメント