1. HOME
  2. ブログ
  3. IT技術
  4. Pythonを使ってオシロスコープを遠隔操作したり、画面キャプチャをしてみよう
Pythonを使ってオシロスコープを遠隔操作したり、画面キャプチャをしてみよう

Pythonを使ってオシロスコープを遠隔操作したり、画面キャプチャをしてみよう

python でオシロスコープを操作しよう!

オシロスコープなどの計測器は「NI-VISA」という通信規格に対応しています。

NI-VISA を使えば、PC から簡単にオシロスコープを制御したり、データ転送することができます。

今回は「PyVISA」モジュールを使い、オシロスコープを操作する Python プログラムを作ってみましょう!

こちらの記事もオススメ!


準備

PyVISA とは?

「PyVISA」は、NI-VISA を通して、Python コード上で計測器を制御するモジュールです。

【PyVISA 公式サイト】
https://pyvisa.readthedocs.io/en/latest/index.html

おなじみの pip を使えば、簡単にインストールできます。

インストールが必要なもの

  1. Python の開発環境
  2. PyVISA モジュール
  3. NI-VISA

この中で、NI-VISA のインストールには注意が必要です。

公式サイトの最新バージョンでは Full 版しかダウンロードできませんが、バージョンを17.5まで落とせば Runtime 版をダウンロードできます。

最低限 NI-VISA のドライバが使えればいいので、他の機能はインストール不要ということです。

筆者の実行環境

  1. Python(3.6)
  2. Spyder(3.2.6)
  3. PyVISA(1.9.1)
  4. オシロスコープ(Tektronix 社 MSO58 シリーズ)

①PyVISA でオシロスコープのアドレスを取得する

それではさっそく、Python でコードを書いていきましょう!

PC とオシロスコープを接続

まずは、Python を通して PC とオシロスコープを接続する処理を行います。

ResourceManager が、PC と計測器をつなぐクラスです。

このスクリプトを実行する前に、オシロスコープと PC が USB ケーブルで接続されているか確認してください。

オシロスコープのアドレスを取得

実行すると…

このような表示がされます。

この 'USB0::~' がオシロスコープのアドレスで、この値を使うことで通信の確立を行います。

※接続した USB の端子の箇所によっては、USB1 や USB2 となったりもします。

②オシロスコープと接続し、遠隔操作する

オシロスコープのアドレスが分かったら、次は接続です。

さっき取得したアドレスを、括弧内に入力することを忘れずに!

実行し、下記のようなコードが表示されれば接続成功です。

接続されているオシロスコープの情報が表示されていますね(__はシリアル番号の略です)。

この .query は、オシロスコープに NI-VISA コマンドを送信し、戻り値を要求しています。

NI-VISA のコマンドに「?」が付いているのも、戻り値を要求するコマンドだからです。

接続に失敗した場合

万が一接続に失敗すると、このような表示がされます。

こんな時には、下記の方法を試してみてください。

  1. rm.close()で ResourceManager のクローズ処理を実行
  2. USB ケーブルを再接続
  3. オシロスコープを再起動

オシロスコープを遠隔操作してみよう

接続に成功したら、下記のコマンドを実行してみましょう。

オシロスコープの測定が停止したことが分かります。

次は、下記のコマンドです。

今度は逆に、オシロスコープの測定が再開します。

これで、PC 上からオシロスコープの測定開始・停止ができるようになりました。

PyVISA は命令するだけ

PyVISA で行っていることは、 .write のコマンドで()内の NI-VISA コマンドをオシロスコープに命令するだけです。

.query と異なり、戻り値を要求せず、命令を実行するだけなので、NI-VISA のコマンドにも「?」は付いていません。

③オシロスコープの画面をキャプチャして、PC に送信

次に、測定停止中のオシロスコープの画面をキャプチャして、PC に送信するコードを書いてみましょう。

上記コードの原理を説明すると、こんな感じです。

  1. 画面キャプチャをしたら、オシロスコープの内蔵ハードディスクに「Temp.png」として保存するよう命令
  2. コマンド OPC.queryで送信し続け、1が返ってくるまで Wait
  3. オシロスコープの内蔵ハードディスクから、PC へ画像ファイルを転送

処理が全て終わったら、オシロスコープとの接続をクローズすることを忘れずに!

応用例:タイマー制御の自動キャプチャ

最後に、ひとつ応用例をご紹介します!

「Python のタイマー制御により、自動でオシロスコープの RUN/STOP と画面キャプチャを行う」というものです。

オシロスコープに一切触れることなく、数秒単位で波形画面を次々に取得できますよ。

繰り返しの回数や時間間隔は、使いやすいようにカスタマイズしてください。

さいごに

Python の良いところは、デバッガなしでも、コードの途中で処理が実行できるところだと思います。

特に NI-VISA コマンドは使ってみないとわからないものも多いので、Python との相性は良さそうですね。

次回は「オシロスコープの波形データを自動転送」する方法をご紹介します。

お楽しみに!

次回の記事はこちら!

記事を書いた人

\ 3度のメシより技術が好き /
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
システム開発依頼・お見積もりはこちらまでお願いします。
また、WEB・スマホ系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!


ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事

初心者が3ヶ月でどれくらいプログラミングができるようになるのか

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア

初心者が3ヶ月でどれくらいプログラミングができるようになるのか

初心者が3ヶ月でどれくらいプログラミングができるようになるのか