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

今年は開発案件を進めたい

or 管理画面へ

全年全月20日の投稿[28件]

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

Icon of admin
 Antari F1-FAZER はあからさまにツンデレです。
 空焚きをした後の今朝は溶液をデレっと飲むようになりましたが、午後になったらツンと飲まなくなりました。
 何がどうしたのか本当にわかりませんが空焚きに切替えます。
 半固定抵抗が入荷したので交換もしてみます。

#器具の修理

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

Icon of admin
 セマフォの使い方が見えたので構造の重要な要素は獲得出来ました。
 構成ですが、起動し 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言語
Icon of admin
 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言語

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

Icon of admin
 3216(1206)サイズ0Ωの抵抗が入荷しました。
 抵抗と呼ぶのに0Ωってのは奇妙な感じがしますが、パターンをジャンパーするのに便利な部品です。
 中華電機の方が安かったのですが、送料と納期を考えてモノタロウさんです。
 週明けまで作業する時間がありませんが、早々にテストしたいです。

#器具の修理

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

Icon of admin
 イントレへのピン揚げですが、こんなん使ったらどうでしょ?
 ホイストでもいいのですが作業床より高い位置に吊り点が必要です。天井高によっては入らないこともあります。
20240820144901-admin.jpg
 写真は長谷川工業株式会社さん「マイティスライダー JS480F」です。荷揚力は120kgあり、梯子の長さは3.2~4.8mです。カタログスペックは丁度いい。
 購入価格は一歩引くモノがありますが、建機屋さんでもレンタル可能です。
 転倒防止や荷扱いなど考えることはありますが、ロープを使って人力揚げするよりはいいかもしれません。
 試してみたい。

#舞台装置 #照明器具

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

Icon of admin
 LED-Bar はサイドプレートの製作は段取りがまとまったので続けるだけ。この後は専用のオベタを作ります。
 純正オプションは床置きの脚だけですから吊れませんのでダボを装着する金具を作ってありますが、置きと吊りで横付けの金具を付け替えるのはいただけない。ダボを標準としてオベタを付ける使い方が我々にとって普通かなと。かといって、いわゆるオベタでは大きすぎて重すぎて灯体の置き位置も離れてしまってよろしくない。専用のオベタを作るのが適当かと。買える物は買いますが買えない物は作る。
 つわけで、以前試作したオベタの量産も開始しました。
 内径φ16mm弱で肉厚3mmの鉄パイプの内径を広げて横っ腹にナット、底部にフラットバーに溶接します。手間のかかる品ですが使用感は良いと思います。

#器具の製作 #ガチ工作

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

Icon of admin
 今日もホール増員置きダヌキしてました。珍しく旗日にオフだったのですが、結構大掛かりなツアーだったので召喚された次第。
 ツアーの皆様は仕事が出来る人ばかりのためタッパまで終わればバラシまでヒマですから調べ物や研究が出来るのです。

 そんなワケで、コンソール画面を書く手段を新たに見つけつつ、Art-Netパッチの基本設計や要となる要素を整理し終わりました。机上作業が終わったので次は実機試験です。
 VsCodeからSSHでRaspberryPiを触る方法で作業するのですが、この物理環境を今一度整備しましょう。パソコン、卓、node以外の必要な物が固定され配線されたトランク型のラップトップパソコンみたいなモノを作るです。配電盤箱よろしく中に合板を貼り付けてテキトウにビス止め出来るアルミトランクみたいなモノがあればいいでしょうか。これに電源(DC3.3v,5v,12v小型のSFX電源?)、RaspberryPi、モニタ、EtherneHubなどの基本用品と都度の課題で必要なモノを組み付けておくのです。キーボードはワイヤレスなので仕舞う場所だけ??。ここまでしておけば場所を選ばず作業出来そうです。

#ガチ工作 #器具の製作
Icon of admin
 コンソールの画面操作では「ANSIエスケープシーケンス」を使うイメージでいましたが、「ncurses」と呼ばれる便利なライブラリがあることを今更知りました。これを使えばコンソール画面作りが楽になりそうです。
 キー操作の扱いを調べていたのですが、「C言語で矢印キーの入力を完璧に検出する5つのステップ」を読んでいたら「ncurses」が便利とのこと。ここから調べを進めたところナルホドが連発。「cursesライブラリの超てきとー解説」を読むと概要がわかるような。

#C言語
Icon of admin
 SharedMemory(共有メモリ)であるmmapの使い方が整理出来つつあります。
 検証はこれからですが、理解出来たところをオレメモとして書いておきます。
 あくまで「オレメモ」です。間違いアリアリでよろしくお願いします。
 なお、mmapには様々な用法あるらしい。下記はプロセス間の共有メモリに限った使い方です。
/* mmapを使うためのライブラリ */
#include <sys/mman.h>

/* 共有メモリにテキストを代入する */
char *st;    // 扱うデータの型でmmapのポインタを設定
int msize = 4096;
st = mmap( NULL, msize, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, -1, 0 );  // ここまでやってからfork()でプロセスを分ける
*st = 'TEST';    // mmapに「TEST」が代入される(変数をポインタで扱う方法で扱える)

/* 使用後は共有メモリを解放する */
munmap( st, msize );

mmapの引数
1つ目(addr/NULL):mmapを定義するメモリアドレスを設定する項目だが、NULLにしておけばOSが決めてくれる。
2つ目(size/msize):確保するメモリサイズの指定。ページメモリのサイズの倍数にするベシというご意見と、欲しいメモリサイズを指定すればOSが調整してくれるというご意見など色々ある。変数の型からsizeofで得る方法(sizeof(int)など)を使われている方もいる。
3つ目(prot/PROT_READ | PROT_WRITE):読み書きモードを設定する。この書き方だと読み書き両方可能にする。
4つ目(flag/MAP_ANON | MAP_SHARED):MAP_ANONはファイルをマッピングせずに使う指定(共有メモリとして使うだけならこれでいい)、MAP_SHAREDはプロセス間で共有するという指定。
5つ目(fd/-1):ファイルディスクリプタの指定だが、上記でMAP_ANONにしているので-1で無しとする。
6つ目(offset/0):スタートアドレスからどれくらいずらしたところを使うか。

 共有メモリは読み書きのタイミングをマネージしれくれませんので、何かしらの管理をしないといけません。

参考:ページメモリのサイズを取得する
#include <unistd.h>
#include <stdio.h>
long page_size = sysconf( _SC_PAGESIZE );


 ついでにpipeも。
 ただし、ここではpipe2(Linux固有)を使います。pipeの上位互換で引数でノンブロッキングの設定が出来るからです。通常のpipeはパイプが空の場合に有効なデータが取り出せるまで待ってしまいますがO_NONBLOCKを設定すると待ちません。
 なお、以前の書き込みでpipeは単純なスタックと書きましたが、Queue程マネジメントされていないFIFOです。訂正します。
/* pipeを使うためのライブラリ */
#define _GNU_SOURCE  // よくわからないけど必要なおまじない?
#include <fcntl.h>  // O_*(ここではO_NONBLOCK) 定数の定義の取得
#include <unistd.h>  // pipeの本体を呼ぶ

/* pipeの定義 */
int pipefd[2];   // ファイルディスクリプタとしてint配列を用いる 変数の名前は任意
if( pipe2( pipefd, O_NONBLOCK ) < 0 ) {  // ファイルディスクリプタとする配列とノンブロッキングのフラグを引数にする
 // pipe2の戻り値が-1なら設定エラー
}

/* pipeへの書き込み */
char *st = "TEST";
write( pipefd[1], st, strlen( st ) );  // strlenは<string.h>が必要。成功なら書き込んだバイト数、失敗なら-1が戻る。

/* pipeからの読み出し */
char buf[128];
read( pipefd[0], &buf, sizeof( buf ) );  // パイプが空の場合はEOFを得るか戻り値が0になると思われる。成功なら読み取ったしたバイト数、失敗なら-1が戻る。

/* pipeを閉じる(fork()して読み出し側書き込み側に分かれる場合はfork()した後に使わない側を閉じて運用する。もちろん終了する際にはすべて閉じる) */
close( pipefd[0] );  // 読み出しを閉じる
close( pipefd[1] );  // 書き込みを閉じる

 int配列pipefdは[0]が読み出し[1]が書き込みになるファイルディスクリプタ。
#define MEMREAD 0
#define MEMWRITE 1
 などとして使うとわかりやすいかも。

 OSに寄りますが、スタック長は65536バイトが一般的らしい。
 pipeは読み書きのタイミングをマネージしてくれます。


 どちらもファイルを読み書きする手法を応用していますので、ファイルの読み書きの仕方を勉強しなおしてから取り組むとわかりやすいかもしれません。

#C言語

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

Icon of admin
 同業の貴兄たちもそうだと思いますが異様に忙しい。
 コロナが明けての解放感から沢山のイベントが開催されることは嬉しいことですが、コロナの期間中に廃業・転職された方が多いのもあって軒並み人手不足のようです。
 私は事前の段取り作業や現場に合わせた製作物が多いため、員数合わせの現場にも関わるとシンドイ状況が続いております。あと一週間こなせば少し落ち着きますのでもうひと踏ん張り。

 日程が落ち着いたらアホかと思うくらいモノ造りをしたいです。
 ストレス解消のためか基礎設計と部品購入だけ進めてしまった案件の部品が山と積まれている惨状をナンとかしたいのもありますけどね・・・。
 お世話になっている鉄工所さんからの依頼物が数か月遅れているという不義理をしているので年末年始にナンとかして新年早々に納品しないといけません。ちょっと特殊なウェブカメラとその周辺機器ですが、アタマを全振りしないと作れない代物なので空き時間に少しずつ進めることが出来ないんですよ。自分の思考容量の小ささに閉口してますけど・・・。
 これがあれば現場が快適になるのに!という欲望から構想しているネタが多すぎるようです。自分自身の発想が自分自身の首を絞めている気もしますが、自社・他社に関わらず、現場の度にアイデアが湧いてくるのは止められません。。。

 話は変わりますが、最近は初心者を抜け出そうな部下の指導も困難を極めています。
 「今どきの若者は・・・」って文言はギザのピラミッドにすら書かれている愚痴ですが正にそう思います。
 自分を棚に上げて言いますが、今どきの若者は打たれ弱い。
 経験が少ない故に出来ないことは仕方ないと思いますが、狭い視野を広げてあげることは重要だと思っています。目先の舞台作りをどうするかは大切だしそれが主な役目ですが、観客や出演者も含めた関わるすべての人をイメージして自分の立ち位置を把握して取り組まないといけません。簡単に言うなら、照明だけ見てたんではダメなんです。
 ところがです、出来なったことや失敗したことをやんわり指摘しても、打たれ弱いために内に入ってしまい、「自分の未熟さが迷惑をかけた。迷惑をかけないように頑張らなくては!」と奮起しないのです。奮起するならヒントも与えられますが、失敗から更に視野が狭くなるので先に進めません。変な表現ですが、オールラウンド自分が主人公なワケです。特に幼い頃から叱らることがなかった子にはその傾向が強く、自分の未熟さが誰かに迷惑かけていると発想すら出来ないのです。
 あまり厳しくすると主人公様は物語から降りてしまうし、甘やかすだけでは仕事を成り立たせる人材にはなりません。自分が初心者の頃にご指導くださった諸先輩方に改めての感謝を感じつつ、どうしたものかと思案にふけるオッサンであります。

#雑談

■思ってみた

春ですねぇ~。
花粉症の部下は死にそうですが、暖かいってのはいいことです。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

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

■日付検索:

■カレンダー:

2025年2月
1
2345678
9101112131415
16171819202122
232425262728

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年4月29日(火) 20時16分48秒