タグ「器具の製作」を含む投稿[71件](5ページ目)
「ftd2xx.py」ですが、Open DMX USB を認識しました。
テストで使ったのは次のコード
### ftd2xx test ###
import ftd2xx as ftd
if __name__ == '__main__' :
try :
d = ftd.open( 0 ) # Open first FTDI device
d.setDataCharacteristics
print( d.getDeviceInfo( ) )
d.close( )
except :
print( 'No Device' )
exit( )
### 実行結果 ###
{'type': 5, 'id': 67330049, 'description': b'FT232R USB UART', 'serial': b'B000T33S'}
実行結果は期待値を得ています。「ftd2xx.dll」を通じて FT232RL とやり取りが出来ていると思われますので、Open DMX USB として動かせそうな気がします。
今後は「ftd2xx.dll」の解説書とソースコード読みながら解明していきましょう。
#器具の製作 #Python
テストで使ったのは次のコード
### ftd2xx test ###
import ftd2xx as ftd
if __name__ == '__main__' :
try :
d = ftd.open( 0 ) # Open first FTDI device
d.setDataCharacteristics
print( d.getDeviceInfo( ) )
d.close( )
except :
print( 'No Device' )
exit( )
### 実行結果 ###
{'type': 5, 'id': 67330049, 'description': b'FT232R USB UART', 'serial': b'B000T33S'}
実行結果は期待値を得ています。「ftd2xx.dll」を通じて FT232RL とやり取りが出来ていると思われますので、Open DMX USB として動かせそうな気がします。
今後は「ftd2xx.dll」の解説書とソースコード読みながら解明していきましょう。
#器具の製作 #Python
以下を参考に少し試してみました。
「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 #器具の製作
「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 #器具の製作
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 モジュールを作れたらいいのかな?
#器具の製作
しかし、先日調べたネタではデバイスの認識すらしません。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 モジュールを作れたらいいのかな?
#器具の製作
「Open DMX USB」をオリジナルのアプリで使うことを考えていきますと「DoctorMX」も使えたらなと思ってしまいます。
開発・販売元のクワテックさんでは DoctorMX を使うためのライブラリとサンプルコードを公開してくださってます。C/C++ 向けですが、サンプルコードは私でも読めるので扱えるかもしれません(その昔は全く理解出来ませんでした。ちょっと感動。)。
小屋卓のPC版を作るかはともかく、DoctorMX と Open DMX USB の扱い方を習得しておくのはいいかもしれません。
2023年9月現在、クワテックさんから DoctorMX の Python ライブラリの提供はありません。リクエストしたら作ってくれそうな気もしますが、まずは自力で解決を目指しましょう。工夫や努力もせずに安易なリクエストをされるのは私も嫌ですしね。
「PythonからC言語の関数を呼び出す(基本編)」
追記
上記がコンパイル出来るか試みましたがエラーを吐いて終わらない。
「error: Unable to find vcvarsall.bat」とのこと。
なんじゃこりゃ!?
環境は VSCode の上で gcc です。
日本語サイトには直球な解決策は見つかりませんでしたが、某英語サイトに「Microsoft Visual C++ Build Tools」を入れたら解決するとの書き込み。
Microsoft Visual C++ ビルド ツールをインストールする
システムに Microsoft Visual C++ がインストールされていない場合、または古いバージョンがインストールされている場合は、Microsoft Visual C++ Build Tools をダウンロードしてインストールできます。Microsoft Visual C++ Build Tools には、Windows 上で C++ コードをビルドするために必要な環境変数とツールが含まれています。
Microsoft Visual C++ Build Tools をインストールする手順は次のとおりです。
1:Visual Studio Build Tools Web サイトに移動します。
2:インストーラーをダウンロードして実行します。
3:「C++ ビルド ツール」ワークロードを選択します。
4:「インストール」をクリックします。
開演時間になったのでお試しはお預けですが、2時間ほど悩んでいたので期待感大。
#Python #器具の製作
開発・販売元のクワテックさんでは DoctorMX を使うためのライブラリとサンプルコードを公開してくださってます。C/C++ 向けですが、サンプルコードは私でも読めるので扱えるかもしれません(その昔は全く理解出来ませんでした。ちょっと感動。)。
小屋卓のPC版を作るかはともかく、DoctorMX と Open DMX USB の扱い方を習得しておくのはいいかもしれません。
2023年9月現在、クワテックさんから DoctorMX の Python ライブラリの提供はありません。リクエストしたら作ってくれそうな気もしますが、まずは自力で解決を目指しましょう。工夫や努力もせずに安易なリクエストをされるのは私も嫌ですしね。
「PythonからC言語の関数を呼び出す(基本編)」
追記
上記がコンパイル出来るか試みましたがエラーを吐いて終わらない。
「error: Unable to find vcvarsall.bat」とのこと。
なんじゃこりゃ!?
環境は VSCode の上で gcc です。
日本語サイトには直球な解決策は見つかりませんでしたが、某英語サイトに「Microsoft Visual C++ Build Tools」を入れたら解決するとの書き込み。
Microsoft Visual C++ ビルド ツールをインストールする
システムに Microsoft Visual C++ がインストールされていない場合、または古いバージョンがインストールされている場合は、Microsoft Visual C++ Build Tools をダウンロードしてインストールできます。Microsoft Visual C++ Build Tools には、Windows 上で C++ コードをビルドするために必要な環境変数とツールが含まれています。
Microsoft Visual C++ Build Tools をインストールする手順は次のとおりです。
1:Visual Studio Build Tools Web サイトに移動します。
2:インストーラーをダウンロードして実行します。
3:「C++ ビルド ツール」ワークロードを選択します。
4:「インストール」をクリックします。
開演時間になったのでお試しはお預けですが、2時間ほど悩んでいたので期待感大。
#Python #器具の製作
FT232RLで一般的なシリアル通信以外のことをするにはドライバを直接叩かないといけないらしい。250kbps 送信と長い長い BreakTime を生成するには OS のシリアルを叩いても不可能ですからね。
FT232RL のメーカーである FTDI のサイトに D2XX Programmer’s Guide がありました。これが理解出来ればいいのでしょうが全く理解出来ません。
Open DMX USB の Python ライブラリが落ちていました。これなら理解できます。
「PyFtdi」
次の使用例はとてもわかりやすい。
「jlbrogdon/dmx_controller」
細かい例外対策まで仕上げるには PyFtdi の API documentation を熟読しなければなりませんが、本丸が見えればナンとかなりそうな気分になります。
PyFtdi の世代の問題なのか、少し手直しをしないとエラーになります。
・・・注意:READMEを読み返したらコレは RaspberryPi 向けに書いたモノだとか。動かなくても不思議はありません。
Open DMX USB の回路図はこちらがわかりやすい。
「菅工房 Open DMX USB」
汎用の FT232RL 基板を使うならここが参考になります。
「Open DMX USB コントローラによる DMX512制御」
汎用の FT232RL にほんの少し設定を加えるだけで Open DMX UASB として使えます。FT232RL の電気特性は UART なので RS485 に変換する必要はあります。
忘れちゃいけない本家。
「ENTTEC Open DMX USB」
「D2XX Programmer's Guide」
習作ですので急ぐつもりはありませんしアイデアだけで終わるかもしれませんが、Open DMX USB を扱えたら応用の幅がありそうな予感はあります。テンキーでガツガツ打てて、MIDI でクロスフェーダーやサブマスターまで組めたらいいかなと。
ホール卓のPC版ってのもネタとして面白いかも。「KOYATAKU」とでも名付けます?。ホール卓の基本構成をパソコンで構成してフリーウェアにしたらメーカーさんに嫌がられるでしょうけど、10年間違いなく動くのがメーカーさんのクウォリティであって、ここを真似するのは絶対不可能な領域です。
#器具の製作
FT232RL のメーカーである FTDI のサイトに D2XX Programmer’s Guide がありました。これが理解出来ればいいのでしょうが全く理解出来ません。
Open DMX USB の Python ライブラリが落ちていました。これなら理解できます。
「PyFtdi」
次の使用例はとてもわかりやすい。
「jlbrogdon/dmx_controller」
細かい例外対策まで仕上げるには PyFtdi の API documentation を熟読しなければなりませんが、本丸が見えればナンとかなりそうな気分になります。
PyFtdi の世代の問題なのか、少し手直しをしないとエラーになります。
・・・注意:READMEを読み返したらコレは RaspberryPi 向けに書いたモノだとか。動かなくても不思議はありません。
Open DMX USB の回路図はこちらがわかりやすい。
「菅工房 Open DMX USB」
汎用の FT232RL 基板を使うならここが参考になります。
「Open DMX USB コントローラによる DMX512制御」
汎用の FT232RL にほんの少し設定を加えるだけで Open DMX UASB として使えます。FT232RL の電気特性は UART なので RS485 に変換する必要はあります。
忘れちゃいけない本家。
「ENTTEC Open DMX USB」
「D2XX Programmer's Guide」
習作ですので急ぐつもりはありませんしアイデアだけで終わるかもしれませんが、Open DMX USB を扱えたら応用の幅がありそうな予感はあります。テンキーでガツガツ打てて、MIDI でクロスフェーダーやサブマスターまで組めたらいいかなと。
ホール卓のPC版ってのもネタとして面白いかも。「KOYATAKU」とでも名付けます?。ホール卓の基本構成をパソコンで構成してフリーウェアにしたらメーカーさんに嫌がられるでしょうけど、10年間違いなく動くのがメーカーさんのクウォリティであって、ここを真似するのは絶対不可能な領域です。
#器具の製作
「Open DMX USB」について考えていたのは移動中アタマが空いていたからです。
学園祭への機材レンタルで搬送をしていたのですが、片道1時間半くらいかかるので考え事をするには丁度良い時間でした。
そんな中で Art-Net Patch も思い出す。余りに難しく、数日アタマを全振りしないと進められないネタのために止まっています。
ミキサー(マージ)、プリディレイ(入力に施す)、プリプロファイルカーブ、パッチ、ポストプロファイルカーブ、ポストディレイ(出力に施す)が主な機能ですが、これらの処理(エフェクターと呼称)は参照して計算、参照して計算、参照して計算をひたすら繰り返します。一つ一つはとても簡単な処理ですが、タイミング良く群のデータを短時間で処理しないといけないので構成が難しく、僅かな無駄が後からボディブローの様に効いてきます。
年齢が年齢なので経験量に対し学習量が少ないなぁ~と思いつつも、オブジェクト指向やマルチスレッドなどが普通に使える様になってきますと今までと違った構成がアタマに浮かんできます。全体を一度に見ると難しい処理ですが、構成を分解・整理すれば分割したライブラリとして進められるんじゃないかと。
厄介なのはミキサーとディレイですが、これらを実現するには最大遅延時間分の過去を送信元分保存しておく必要があります。このデータ構成を良く考え、エフェクターの出入りを一般化して進めれば機能単位での製作が可能になりそうな気がします。
目的に対しその環境や言語をどう使えばいいか具体的な見込みを付けてからデータ構造と処理アルゴリズムの本構成を考えることが大切だと思う今日この頃。
開発のプロからしたら当たり前過ぎることなんでしょうけど。
#[Art-Net] #C言語 #器具の製作
学園祭への機材レンタルで搬送をしていたのですが、片道1時間半くらいかかるので考え事をするには丁度良い時間でした。
そんな中で Art-Net Patch も思い出す。余りに難しく、数日アタマを全振りしないと進められないネタのために止まっています。
ミキサー(マージ)、プリディレイ(入力に施す)、プリプロファイルカーブ、パッチ、ポストプロファイルカーブ、ポストディレイ(出力に施す)が主な機能ですが、これらの処理(エフェクターと呼称)は参照して計算、参照して計算、参照して計算をひたすら繰り返します。一つ一つはとても簡単な処理ですが、タイミング良く群のデータを短時間で処理しないといけないので構成が難しく、僅かな無駄が後からボディブローの様に効いてきます。
年齢が年齢なので経験量に対し学習量が少ないなぁ~と思いつつも、オブジェクト指向やマルチスレッドなどが普通に使える様になってきますと今までと違った構成がアタマに浮かんできます。全体を一度に見ると難しい処理ですが、構成を分解・整理すれば分割したライブラリとして進められるんじゃないかと。
厄介なのはミキサーとディレイですが、これらを実現するには最大遅延時間分の過去を送信元分保存しておく必要があります。このデータ構成を良く考え、エフェクターの出入りを一般化して進めれば機能単位での製作が可能になりそうな気がします。
目的に対しその環境や言語をどう使えばいいか具体的な見込みを付けてからデータ構造と処理アルゴリズムの本構成を考えることが大切だと思う今日この頃。
開発のプロからしたら当たり前過ぎることなんでしょうけど。
#[Art-Net] #C言語 #器具の製作
LTC Generator のファームウェアもボチボチ製作開始です。初期設定から整理を始めています。
まずはPICとプリアンプの確認を兼ねてパルス出力のテストプログラムからでしょうか。これが思惑通りにならないと何も始まりません。
30fps向けの2,400bpsと25fps向けの2,000bpsです。実際は倍の4,800Hzと4,000Hzのパルス生成です。
生成にはTMR1をコンペアモードで使います。
TMR1はタイマと呼ばれるもので、CPUクロックなどをキーにした自動カウンターです。時間の計測に使えます。
コンペアとはタイマが指定の値になったらタイマの値を初期化しつつフラグを立てる機能です。一定の周期を得られます。
周期を動的に調整して1時間あたりの総カウント数を出来るだけ正確にしようというのが今回の肝です。
#PIC #器具の製作 #タイムコード
まずはPICとプリアンプの確認を兼ねてパルス出力のテストプログラムからでしょうか。これが思惑通りにならないと何も始まりません。
30fps向けの2,400bpsと25fps向けの2,000bpsです。実際は倍の4,800Hzと4,000Hzのパルス生成です。
生成にはTMR1をコンペアモードで使います。
TMR1はタイマと呼ばれるもので、CPUクロックなどをキーにした自動カウンターです。時間の計測に使えます。
コンペアとはタイマが指定の値になったらタイマの値を初期化しつつフラグを立てる機能です。一定の周期を得られます。
周期を動的に調整して1時間あたりの総カウント数を出来るだけ正確にしようというのが今回の肝です。
#PIC #器具の製作 #タイムコード
LTC Generator の基板をハンダ付け。
表面実装部品の取り付けはオーブントースターを用いたリフローです。手順が決まれば簡単です。
リフローに関する過去記事
当たり前ですが、KiCADで描いた3D図のままです。
Windows11がCOMとして認識しましたので、Pythonでシリアル通信が出来るハズです。
この後はPICのファームウェアを書きます。MPLABX-IDEも使えるようにしましたので地道に書いていきます。
基板に書いた抵抗値が一部間違ってました。
データは修正しましたが、次の製作では注意が必要です。
#電子工作 #器具の製作 #タイムコード
表面実装部品の取り付けはオーブントースターを用いたリフローです。手順が決まれば簡単です。
リフローに関する過去記事
当たり前ですが、KiCADで描いた3D図のままです。
Windows11がCOMとして認識しましたので、Pythonでシリアル通信が出来るハズです。
この後はPICのファームウェアを書きます。MPLABX-IDEも使えるようにしましたので地道に書いていきます。
基板に書いた抵抗値が一部間違ってました。
データは修正しましたが、次の製作では注意が必要です。
#電子工作 #器具の製作 #タイムコード