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

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

or 管理画面へ

2023年2月1日の投稿[3件]

Icon of admin
 Art-Netの送信にも成功しました。
 受信値を転送するだけですが、Art-Netデコーダから正常と思われる値が出力されています。
 今日は終わりにしますが、大きな課題がクリア出来て大満足です。
 ただ、8ユニバースを出力しているdot2が一杯いっぱいの様子。発熱も凄いし画面もコマ送りです。

 ちなみにですが、recvfrom()の4番目のパラメータを「MSG_DONTWAIT」にすると受信待ちしません。先達の例では待ちアリの「0」を定義してioctl()に待ち無し(ノンブロッキング)を設定していることが多いのですが、「MSG_DONTWAIT」を使った方がストレスが無い感じ。
 で、気付いたのですが、C言語は速い。速いが故の対策が必要になる始末。受送信テストでは終了のためのキー入力やタイムアウトを入れるのが面倒だったのでfor文による一定回数の繰り返しで試したのですが、受信待ちを無くした後はPythonでの実験の際に使った回数では一瞬で終わってしまいます。プログラムが間違っているのかと思う程でした。てことは、あまりにも無意味な回数recvfrom()を呼んでいることになりますので、受信が無い場合は100~500usecくらい待ちを入れた方がいいみたいです。バッファを読みに行っているだけなので気にしなくていいって話もありますが、ANSIエスケープシーケンスを用いた画面表示も適度な待ちを入れないと画面がフリッカーを起こす程です。数か月かかりましたが、C言語を勉強して良かったと思います。遅いのを対策するのは大変ですが、速いのを抑え込むのは比較的簡単ですからね。
 ここまで速いとマルチプロセスを使わなくてもいいのではないか?って気持ちも芽生えます。使った方が速さ以外に都合が良いこともあるので使いますケド。

 基本的な受送信が確認出来ましたので、関数化しつつArt-Net(正しくはArt-DMX)のデコード/エンコードも書きましょう。

#[Art-Net] #C言語
Icon of admin
 Art-Netの受信に成功しました。
 先達の情報をいくつか合成しましたが、思った以上に簡単でした。
 ネットワークインターフェースの指定も出来ました。
 一安心ですが、次は送信しないといけません。
 デコード/エンコードをせずに受信値をリレーするだけですが、これが成功しないようでは受信値を加工する努力をしても意味がありません。

#[Art-Net]
Icon of admin
 自作のライブラリをincludeしてコンパイルするには少し面倒があります。
 例えば、
 製作するアプリケーションファイル test_inkey
 メインのソースファイル test_inkey.c
 ライブラリのソースファイル std_inkey.c
 とした場合、
$ gcc -Wall -lm -o test_inkey -I ./ test_inkey.c std_inkey.c
 などとコンソールからコマンドを打たないといけません。
 Cのソースファイルが一つならVSCodeからショートカットで一発なんですけどね。

 この場合、makefileを作っておけばmakeコマンドで一発です。
 次がわかりやすい。
 Makefile の書き方 (C 言語)
 makeコマンドの使い方も丁寧に説明してくれています。

#C言語

■当面の課題

桜のライトアップの季節です。花粉症の季節でもあります。
自分は平気ですが、花粉症の部下は死にそうな顔をしています。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

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

■日付検索:

■カレンダー:

2023年2月
1234
567891011
12131415161718
19202122232425
262728

■カテゴリ:

■最近の投稿:

最終更新日時:
2024年4月28日(日) 10時15分49秒