<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ 2022年2月13日の投稿［3件］ - 電装工芸日記 - 舞台照明機器の製作とか - ]]></title>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi</link>
	<description><![CDATA[ 今年は開発案件を進めたい ]]></description>
	<language>ja</language>
	<copyright>Copyright 2026</copyright>
	<lastBuildDate>Fri, 24 Apr 2026 07:46:09 +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の受信データをデコードする処理を書いてみました。<br />　製作環境はRspberryPi4、Rasbian_buster、Python 3.7.3です。<br />------<br /><br />import numpy as np<br /><br />class coding&#58;<br />　def decode(self, artnet_packet)&#58;<br />　　&quot;&quot;&quot; Art-Netのbyte列を要素に分解する &quot;&quot;&quot;<br />　　id = artnet_packet&#91;0&#58;8&#93;<br />　　opcode = int.from_bytes(artnet_packet&#91;8&#58;10&#93;, &apos;little&apos;)<br />　　prover = int.from_bytes(artnet_packet&#91;10&#58;12&#93;, &apos;big&apos;)<br />　　sequence = int.from_bytes(artnet_packet&#91;12&#58;13&#93;, &apos;little&apos;)<br />　　physical = int.from_bytes(artnet_packet&#91;13&#58;14&#93;, &apos;little&apos;)<br />　　subuni = int.from_bytes(artnet_packet&#91;14&#58;15&#93;, &apos;little&apos;)<br />　　sub = subuni // 16<br />　　uni = subuni % 16<br />　　net = int.from_bytes(artnet_packet&#91;15&#58;16&#93;, &apos;little&apos;)<br />　　length = int.from_bytes(artnet_packet&#91;16&#58;18&#93;, &apos;big&apos;)<br />　　data = np.frombuffer(artnet_packet, dtype=np.uint8, count=length, offset=18)<br />　　return (id, opcode, prover, sequence, physical, net, sub, uni, length, data)<br /><br />if __name__ == &apos;__main__&apos;&#58;<br />　an = coding()<br />　id, opcode, prover, sequence, physical, net, sub, uni, length, data_uint8 = an.decode(test_artnet_packet)<br /><br />※ 行頭の空白には全角を使っています。<br />------<br />　test_artnet_packetに受信データを入れ、codingのインスタンスanでdecodeを呼び出します。<br />　書いてみたら案外スッキリした物になったので記念に掲載しました。<br /><br />　socketで受信するのはバイナリデータ(Pythonで言うところのバイト列)ですが、これを一発でnumpy.arrayに変換してくれるnumpy.frombufferは便利です。<br />　int.from_bytesもバイト列をエンディアン指定でint数に一発変換してくれて便利です。<br />　私はPICマイコンと協調させて使うことが多いので、こういった機能があると助かります。<br /><br />　上記ですとdataの戻り値がnumpy.uint8ですが、計算するためにはnumpy.uint16の方が良いと思います。<br />　data_uint16 = data.astype(np.uint16)<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 電装工芸 〔1415文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=131</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=131</guid>
	<category>tegalog</category>
	<pubDate>Sun, 13 Feb 2022 18:03:17 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　Art-Netのアプリは画面表示とキー操作まで一応の完成を… ]]></title>
	<description><![CDATA[ 　Art-Netのアプリは画面表示とキー操作まで一応の完成をみました。<br />　キー操作はレスポンスに少しムラがあるので改善したい点です。使えるレベルなので今のところは将来課題としておきますが、ユーザーがご機嫌をうかがいながら使うユーザーインターフェースは大嫌いなのでとても重要です。<br /><br />　余談ですが、売れている卓とそうでもない卓の違いにはこういった点の僅かなストレスの差もあります。卓は手段としての道具ですが、国内メーカーはカタログスペックばかり求めて手に馴染む道具を作ろうとしない。買うのは使う人ではありませんから仕方ないことでもありますが、国産のホール卓がダメな点です。国産で唯一、松村さんの卓にはこういったストレスが少ないのですが・・・。<br /><br />　とまぁ愚痴はおいといて、これで本丸であるArt-Netの受信に取り掛かれます。<br />　単純な受信は別回しするThread内のsocketで受けるだけなので難しくないと思うのですが、パケットのデコードが少し面倒かもしれません。Art-Netのパケットはバイト列ですが、これらをPythonで扱いやすい様に分解して変換しなければなりません。Pythonはバイト型の扱いが少し苦手ですし、パケットにはアスキーテキスト、LSBの2バイト数、MSBの2バイト数、バイト型が混在しているので、よく考えて作らないといけません。実行回数が多い処理なだけに軽さも重要です。<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> <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 電装工芸 〔619文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=130</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=130</guid>
	<category>tegalog</category>
	<pubDate>Sun, 13 Feb 2022 11:59:49 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　ありがちな１液式の塗料は１週間以上放置しないと現場で使えま… ]]></title>
	<description><![CDATA[ 　ありがちな１液式の塗料は１週間以上放置しないと現場で使えませんが、ポリエステル樹脂は２日もあれば完全硬化して使えます。扱いが面倒なところや少なくない制限もありますが、現場投入までの工程としてはむしろ使いやすいかもしれません。<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 電装工芸 〔497文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=129</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=129</guid>
	<category>tegalog</category>
	<pubDate>Sun, 13 Feb 2022 11:17:27 +0900</pubDate>
</item>

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

