<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ 全年2月4日の投稿［6件］ - 電装工芸日記 - 舞台照明機器の製作とか - ]]></title>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi</link>
	<description><![CDATA[ 今年は開発案件を進めたい ]]></description>
	<language>ja</language>
	<copyright>Copyright 2026</copyright>
	<lastBuildDate>Tue, 05 May 2026 19:53:07 +0900</lastBuildDate>
	<generator><![CDATA[ <!-- てがろぐ Version: -->Powered by <a href="https://www.nishishi.com/cgi/tegalog/" target="_top">てがろぐ</a> Ver 3.4.0 ]]></generator>
	<!-- BEGIN ENTRIES -->
	<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　DMX の受信処理をするにあたって必要且つ面倒なのがタイム… ]]></title>
	<description><![CDATA[ 　DMX の受信処理をするにあたって必要且つ面倒なのがタイムアウト。規格では１秒間更新が無ければ送信がされていないと判断します。<br />　ユニバースが１つのレガシーDMXの装置なら監視するタイムスタンプは一つですからそれほどの負荷ではありませんが、ArtDMX を大量にバッファする機構ではどうするか。<br />　アイデアですが、受信してバッファされている全ての ArtDMX は監視しません。最新値だけ評価すればいいのですからインデックスを覗きます。送信元のインデックスのタイムスタンプでタイムアウトを確認し、登録されている送信元なら無送信のフラグを立てユニバースのインデックスを消去し、登録されていない送信元ならぶら下がるユニバースのインエックスと共に消去します。この後、送信元のチェックで消去されていないユニバースのタイムアウトをチェックします。最後に送信元とユニバースのインデックスをソートします。<br />　タイムアウトは例外処理の一種ですから、どのようなメッセージを出すか、スロットの一覧表示をしていた際にどのような挙動にするか、カレントの送信元としてバスにリレーしていた場合にどうするか、この辺りはあらかじめ決めておいた方がよさそうです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔528文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=1190</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=1190</guid>
	<category>tegalog</category>
	<pubDate>Wed, 04 Feb 2026 08:44:33 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　Antari F1-FAZER はツンデレのツンに入りまし… ]]></title>
	<description><![CDATA[ 　Antari F1-FAZER はツンデレのツンに入りました。全く以てご機嫌がわからない。３歩進んで２歩下がるを本気でやってくれます。<br />　なんでかんで一か月近くやってますが、いい加減飽きてきたかも。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e5%99%a8%e5%85%b7%e3%81%ae%e4%bf%ae%e7%90%86" class="taglink" title="器具の修理">#器具の修理</a> -- Posted by 電装工芸 〔108文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=1001</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=1001</guid>
	<category>tegalog</category>
	<pubDate>Tue, 04 Feb 2025 17:20:56 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　諸々イイ感じに書き進められていますが、処理タイミングという… ]]></title>
	<description><![CDATA[ 　諸々イイ感じに書き進められていますが、処理タイミングという一見簡単そうで実は面倒なことに取り組んでいます。<br />　先日作ったキー入力処理とArt-Net処理を混ぜているのですが、それぞれに合った時間間隔で実行しないといけません。キー入力は100msec、Art-Netは100usecです。求められる処理間隔が３桁も違うので同じ時間間隔ではどちらかが破綻します。それぞれをそれぞれの時間間隔で実行するにはどうするか。他の処理を止めること無く処理を続けるにはどうするか。<br />　基本は前回処理の日時と現在日時の差から経過時間を評価する方法です。一定の時間間隔で処理を呼ぶのではなく、呼ばれても経過時間が要求未満なら何もしない方法です。signal()を用いて一定時間間隔で関数を実行させるのが王道でしょうが、singal()ですと終わっているべき他処理のチェックが必要になるのでどっちもどっちです。私の書き方が悪いのかもしれませんが、signal()を多用するとバグの原因になりやすいようです。<br />　なんにしても前回処理からの経過時間で対策してみます。そのために必要なのは現在日時の取得です。POSIX時間と呼ばれる1970年1月1日0時0分0秒からの経過秒数を取得出来るのでこれを用います。50マイクロ秒くらいの分解能が欲しいので秒単位では不足しますが、精度はともかく1ナノ秒単位で値を得られますから十分です。<br />　下記はその値を取得するテストプログラムです。<br />　秒とナノ秒が別々の変数で得られるので、評価を簡単にするためにひとまとめにします。ただし、int型は4バイト長(OSが32bitの場合)のためデータ長が不足しますので、8バイト長(OSが32bitの場合)の unsigned long long int型を用います。2038年問題はとりあえず気にしない。。。<br /><br /><small class="decorationT"><span class="decorationF deco-code">Raspberry Pi 4B / Rasbian11_32bit(blueseye) / コンパイラ：OS標準gcc<br />＃include &lt;stdio.h&gt;<br />＃include &lt;time.h&gt;<br /><br />int main( int argc, char *argv［］ ) {<br />　　struct timespec now ;<br />　　unsigned long long int now_nsec ;<br />　　// 現在POSIX時を取得<br />　　clock_gettime( CLOCK_REALTIME, &now ) ;　　　　　　　　　　　　// 現在POSIX時間値を取得<br />　　now_nsec = ( unsigned long long int )now.tv_sec * 1e9　　　　　// unsigned long long int型(8バイト長int)変数に<br />　　　　　　　　+ now.tv_nsec ;　　　　　　　　　　　　　　　　　　　// 取得値をひとまとめにする(nsec)<br />　　// 確認表示<br />　　printf( &quot;%11ld.%09ld sec.\n&quot;, now.tv_sec, now.tv_nsec ) ;　　　// 取得値を表示<br />　　printf( &quot;%21lld nsec.\n&quot;, now_nsec ) ;　　　　　　　　　　　　　// ひとまとめにした数値を表示<br />　　// 終了<br />　　return 0 ;<br />}</span></small><br /><small class="decorationT">※ このブログシステムでは＃や［が機能文字扱いなので、上記ではこれらを全角文字で書いています。空白も全角です。</small><br /><small class="decorationS">◆ 参考<br />　<a class="url" href="https&#58;//www.mm2d.net/main/prog/c/time-01.html" target="_blank" title="https&#58;//www.mm2d.net/main/prog/c/time-01.html">時間情報の取得方法と扱い方</a> </small><br /><br />　取得に必要なのは「// 現在POSIX時を取得」以下の２行(表記は３行)です。<br />　実際の処理では、取得した秒とナノ秒を合わせた数値がnow_nsec入りますので現在日時値とし、同じ方法で前回の処理で取得した値との差で経過時間を評価します。単位がnsecなら１秒は1000000000(1e9)ですから、100msecは100000000(1e8)、100usecは100000(1e5)です。良い意味で処理が速いＣ言語では多用すべき手法です。<br />　関数化・ライブラリ化するとソースは美しいですが、２行で出来ることなので都度の直書きでもいいかなと。将来、2038年問題に対策しやすくしておくならライブラリ化しといた方がいいけど。<br />　PICのアセンブラでも近いことをしていますが、それがPICで様々なことを実現出来ている要因だったりします。処理タイミングの管理はとても重要です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%ef%bc%a3%e8%a8%80%e8%aa%9e" class="taglink" title="Ｃ言語">#Ｃ言語</a> -- Posted by 電装工芸 〔1874文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=498</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=498</guid>
	<category>tegalog</category>
	<pubDate>Sat, 04 Feb 2023 18:19:11 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　ANSIエスケープシーケンスを研究中ですが表示がおかしい。 ]]></title>
	<description><![CDATA[ 　ANSIエスケープシーケンスを研究中ですが表示がおかしい。<br />　コードは間違いなくprintしているのに表示されない。いや、表示されることもある。<br />　さて・・・<br /><br />　どうやらバッファの挙動によるものでした。<br />　printで表示される文字列は一度バッファに蓄積され、バッファが一杯になるか、改行コードなどを受けると表示に渡されるのだとか。<br /><br />　単にprintするならその都度改行コードが発行されますのでその都度表示されるのですが、文字は表示したいけど改行したくないことがあります。<br /><br />　pythonのprintですと、<br /><br />　print(&apos;表示したい文字列&apos;, end=&apos;&apos;)<br /><br />　とすると改行せずに表示が実行されますが、改行が発行されないとバッファが一杯になるまで何も表示されません。<br />　表示されたり表示されなかったりで困ったのですが、強制的に表示に送る方法がありました。<br /><br />　print(&apos;表示したい文字列&apos;, end=&apos;&apos;, flush=True)<br /><br />　最後に flush=True を加えるのです。<br />　こうすると、バッファや改行コードに関係なく、printが実行される度に表示されます。<br /><br />　自由度が広がりました。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> -- Posted by 電装工芸 〔518文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=114</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=114</guid>
	<category>tegalog</category>
	<pubDate>Fri, 04 Feb 2022 21:11:22 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　LED-BARのケースで使う受けを作っています。 ]]></title>
	<description><![CDATA[ 　LED-BARのケースで使う受けを作っています。<br />　3x6の合板を２枚使い切りの切り出し。<br />　接着中で写真に入っていないのもありますが、切っても切っても終わらない。<br /><br /><img class="embeddedimage" src="https&#58;//www.densokogei.jp/tegalog/images/20220204204537-admin.jpg" alt="20220204204537-admin.jpg"><br /><br />　上に乗っているようなのを12個作ります。<br /><br />　一見少なく感じますが、この量で合板１枚分。<br />　切ってはバリ取り、切ってはバリ取りの繰り返し。<br />　小さい短冊でも60枚ですから、そう簡単には終わらない。<br />　今日はここまで。<br /><br />　日中は切った貼った。<br />　陽が暮れたらソースコードを書き書き。<br />　アホですわ(笑<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%ac%e3%83%81%e5%b7%a5%e4%bd%9c" class="taglink" title="ガチ工作">#ガチ工作</a>  -- Posted by 電装工芸 〔246文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=113</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=113</guid>
	<category>tegalog</category>
	<pubDate>Fri, 04 Feb 2022 20:45:37 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　ANSIエスケープシーケンスを組んでて思ったのですが、大昔… ]]></title>
	<description><![CDATA[ 　ANSIエスケープシーケンスを組んでて思ったのですが、大昔のN-BASICみたいだなと。書式こそ違いますが、COLOR命令やLOCATE命令を思い出す風味です。N-BASICリアル世代。<br />　ANSIエスケープシーケンスはテキスト画面の制御コードを文字列としてprintします。画面の文字を消去しろとか、カーソル位置を何処にしろとか、引き続いて表示する文字列の色をどうしろとかを命令ではなくコードで渡すのです。大昔のVT100などで用いられたテキスト表示の制御方法ですが未だに使えるとは驚きてす。さすがUNIXの末裔。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%50%69" class="taglink" title="RaspberryPi">#RaspberryPi</a>  -- Posted by 電装工芸 〔274文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=112</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=112</guid>
	<category>tegalog</category>
	<pubDate>Fri, 04 Feb 2022 12:01:37 +0900</pubDate>
</item>

	<!-- END ENTRIES -->
</channel>
</rss>

