<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ No.181 - 電装工芸日記 - 舞台照明機器の製作とか - ]]></title>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi</link>
	<description><![CDATA[ 今年は開発案件を進めたい ]]></description>
	<language>ja</language>
	<copyright>Copyright 2026</copyright>
	<lastBuildDate>Tue, 07 Apr 2026 17:07:41 +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[ 　Art-Netを受信した後、送信元別だった受信値をミックス… ]]></title>
	<description><![CDATA[ 　Art-Netを受信した後、送信元別だった受信値をミックス(HTP)する方法。<br /><br />　numpy.maxを用いれば簡単<br /><br />　受信値を３次元のnumpy.arrayで保存します。<br />　３次元のnumpy.arrayはエクセルでイメージするとわかりやすいかなと。<br /><br />　１スロットの受信値は0-255の数値で、これが横方向(行)に512個並んだ状態をユニバースとします。<br />　これをルート別に縦方向(列)で並べます。ここまでは縦横の１枚のシートです。<br />　この１枚を送信元別のシートとし、レイヤーとして重ねます。もちろん、スロットアドレスとルートは同様にします。<br /><br />　あとはレイヤーを串刺しで最大値を得ればHTPでミックスしたルートとスロットの２次元のnumpu.arrayを得られます。<br /><br />　numpyをnpの名前でimportし、３次元のnumpy.arrayをan_cache_senders_route、最大値の２次元のnumpy.arrayをan_cache_htpとすると次の様になります。<br /><br />an_cache_htp = np.max( an_cache_senders_route, axis=0 )<br /><br />　こんな感じの１行で計算出来ます。axis=0は最大値を得る次元方向の指示です。３次元なら、axis=2は横で、axis=1は縦で、axis=0は奥行という指示です。<br /><br /><br />　以下、ちょいとオレメモ<br /><br />　受信値、付随するデータ<br /><br />an_bytes　　　　　　　　　 受信したArt-Netパケットのデータ(type=bytes、別途デコード必要)<br />an_sender_ipaddress　　　　受信したArt-Netパケットの送信元IPアドレス(type=string、４つのドット切り10進数 IPv4の一般的な表記)<br />an_received_datetime　　　 受信された時点でdatetime.datetime.now()により取得した日時(type=datetime.datetime)<br /><br />　処理の処理を指示するデータ<br /><br />an_universes2route　　　　 対象ユニバースの１次元配列　　　　　　　　　　　( Net, Subnet, Universe )&#91; ルート &#93;<br /><br />　受信値を処理、管理するデータ<br /><br />an_ipaddress_senders　　　 送信元のIPアドレスの１次元配列　　　　　　　　　IPアドレス &#91; 送信元 &#93;<br />an_datetime_senders　　　　送信元ごとの最終受信日時の１次元配列　　　　　　最終受信日時 &#91; 送信元 &#93;<br />an_datetime_senders_route　送信元ごとにルートの最終受信日時の２次元配列　　最終受信日時 &#91; 送信元, ルート &#93;<br />an_cache_senders_route　　 送信元とルートごとに受信値を保存する３次元配列　受信値 &#91; 送信元, ルート, スロットアドレス &#93;<br />an_cache_htp　　　　　　　 次の処理へ渡す処理済み受信値の２次元配列　　　　受信値 &#91; ルート, スロットアドレス &#93;<br />　※ &#91; &#93;内はインデックスの要素(&#91;３次元目,２次元目,１次元目&#93;)<br />　※ 同名のindexは同じ値になるように設定<br /><br />＃an_ipaddress_senders から an_sender_ipaddress と同じIPアドレスを持つ&#91; 送信元 &#93;のindex配列を得る<br />list( zip( *np.where( an_ipaddress_senders == an_sender_ipaddress ) ) )<br />　※ 受信した際に重複しない様に送信元情報を保存してインデックスを発行し、送信元別に日時と受信値を保存するために使う。<br />　※ ただし、対象のユニバースを送って来ない送信元は無いものとする。早い段階でフィルタしないと後が面倒。<br /><br />＃an_datetime_senders から現在日時より１秒以上前の日時を持つ&#91; 送信元 &#93;のindexの配列を得る<br />list( zip( *np.where( an_datetime_senders &lt; ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )<br />　※ 送信元の存在を確認するために使う。１秒間受信が無い送信元は無いものとする。<br /><br />＃an_datetime_senders_route から現在日時より１秒以上前の日時を持つ&#91; 送信元, ルート &#93;のindexの配列を得る<br />list( zip( *np.where( an_datetime_senders_route &lt; ( datetime.datetime.now() - datetime.timedelta( seconds=1 ) ) ) ) )<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> <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 電装工芸 〔2108文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=181</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=181</guid>
	<category>tegalog</category>
	<pubDate>Wed, 09 Mar 2022 17:40:30 +0900</pubDate>
</item>

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

