全年全月16日の投稿[40件]
2024年4月 この範囲を時系列順で読む この範囲をファイルに出力する
Windows10以前のパソコンにWindows11 をインストールするには条件があります。適合しないパソコンにはインストール出来ません。
・・・ってのがデフォですが、64bitOSが走るならインストール出来ます。
インストールUSBを作りますと中に「\sources\appraiserres.dll」ってのがあります。以前ならこのファイルを削除することでインストール出来たのですが、今はそれが無理みたい。ですが、Windows10のインストールUSBにある同名のファイルに入れ替えるとインストールが出来るようです。
#パソコン
・・・ってのがデフォですが、64bitOSが走るならインストール出来ます。
インストールUSBを作りますと中に「\sources\appraiserres.dll」ってのがあります。以前ならこのファイルを削除することでインストール出来たのですが、今はそれが無理みたい。ですが、Windows10のインストールUSBにある同名のファイルに入れ替えるとインストールが出来るようです。
#パソコン
2024年3月 この範囲を時系列順で読む この範囲をファイルに出力する
ホール管理の増員で置きダヌキ。
こういう時はArt-Netパッチの設計を進めるのがいい。いつでも作業を切れるって意味でも不便がありません。
構造においてはマルチプロセス化することがとても重要です。RasperryPi4Bは4コアありますが手続き型処理はもちろんマルチスレッドでも1コア動作が原則。Art-Netの入力、パッチ処理、出力、フロントエンドの処理を同時並行で行いたいのですが、複数のコアで動くかはOS次第とはいえプロセスを分散しておけば1コアだけに負担がかかることは無くなるので良いかなと思うのです。
現在の研究課題はプロセス間通信です。例え一つのアプリケーション内でもプロセスを分けてしまうと同じ変数を触ることが出来ません。これを解消するのがプロセス間通信で、SharedMemory、Pipe、Queueなどの手法があります。それぞれに得手不得手があり、扱いが楽な手法は受け渡しが遅く、受け渡しが速い手法は扱いが難しい傾向があります。このどれを使うかで処理構造が違ってくるので、全体の設計を進める上ではどの手法で繋げるかを予め決めておかないと後が面倒なようです。
注意する点は読み書きのタイミングとデータ枠が可変するかどうかです。勉強中なので説明するのは難しいのですが、この辺りを十分に整理して手段を吟味しているところです。
#C言語 #[Art-Net]
こういう時はArt-Netパッチの設計を進めるのがいい。いつでも作業を切れるって意味でも不便がありません。
構造においてはマルチプロセス化することがとても重要です。RasperryPi4Bは4コアありますが手続き型処理はもちろんマルチスレッドでも1コア動作が原則。Art-Netの入力、パッチ処理、出力、フロントエンドの処理を同時並行で行いたいのですが、複数のコアで動くかはOS次第とはいえプロセスを分散しておけば1コアだけに負担がかかることは無くなるので良いかなと思うのです。
現在の研究課題はプロセス間通信です。例え一つのアプリケーション内でもプロセスを分けてしまうと同じ変数を触ることが出来ません。これを解消するのがプロセス間通信で、SharedMemory、Pipe、Queueなどの手法があります。それぞれに得手不得手があり、扱いが楽な手法は受け渡しが遅く、受け渡しが速い手法は扱いが難しい傾向があります。このどれを使うかで処理構造が違ってくるので、全体の設計を進める上ではどの手法で繋げるかを予め決めておかないと後が面倒なようです。
注意する点は読み書きのタイミングとデータ枠が可変するかどうかです。勉強中なので説明するのは難しいのですが、この辺りを十分に整理して手段を吟味しているところです。
#C言語 #[Art-Net]
2024年2月 この範囲を時系列順で読む この範囲をファイルに出力する
寝床というか2x4材の接合部で使う丸ナットが完成しました。
3Dプリンタで肉厚にプリントしたD断面の丸棒の横っ腹にステンレスのM8インサートを入れています。インサートナットの外ネジは細ピッチM10ですのでタップを切って捻じ込んでエポキシ接着剤で固定しています。
本業の合間に穴空け治具も進めています。
この方式で十分な強度が出れば2x4材の用途が広がる気がします。
#ガチ工作
3Dプリンタで肉厚にプリントしたD断面の丸棒の横っ腹にステンレスのM8インサートを入れています。インサートナットの外ネジは細ピッチM10ですのでタップを切って捻じ込んでエポキシ接着剤で固定しています。
本業の合間に穴空け治具も進めています。
この方式で十分な強度が出れば2x4材の用途が広がる気がします。
#ガチ工作
PegasysG10 のリペアを進めていますが現場や他の製作物もあるので牛歩状態です。10台終わりましたが、全48台なのでまだまだです。
それにしても飽きてきました。手順がまとまったので新鮮味がありません。モノ造りは好きですが、生産ではなく開発が好きなんですよね。
そんな心持ちで進めているところ、筐体の貼り合わせ部の防水がゴムパッキンではなくコーキングガチガチのに遭遇。1日に2台しか出来ないのがコレでして、マイナスドライバを加工した専用のノミとワイヤブラシでひたすら落としていきますが、コーキングを取り去るのにとても時間がかかるので心が折れます。
#器具の修理
それにしても飽きてきました。手順がまとまったので新鮮味がありません。モノ造りは好きですが、生産ではなく開発が好きなんですよね。
そんな心持ちで進めているところ、筐体の貼り合わせ部の防水がゴムパッキンではなくコーキングガチガチのに遭遇。1日に2台しか出来ないのがコレでして、マイナスドライバを加工した専用のノミとワイヤブラシでひたすら落としていきますが、コーキングを取り去るのにとても時間がかかるので心が折れます。
#器具の修理
2024年1月 この範囲を時系列順で読む この範囲をファイルに出力する
本業はオフで自宅の工作部屋の片付けです。足の踏み場がギリギリの部屋です。
出て来る出て来る行方不明だった部品たち、こんなに買ったのかと呆れる部品たち(^へ^;
発掘された部品を出来るだけ丁寧に分類・再梱包して収納します。
あとは、今後参考にすることは無いであろうWindowsXP時代のプログラミングマニュアルたち。
今となってはWindowsAPIを直に触ることはありませんし、VisualBasicなど書くことはありません。そんな本が20冊以上ありますのでこれも処分です。
#雑記
出て来る出て来る行方不明だった部品たち、こんなに買ったのかと呆れる部品たち(^へ^;
発掘された部品を出来るだけ丁寧に分類・再梱包して収納します。
あとは、今後参考にすることは無いであろうWindowsXP時代のプログラミングマニュアルたち。
今となってはWindowsAPIを直に触ることはありませんし、VisualBasicなど書くことはありません。そんな本が20冊以上ありますのでこれも処分です。
#雑記
2023年12月 この範囲を時系列順で読む この範囲をファイルに出力する
JANDS ESPⅡ 24ch が手元にあります。
シンプルで芸はありませんが、ちょっとした現場には便利な調光卓です。ただ齢30歳ともなりますと物理的に寿命です。フェーダーのスライドボリュームにガリが出てるのはもちろんですが、プリント基板の銅箔が腐食して断線しているところもあります。
不調のためここ数年使っていませんでしたが、苦楽を共にしてきた相棒ですので捨てるのは忍びなく修理というかリビルドしてあげようかなと思い始めました。
メイン基板には痛みはありませんので、主にフェーダー基板の再生です。使われている日本抵抗器製のスライドボリュームは随分前に廃番になっていますし、基板もやられているので、入手可能なスライドボリュームを使ったフェーダー基板を丸々新造するのが現実的な対策です。
問題は費用です。pcbgogoさんで見積もったら400x400mm(仮のサイズ)の両面基板が1枚52USDくらい。スライドボリュームは千石電商さんで580円くらいだけど、中華電機なら60円くらい。手間はともかく案外安く済みそう。
最近は一般照明卓の選択肢が少なくなり、手に入っても機械的に廉価な物ばかりなので、JANDS ESPⅡ が10万以下で復活するならアリですね。
#器具の修理
シンプルで芸はありませんが、ちょっとした現場には便利な調光卓です。ただ齢30歳ともなりますと物理的に寿命です。フェーダーのスライドボリュームにガリが出てるのはもちろんですが、プリント基板の銅箔が腐食して断線しているところもあります。
不調のためここ数年使っていませんでしたが、苦楽を共にしてきた相棒ですので捨てるのは忍びなく修理というかリビルドしてあげようかなと思い始めました。
メイン基板には痛みはありませんので、主にフェーダー基板の再生です。使われている日本抵抗器製のスライドボリュームは随分前に廃番になっていますし、基板もやられているので、入手可能なスライドボリュームを使ったフェーダー基板を丸々新造するのが現実的な対策です。
問題は費用です。pcbgogoさんで見積もったら400x400mm(仮のサイズ)の両面基板が1枚52USDくらい。スライドボリュームは千石電商さんで580円くらいだけど、中華電機なら60円くらい。手間はともかく案外安く済みそう。
最近は一般照明卓の選択肢が少なくなり、手に入っても機械的に廉価な物ばかりなので、JANDS ESPⅡ が10万以下で復活するならアリですね。
#器具の修理
2023年11月 この範囲を時系列順で読む この範囲をファイルに出力する
2023年9月 この範囲を時系列順で読む この範囲をファイルに出力する
共有メモリを使う場合、読み書きが衝突しないように配慮しなければなりません。
今回は情報が一方向ですから比較的簡単ですが、よく考えないとトラブルのもとです。
一番簡単なのは、DMX512 の値の配列の共有メモリと読み書きフラグの共有メモリを使う方法です。読み書きフラグは送り側がセットし受け側がクリアします。送り側はフラグがクリアならば共有メモリに書き込んでフラグをセットし、受け側はフラグがセットしてあれば共有メモリから読み込んでフラグをクリアします。
双方の待ちを考慮しないとといけませんが、送り側が受け側のフェーズ時間の数倍でチェックをすれば遅延は1フレームです。何よりも Queue に比べ処理時間が短く情報の渋滞も起き難いことを優先しましょう。
#Python #器具の製作
今回は情報が一方向ですから比較的簡単ですが、よく考えないとトラブルのもとです。
一番簡単なのは、DMX512 の値の配列の共有メモリと読み書きフラグの共有メモリを使う方法です。読み書きフラグは送り側がセットし受け側がクリアします。送り側はフラグがクリアならば共有メモリに書き込んでフラグをセットし、受け側はフラグがセットしてあれば共有メモリから読み込んでフラグをクリアします。
双方の待ちを考慮しないとといけませんが、送り側が受け側のフェーズ時間の数倍でチェックをすれば遅延は1フレームです。何よりも Queue に比べ処理時間が短く情報の渋滞も起き難いことを優先しましょう。
#Python #器具の製作
Python での Open DMX USB の制御は8時間経過でも正常に動いている様子。
不定期に一瞬の不整合が起きているとしても確認の方法がありません。とりあえずこんなもんでいいのかな?
この後は Class 化と Thread 化をします。Thread 間通信は Queue ではなく 共有メモリを使いましょう。共有メモリは Tuple を FIFO で使うような便利なことは出来ませんが、今回は数値の配列を一方向で渡すだけですので、速度が期待できる共有メモリがいいでしょう。
下記は Thread ではなく Prosess の例題ですが、共有メモリのさわりが分かりやすい。
「Pythonでプロセス間の値の共有」
#Python #器具の製作
不定期に一瞬の不整合が起きているとしても確認の方法がありません。とりあえずこんなもんでいいのかな?
この後は Class 化と Thread 化をします。Thread 間通信は Queue ではなく 共有メモリを使いましょう。共有メモリは Tuple を FIFO で使うような便利なことは出来ませんが、今回は数値の配列を一方向で渡すだけですので、速度が期待できる共有メモリがいいでしょう。
下記は Thread ではなく Prosess の例題ですが、共有メモリのさわりが分かりやすい。
「Pythonでプロセス間の値の共有」
#Python #器具の製作
Python で Open DMX USB を動かすことに成功しました。
setbreakon と setbreakoff の挙動は予想の通りでした。
以下がテストソースです。
slot1 と slot512 を 0 から255 までカウントして終了します。
### Open DMX USB test ###
import ftd2xx as ftd
import time
if __name__ == '__main__' :
baudrate = 250000
word_length = 8
stop_bit = 2
parity = 0
purge_tx = 2
try :
d = ftd.open( 0 ) # Open first FTDI device
d.setBaudRate( baudrate )
d.setDataCharacteristics( word_length, stop_bit, parity )
d.purge( purge_tx )
channelVals = bytearray( [ 0 ] * 513 )
channelVals[ 0 ] = 0 # start code
for i in range( 256 ) :
try :
channelVals[ 1 ] = i
channelVals[ 512 ] = i
channelbytes = bytes( channelVals )
# Send Slot
cstart = time.perf_counter_ns( )
d.write( channelbytes )
while time.perf_counter_ns( ) - cstart < 22800000 :
pass
# Break Time
d.setBreakOn( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 192000 :
pass
# Mark After Break
d.setBreakOff( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 12000 :
pass
# Press Ctl+C to Exit
except KeyboardInterrupt :
break
d.close( )
except :
print( 'No Device' )
time.sleep() は求める精度に足りないので time.perf_counter_ns() を用いています。
0 から 255 のカウントが5.9秒強で終わるので 43fps くらい。ほぼ規格最大値です。
本当にコレでいいのかわからんけど、モヤモヤしてたのがスッキリした。
#Python #器具の製作
setbreakon と setbreakoff の挙動は予想の通りでした。
以下がテストソースです。
slot1 と slot512 を 0 から255 までカウントして終了します。
### Open DMX USB test ###
import ftd2xx as ftd
import time
if __name__ == '__main__' :
baudrate = 250000
word_length = 8
stop_bit = 2
parity = 0
purge_tx = 2
try :
d = ftd.open( 0 ) # Open first FTDI device
d.setBaudRate( baudrate )
d.setDataCharacteristics( word_length, stop_bit, parity )
d.purge( purge_tx )
channelVals = bytearray( [ 0 ] * 513 )
channelVals[ 0 ] = 0 # start code
for i in range( 256 ) :
try :
channelVals[ 1 ] = i
channelVals[ 512 ] = i
channelbytes = bytes( channelVals )
# Send Slot
cstart = time.perf_counter_ns( )
d.write( channelbytes )
while time.perf_counter_ns( ) - cstart < 22800000 :
pass
# Break Time
d.setBreakOn( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 192000 :
pass
# Mark After Break
d.setBreakOff( )
cstart = time.perf_counter_ns( )
while time.perf_counter_ns( ) - cstart < 12000 :
pass
# Press Ctl+C to Exit
except KeyboardInterrupt :
break
d.close( )
except :
print( 'No Device' )
time.sleep() は求める精度に足りないので time.perf_counter_ns() を用いています。
0 から 255 のカウントが5.9秒強で終わるので 43fps くらい。ほぼ規格最大値です。
本当にコレでいいのかわからんけど、モヤモヤしてたのがスッキリした。
#Python #器具の製作