2024年11月 この範囲を時系列順で読む この範囲をファイルに出力する
セマフォの使い方が見えたので構造の重要な要素は獲得出来ました。
構成ですが、起動し mmap や pipe を定義し子プロセスの状態を監視する親プロセス「ArtNetPatch」、ユーザーの操作の相手やデータを画面表示をする子プロセス「ArtNetConsole」、Art-Netを送受信しパッチ処理やプロファイルカーブ処理を行う子プロセス「ArtNetEngine」の3本柱にしようと思います。
子プロセスの生成は fork を使います。fork ならば mmap、pipe、semaqhoe を子プロセスに渡すのが楽です。メモリの消費は多くなるようですが、実体の複製ですからポインタ祭りにならずに済みます。メモリの消費が多いと言っても、私が作るソフトウェアの規模などたかが知れていますので RaspberryPiCM4 の8GBモデルなら楽勝でしょう。
こういった構造は面倒な気もしますが、プロセス構造をシッカリ作っておけば開発が楽になると思いますし、何よりも「ArtNetEngine」の処理にリソースを集中したいのです。状態監視やユーザー相手は100msec毎で十分ですが、Art-Net の処理は5msec毎が欲しいのです。分散処理というより、求めるラップが違う処理を明確に分けたいのです。
処理時間を意識してしまうのは PIC マイコンからのクセですが、RaspberryPiCM4 で8ユニバースのパッチ処理をするならダイエットが大事かと。
#[Art-net] #C言語
構成ですが、起動し mmap や pipe を定義し子プロセスの状態を監視する親プロセス「ArtNetPatch」、ユーザーの操作の相手やデータを画面表示をする子プロセス「ArtNetConsole」、Art-Netを送受信しパッチ処理やプロファイルカーブ処理を行う子プロセス「ArtNetEngine」の3本柱にしようと思います。
子プロセスの生成は fork を使います。fork ならば mmap、pipe、semaqhoe を子プロセスに渡すのが楽です。メモリの消費は多くなるようですが、実体の複製ですからポインタ祭りにならずに済みます。メモリの消費が多いと言っても、私が作るソフトウェアの規模などたかが知れていますので RaspberryPiCM4 の8GBモデルなら楽勝でしょう。
こういった構造は面倒な気もしますが、プロセス構造をシッカリ作っておけば開発が楽になると思いますし、何よりも「ArtNetEngine」の処理にリソースを集中したいのです。状態監視やユーザー相手は100msec毎で十分ですが、Art-Net の処理は5msec毎が欲しいのです。分散処理というより、求めるラップが違う処理を明確に分けたいのです。
処理時間を意識してしまうのは PIC マイコンからのクセですが、RaspberryPiCM4 で8ユニバースのパッチ処理をするならダイエットが大事かと。
#[Art-net] #C言語
ArtNet-Patch で共有メモリの mmap を使うために セマフォ を勉強しています。mmap へのアクセスを排他的にするためです。
ただ、プロセス間のセマフォを使うような人は上級者が多いのか解説ページを見てもわかりにくい。
POSIX系のセマフォは物凄くシンプルな感じがしますが、とどのつまりがわからない。
man もわかっている人向けなのか引数の記述があるだけ。
もっと勉強です。
追記
なんて愚痴っていたらよい記事がありました。
開始が sem_init だったり sem_open だったりするけど、同じことみたいですからヘッダファイルのプロトタイプ記述を読めば良さそう。
「sem_overview - POSIX セマフォの概要」
「man-pages-ja sem_init(3)」
次の記事は、パーミッションにおける umask のことが主題ですが、セマフォの使い方がよくわかる。シンプルな記述を示してくれるこんな記事が嬉しい。
「sem_openで、Permission denied になる」
わかった気になった。
#[Art-net] #C言語
ただ、プロセス間のセマフォを使うような人は上級者が多いのか解説ページを見てもわかりにくい。
POSIX系のセマフォは物凄くシンプルな感じがしますが、とどのつまりがわからない。
man もわかっている人向けなのか引数の記述があるだけ。
もっと勉強です。
追記
なんて愚痴っていたらよい記事がありました。
開始が sem_init だったり sem_open だったりするけど、同じことみたいですからヘッダファイルのプロトタイプ記述を読めば良さそう。
「sem_overview - POSIX セマフォの概要」
「man-pages-ja sem_init(3)」
次の記事は、パーミッションにおける umask のことが主題ですが、セマフォの使い方がよくわかる。シンプルな記述を示してくれるこんな記事が嬉しい。
「sem_openで、Permission denied になる」
わかった気になった。
#[Art-net] #C言語
少し時間が空いたので ArtNet-Patch を考えていました。
部分はなんとなく出来ているので、全体の構造をどうするか。
まずプロセスを分けます。シングルプロセスではたぶんダメ。画面やキーボード操作を親プロセスにし、Art-Net の受信、パッチ処理、送信などを子プロセスとしようかと。子プロセスはタイムアウトする様にし、親プロセスからのリフレッシュが一定時間無ければ自動的に閉じることにします。こうしておけば親プロセスが飛んでも子プロセスがゾンビにならずいいかなと。操作が飛んでも Art-Net は生きている方がいいとする考え方もありますが、タイムアウト処理をコメントにすればそうなります。少なくとも開発中はタイムアウトした方がいいでしょう。
プロセス間は mmap や Pipe で繋ぎます。データには mmap を用い、コマンドには Pipe を用いるイメージです。
子プロセスの Art-Net 処理をイメージしながら表示画面やキーボード操作を考えてみましょう。
#[Art-net] #C言語
部分はなんとなく出来ているので、全体の構造をどうするか。
まずプロセスを分けます。シングルプロセスではたぶんダメ。画面やキーボード操作を親プロセスにし、Art-Net の受信、パッチ処理、送信などを子プロセスとしようかと。子プロセスはタイムアウトする様にし、親プロセスからのリフレッシュが一定時間無ければ自動的に閉じることにします。こうしておけば親プロセスが飛んでも子プロセスがゾンビにならずいいかなと。操作が飛んでも Art-Net は生きている方がいいとする考え方もありますが、タイムアウト処理をコメントにすればそうなります。少なくとも開発中はタイムアウトした方がいいでしょう。
プロセス間は mmap や Pipe で繋ぎます。データには mmap を用い、コマンドには Pipe を用いるイメージです。
子プロセスの Art-Net 処理をイメージしながら表示画面やキーボード操作を考えてみましょう。
#[Art-net] #C言語
PegasysG10 の修理・改造は先が見えてきました。
以前おかしな症状があったのは私のミスが原因でしたが、RS485のトランシーバーICを LT1785 にしたことで動作がとても安定しています。
まだまだ手を付けなければならない機体は多いですが、手順が決まれば無心で頑張るだけです。
さて、そんな PegasysG10 ですが、更に手を加えました。
お寺さんの本堂の大屋根を染める依頼があるのですが、仕込める位置から大屋根は30~50mあります。出力というより狭角なスポットライトが必要です。
ソースフォーのカラーミックスを使えたらいいのですが屋外に置くことは不可能に近い。かといって、全天候のLED-PARで狭角なモノは皆無。
ならば、PegasysG10 のレンズを狭角なモノに換えてしまえと。
以前、公称半減角5度のレンズを100個試し買いしたことがあります。ホットスポットは確かに5度くらいですが、ハレーションが酷すぎるし10m未満ですと出目がマーブルになってしまいます。ビームライトにならないなら使い物にならないとデッドストックになっていたのですが、改めて試したところ20m以上なら色が混ざり、ホットスポットもシッカリ見えます。ハレーションが酷すぎてステージのライトととしては使えませんが、投射距離が20~50mのライトアップには使えそう。ハレーションはハットを作れば軽減出来ます。
問題は同じレンズが手に入らないこと。中華電機で買いましたが、扱っていたショップが消えてました。他のショップに似たようなレンズはありますが、中華電機では使う側が必要とするスペックを書いていないことが多く、お試し買いをする時間もありませんので、今回は手持ちの100個の範囲でやりましょう。
#器具の修理 #照明器具
以前おかしな症状があったのは私のミスが原因でしたが、RS485のトランシーバーICを LT1785 にしたことで動作がとても安定しています。
まだまだ手を付けなければならない機体は多いですが、手順が決まれば無心で頑張るだけです。
さて、そんな PegasysG10 ですが、更に手を加えました。
お寺さんの本堂の大屋根を染める依頼があるのですが、仕込める位置から大屋根は30~50mあります。出力というより狭角なスポットライトが必要です。
ソースフォーのカラーミックスを使えたらいいのですが屋外に置くことは不可能に近い。かといって、全天候のLED-PARで狭角なモノは皆無。
ならば、PegasysG10 のレンズを狭角なモノに換えてしまえと。
以前、公称半減角5度のレンズを100個試し買いしたことがあります。ホットスポットは確かに5度くらいですが、ハレーションが酷すぎるし10m未満ですと出目がマーブルになってしまいます。ビームライトにならないなら使い物にならないとデッドストックになっていたのですが、改めて試したところ20m以上なら色が混ざり、ホットスポットもシッカリ見えます。ハレーションが酷すぎてステージのライトととしては使えませんが、投射距離が20~50mのライトアップには使えそう。ハレーションはハットを作れば軽減出来ます。
問題は同じレンズが手に入らないこと。中華電機で買いましたが、扱っていたショップが消えてました。他のショップに似たようなレンズはありますが、中華電機では使う側が必要とするスペックを書いていないことが多く、お試し買いをする時間もありませんので、今回は手持ちの100個の範囲でやりましょう。
#器具の修理 #照明器具
ncurses はウィンドウも定義出来ます。
今時のウィンドウとは違い、画面の中に子領域を作るイメージです。この領域内で文字位置が指定出来ます。子領域の左上を文字位置の 0,0 として扱えます。
ダイアログウィンドウを描くことも出来ますし、画面の区分けにも使えます。
今ネタになっている ArtNet-Patch では、すべてのレイアウトに共通する要素をメイン画面に描き、機能ごとの要素をウィンドウにして描こうかなと。表示位置のオフセット管理が楽になりますし、複数のレイアウトで共通する要素は使いまわしがしやすくなります。
ncurses はキー入力も受け取れますので、ユーザーの相手にする部分は ncurses で全て作れそうです。
後は string の使い方を頭に刷り込めば画面は作れるかなと。C言語の欠点は文字列の扱い難さですが、文字列は char の配列であることを頭に染み込ませてから string を勉強しなおしましょう。
アホかと思うくらいC言語について検索してきたので、これまで ncurses を知らなかったのは何故だろう。
#[Art-net] #C言語
今時のウィンドウとは違い、画面の中に子領域を作るイメージです。この領域内で文字位置が指定出来ます。子領域の左上を文字位置の 0,0 として扱えます。
ダイアログウィンドウを描くことも出来ますし、画面の区分けにも使えます。
今ネタになっている ArtNet-Patch では、すべてのレイアウトに共通する要素をメイン画面に描き、機能ごとの要素をウィンドウにして描こうかなと。表示位置のオフセット管理が楽になりますし、複数のレイアウトで共通する要素は使いまわしがしやすくなります。
ncurses はキー入力も受け取れますので、ユーザーの相手にする部分は ncurses で全て作れそうです。
後は string の使い方を頭に刷り込めば画面は作れるかなと。C言語の欠点は文字列の扱い難さですが、文字列は char の配列であることを頭に染み込ませてから string を勉強しなおしましょう。
アホかと思うくらいC言語について検索してきたので、これまで ncurses を知らなかったのは何故だろう。
#[Art-net] #C言語
C言語のライブラリである ncurses を勉強しています。ANSIエスケープシーケンスを簡単に使える様にしたライブラリです。
コマンドで全て描画するので今時の画面作りツールに比べたら面倒ですが、ANSIエスケープシーケンスを直接触ると思えば超簡単。歴史の長いライブラリのためか、奇妙な変化球がなくシンプルなのが私好み。
x-windowベースのグラフィカルな画面にしてもいいのですが、リソースの節約をしたいし、あえてレガシーな風味がいいかなと思っております。
Art-Netを受信して処理して送信する機能は一応出来ているので、まずは画面作りのお勉強をしましょう。データのモニターが出来ないと見えない部分の動作のチェックもし難いですしね。
#[Art-net] #C言語
コマンドで全て描画するので今時の画面作りツールに比べたら面倒ですが、ANSIエスケープシーケンスを直接触ると思えば超簡単。歴史の長いライブラリのためか、奇妙な変化球がなくシンプルなのが私好み。
x-windowベースのグラフィカルな画面にしてもいいのですが、リソースの節約をしたいし、あえてレガシーな風味がいいかなと思っております。
Art-Netを受信して処理して送信する機能は一応出来ているので、まずは画面作りのお勉強をしましょう。データのモニターが出来ないと見えない部分の動作のチェックもし難いですしね。
#[Art-net] #C言語
「TourZCAM/ETZ(初代)」を使っています。
かなり初期の LED-PAR です。明るさはボチボチですが全天候で消費電力が少ないので電源事情が厳しいライトアップで重宝しています。明るければイイとは限らないと思ったり。
購入して年数が経っていますので正常に動作しない機体も出ています。この製品は電源基板がNGになることがあり、部品交換で修理をするワケですが、メニュー画面もキー操作も正常なのに点灯しない機体を2台発見。開腹してチェックするも不良が見えない。基板がお亡くなりになったかと思いましたが、マニュアルを読み直したところ「RESET」メニューがある。工場出荷状態に戻す機能のようですが、ダメ元で試したところ2台とも復活してしまいました。
点灯しないモードに入ってしまった理由は不明ですが、サーマル・プロテクト(過熱保護)に入ると手動リセットしないといけないのかもしれません。
「不調ならまずリセットせい!」ってことにしました。
とりあえず全台復活です。
#器具の修理
かなり初期の LED-PAR です。明るさはボチボチですが全天候で消費電力が少ないので電源事情が厳しいライトアップで重宝しています。明るければイイとは限らないと思ったり。
購入して年数が経っていますので正常に動作しない機体も出ています。この製品は電源基板がNGになることがあり、部品交換で修理をするワケですが、メニュー画面もキー操作も正常なのに点灯しない機体を2台発見。開腹してチェックするも不良が見えない。基板がお亡くなりになったかと思いましたが、マニュアルを読み直したところ「RESET」メニューがある。工場出荷状態に戻す機能のようですが、ダメ元で試したところ2台とも復活してしまいました。
点灯しないモードに入ってしまった理由は不明ですが、サーマル・プロテクト(過熱保護)に入ると手動リセットしないといけないのかもしれません。
「不調ならまずリセットせい!」ってことにしました。
とりあえず全台復活です。
#器具の修理
こんなん欲しいなぁ~と思っていた RaspberryPiCM4 用のマザーボードを発見!CM4-Dual-Eth-Base です。

中華電機のサイト
EtherNet が2系統、RTC、電源入力がUSB-Cでなく裏側にある、etc.
PCI-Ex1 もあれば満点ですが、USB-3.0 が3系統あるので十分です。
これが入荷したら ArtNet-Patch の開発を再開しようかと。晩酌の肴ですけどね。
画面作りに ncurses を使えばと思っていましたが、ふと思いついて調べ直したらこれは便利。ネットにも man にもわかり易く整理された情報がないので、お試ししながらオレオレマニュアルを作成して本体ページにアップしましょう。自分の為にですけどね。
最近、RaspberryPi の価格も下がってきました。CM4 が 中華電機で1万円せずに買えます。
#RaspberryPi #C言語 #[Art-Net]

中華電機のサイト
EtherNet が2系統、RTC、電源入力がUSB-Cでなく裏側にある、etc.
PCI-Ex1 もあれば満点ですが、USB-3.0 が3系統あるので十分です。
これが入荷したら ArtNet-Patch の開発を再開しようかと。晩酌の肴ですけどね。
画面作りに ncurses を使えばと思っていましたが、ふと思いついて調べ直したらこれは便利。ネットにも man にもわかり易く整理された情報がないので、お試ししながらオレオレマニュアルを作成して本体ページにアップしましょう。自分の為にですけどね。
最近、RaspberryPi の価格も下がってきました。CM4 が 中華電機で1万円せずに買えます。
#RaspberryPi #C言語 #[Art-Net]
客席テーブルの天板を延長するための接着剤を考えていました。
屋内使用がメインだと想定していますが、屋外で使うなと言っても使う奴はいるでしょう。接着剤は耐水性を選ぶべきかと。
となれば我らの味方「スーパーX」でしょうか。
木ボンドとは接着の仕組みが違いますが、素材と接着面の処理を間違わなければ強力に接着され、硬化した後は弾性特性を持った耐水性です。自分は異種接着や、耐水目地止めと接着を兼ねたい場合にコレです。
塗装に水性のウレタン・ニスを使えばスーパXを犯すことはありません。表板の厚みが3mmのために接着面にシンナーが届いてしまう可能性があって考えていましたが、ベストはわからないけど、スーパーXでダメってことは無かろうと割り切ったところです。
#ガチ工作
屋内使用がメインだと想定していますが、屋外で使うなと言っても使う奴はいるでしょう。接着剤は耐水性を選ぶべきかと。
となれば我らの味方「スーパーX」でしょうか。
木ボンドとは接着の仕組みが違いますが、素材と接着面の処理を間違わなければ強力に接着され、硬化した後は弾性特性を持った耐水性です。自分は異種接着や、耐水目地止めと接着を兼ねたい場合にコレです。
塗装に水性のウレタン・ニスを使えばスーパXを犯すことはありません。表板の厚みが3mmのために接着面にシンナーが届いてしまう可能性があって考えていましたが、ベストはわからないけど、スーパーXでダメってことは無かろうと割り切ったところです。
#ガチ工作
持ち歩きパソコンがおかしい。
ストレージのアクセスが100%に張り付いたまま。動作が遅くて使いモノにならない。
管理者権限のコマンドプロンプトで次を実行。
> chkdsk c: /f /r
1回目の実行である程度改善したもののまだおかしい。
改善したってことはセクターエラーが起こっているのでしょう。
念のため2回目を実行中。あと2時間くらいかな?
改善しないようなら早めにSSDを交換しましょう。
#パソコン
ストレージのアクセスが100%に張り付いたまま。動作が遅くて使いモノにならない。
管理者権限のコマンドプロンプトで次を実行。
> chkdsk c: /f /r
1回目の実行である程度改善したもののまだおかしい。
改善したってことはセクターエラーが起こっているのでしょう。
念のため2回目を実行中。あと2時間くらいかな?
改善しないようなら早めにSSDを交換しましょう。
#パソコン
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131