🗐 電装工芸日記 - 舞台照明機器の製作とか -

能登半島地震で被災された方々にお見舞い申し上げます。

or 管理画面へ

全年9月12日の投稿[7件]

2023年 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 以下を参考に少し試してみました。
「Programming FTDI devices in Python: Part 1」

 Open DMX USB や FT232RL が実装されたデバイスが手元にありませんので何ともですが、pip で ftd2xx をインストールするとVSCode ではそれらしい関数の候補が出ます。候補が出るということはアクセスできる可能性が高いという事です。
> pip install ftd2xx
 pywin32 もインストールされます。

 「ftd2xx」のサイト見ますと、「ftd2xx は、ctypes を使用した FTDI の D2XX DLL の単純な Python ラッパーです。」とあります。
 システムコールを直球で使えるってことだと思われます。

「jlbrogdon/dmx_controller」
 ここで使われている関数とは呼び出す文言が違いますが、VSCode で表示される関数の候補にはそれと思われる関数が存在しています。

 明日以降になりますが FT232RL が実装されたデバイスを繋げた状態で色々テストしてみましょう。
 今考えているアイデアでいけるなら Open DMX USB の制御が Python で完結します。

 これはいいかも
「Ftd2xxドライバー説明」
 本家の資料では理解出来なかったことが分かりやすく書いてあります。欲しかった資料そのものです。
「ftd2xx.py」
「xiangruili/RTBox_py」

 これらの資料で行けそうな予感がムクムク。
 ENTTEC 純正の Open DMX USB と DMXチェッカーを事務所に置いてきたことを後悔。
 すでに帰宅して呑んでいるので取りに行けませんので明日以降ですね。

 それにしても、敷居が高いと思っていた DLL をここまで簡単に使えるとは予想外です。
 ドライバに対する DLL があれば、少なくともC/C++なら簡単にアクセスが可能で、それを単純なラッパーにしてしまえば Python からストレスなくアクセス出来てしまうのです。
 この辺りの手段は手にしたいですねぇ~。

#Python #器具の製作
Icon of admin
 Open DMX USB を扱うには FTD2XX.dll をコールするのが肝らしい。
 チンプンカンプンな領域なのでこれから勉強ですが、次のサイトがヒントになりそう。
「PythonからDLLを使う」
「Python から DLL を利用する」
「C++で書いたコードをPythonで動かすには【pybind11】」

 以下も参考になりそう。
「USBを使って制御できるリレーモジュールをpythonで動かしてみる」
「Programming FTDI devices in Python: Part 1」

 上記の記事と以下を合わせるといけるのかな?
「jlbrogdon/dmx_controller」

#Python
Icon of admin
 「PyOpenDmxUsb」の「DMXServer.cs」を読むと「FTD2XX.dll」をコールしているがわかります。
 ならば、C++ 化することは可能っぽいです。先日書き込みした C/C++ による Python ライブラリ化を参考にすれば作れるかも。
 C#のコードを Python ライブラリ化してもいいのでしょうけど。

 ちなみに DoctorMX については C/C++ の世代変わりの壁で対策がわかりません。
 kuwatecさんが公開されているのは VC6 世代のコードようですが、C++はその後の時代に多くの改変がされているらしいのです。

#器具の製作 #C言語 #Python
Icon of admin
 ENTTEC 純正の Open DMX USB を入手しました。
 しかし、先日調べたネタではデバイスの認識すらしません。README.md を読み返したところRaspberryPi用でした。動かなくても仕方ない。

 調べ直したところGitHubに次の様なモノがありました。
「PyOpenDmxUsb」
 README.md を読む限り、Windows 上の Python で Open DMX USB を扱う代物のようです。
 使い方が少し難しいようですが、調べてみる価値はありそうです。

追記
「PyOpenDmxUsb」
 は予想外に簡単でした。
1)pip で pywin32 をインストール
> pip install pywin32
2)GitHub からダウンロードしたファイルを メインの Python ソースがあるフォルダにまとめる。
 ・フォルダ「PyOpenDmxUsb-master」内の「C#」フォルダにある「DMXServer.exe」。
 ・フォルダ「PyOpenDmxUsb-master」内の「Python」フォルダにある「DMXClient.py」。

 あとは、サンプルプログラムを参考にソースを書きます。
from DMXClient import DMXClient
import time

dmxClient = DMXClient("PODU")
dmxClient.connect()

while True :
 for i in range( 256 ) :
  try :
   dmxClient.write([1, i, 2, i])
   time.sleep( 0.1 )
  except KeyboardInterrupt:
   dmxClient.close()
   break
 break

 DMX の アドレス001とアドレス002をカウントしていくだけの動作を確認出来ました。
 コマンドコンソールか PowerShell から DMXServer.exe を起動してから上記の Python コードを実行します。
> .\DMXServer -n PODU
 この後、別コマンドコンソールから Python コードを実行します。

 DMXServer.exe を起動してから本プログラムを実行する手順が少し面倒だし Python らしくない。
 出来ることなら Python モジュールとして import して使えるようにしたいと思います。
 DMXServer.exeのC#ソースが付属しているので、これを参考に Python モジュールを作れたらいいのかな?

#器具の製作

2022年 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 茨城県沖に世界でも屈指の規模の油ガス田がありそうだとのこと。

 地元のこんな話は嬉しいですね。

 程度はともかく、茨城県には日本国内のどこかにある自然、資源、産業、施設が一通りあります。食材も全国No.1の生産量を誇る物が多く、北海道に続いてNo.2も驚く程多い。意外なのは日本酒の生産量が圧倒的なNo.1であること。無いのは活火山とサンゴ礁くらいでしょうか。そこに「原油生産世界一」なんて追加されたら悪い気はしません。
 こんな地の利の割に心意気や地域の歴史や文化に自慢出来るところがありませんので「何でもあるけど何にもない所」と勝手に呼んでいます。魅力度ランキングが物語っているのでこれ以上はいいか(笑

 話を戻しますが、原油をほぼ100%輸入に頼ってきた日本にこんな資源があるとは驚きです。採掘には高度な技術と莫大な投資が必要でしょうが、採算がイマイチでも採れるという事実を構築すべきです。十分に喰って安心して寝られることがより良い生活の基本ですが、ロシアとウクライナの件に影響を受けているヨーロッパ各国の様子を見るなら、資源と農畜水産物を十分に確保することは重要だと思うのです。
 戦争などあってはいけませんが、無いことと足元をみられることがそれを引き起こす原因であることは多いので、社会を維持するのに最低限必要なモノを自国内で確保することは平和を維持するためにも必要なことでしょう。身勝手な欲張りが欲しがらない程度ってのも大事かもしれませんケド。

#雑談
Icon of admin
 とまぁ、バックアップは正常に機能するようになったのですが・・・
 長期間バックアップしていなかったのと、過去10年以上のデータをアーカイブ化して入れ物を変えたので24時間経っても初回動作が終わらない。
 動作チェックには丁度いいっちゃいいのですが、ネット経由なのでまだまだ終わりそうにありません。

#サーバー
Icon of admin
 レゲエのフェスは天候にも恵まれ平穏無事に終わりました。
 本番10時間の2デイスでしたが、交代しながらの本番対応だったので長い休憩がありました。
 クラシックバレエやオペラの現場が控えているのでその準備を進めたかったのですが、超爆音のレゲエを聞きながらクラシック系のことを考えるなんて無理ムリ。
 なので、久しぶりにサーバーのガチメンテをしてました。SSHやVPNで遠隔操作が出来るので場所を選ばず操作出来ます。

 本当に久しぶりのガチメンテでしたが、いろんな問題が出てくる出てくる。
 一番の問題はVPNを介した遠隔ファイルバックアップが止まっていたこと。サーバー間をVPNで繋いでいたのですが、バックアップ側のTLS(認証の暗号化処理)が古くてVPNが接続していなかったのです。つまり、本体のOSをバージョンアップしてから数か月間バックアップが機能していなかったというオチ・・・。バックアップですから本体が堅調なら問題ないのですがコレはよくない。
 ところが、調べてみたらTLSを新しくするにはOSそのものをバージョンアップしないといけないとのこと。遠隔でやるのは怖いけど、主システムとは無関係なサポートサーバーなので落ちてもいいから作業を進める。幸い素直にバージョンアップが済んでVPNも復活しました。debianを使っていますが、バージョンアップはコマンドを3つ走らせるだけなので簡単。ただし、時間がかかるのに途中で質問に答えねばならんので付きっ切りになるのは頂けませんが・・・。

 こんなことがあると欲しくなるのがエラーを知らせてくれる何か。今回の場合は「バックアップに問題あるかもよ!」というシンプルなお知らせ。実行結果を診断して自動的に送信されるメールってことになるでしょうか。
 Linuxは凄いと思ったのがこういった処理。bashと呼ばれるコマンドラインにはメール送信機能が普通にあります。単なるコマンドラインですから、cronで直接実行も可能ですし、cronから呼び出されるスクリプトファイル(古い言い方ですとバッチファイル)に仕込んでおいてもいい。私ごときがやりたいと思うことの大半はbashで出来ちゃうLinux。難しいのは数多ある機能を知ることと使いこなすことでしょうか。

 ちなみにシンプルなテキストメールを送るだけならこんな感じ
$ /bin/echo -e "メッセージ本文" | /usr/bin/mail -s "メールのタイトル" root
 rootってのは固定されたシステム管理者のアカウント名。この場合は宛先になりますが、これだけでは誰にも転送されません。メールデーモンにroot宛のメールを転送する設定をしなければなりませんが、転送すればスマホでも何でも受信出来ます。
 コマンドの間にある"|"はパイプと呼ばれる機能です。上記ではechoで出力された文字列をmailに本文として引き渡すという意味になりますが、シンプルながら応用の幅が無限大なこんな機能を考えた人は天才。
 さらにです、バッククウォート(日本語キーボードならシフトキーを押しながら[@]キーで出るチョン)で囲めばコマンドの返り値をメール本文にも出来るそうな。
$ /bin/echo -e `/bin/date` | /usr/bin/mail -s "日時" root
 これはdateという現在日時を表示するコマンドの結果をメールするだけですが、固定されたテキストもコマンドを実行した結果も区別無く扱えるということです。
 bashでのテキストの扱いには正規表現に代表される難解さがありますが、パイプと合わせてこの辺りを覚えたら驚くほど色んなことが出来ます。

 [コマンドを実行] → [その結果を判別] → [管理者へメッセージを送信]
 こんなことが特別なアプリを使うことなくコマンドラインの組み合わせで出来てしまうのです。シンプルなモノをシンプルな方法で組み合わせて無限の可能性を産むと言ったら言い過ぎでしょうか。
 コンピュータを扱うことにかけては神レベルの天才達が作ったとはいえ、LinuxというかUNIXは本当にスゲー。

#サーバー

■当面の課題

花粉症シーズンも一段落したようで重傷者にも笑顔が戻ってきました。私は原始人なので花粉が酷い日でも鼻の中が埃っぽいなぁくらいにしか感じませんけど。
気温の変化が激しいようですので、みなさま健康管理には注意してください。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2023年9月
12
3456789
10111213141516
17181920212223
24252627282930

■カテゴリ:

■最近の投稿:

最終更新日時:
2024年5月14日(火) 13時53分53秒