<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ 2023年1月24日の投稿［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[ 　本業では社内のサーバーやパソコンのメンテをしていますが、処… ]]></title>
	<description><![CDATA[ 　本業では社内のサーバーやパソコンのメンテをしていますが、処理の待ち時間でＣ言語のお勉強。<br />　時間についてです。<br />　DMXを扱うには無受信１秒でタイムアウトしなければなりませんし、Delayを構成するには1/30～1/50秒程度のインターバルタイムで受信値をスタックしなければなりません。<br />　ですので、msec(1/1000)クラスの時間評価が必要です。<br /><br />　システムが持つ時間情報を扱うには&lt;time.h&gt;を用い、エポック秒やPOSIX時間などと呼ばれる基準日時(1970年1月1日0時0分0秒（UTC）)からの経過時間(secとnsec)を使うのがよいと思います。有効な精度は10usec程度の様ですが、今現在書いている処理では十分です。これを処理の節目でスタックして経過時間を評価するのですが、年月日時でパラメータが分かれているよりもトータル秒数の方が扱いが簡単です。23時59分59秒の１秒後に0時0分0秒にならないタイマで継続した時間評価をしたいのでこの方がいいと思います。<br />　ただ、スタックする変数のバイト長には気を付けないといけません。secもnsecもそれぞれ4バイト数なので評価をするには8バイト数で考えないといけないからです。64bitOSならint型でも8バイト数なことが多いので問題ありませんが、私はRaspberryPiで32bitOSを使っているのでint型は4バイト数になります。対策には8バイト数である「(unsigned) long long int」型を使います。ちょっとクセがある型なので計算やprintfで注意しないといけませんケドね。<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 電装工芸 〔694文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=484</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=484</guid>
	<category>tegalog</category>
	<pubDate>Tue, 24 Jan 2023 16:02:55 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　オレメモであります。 ]]></title>
	<description><![CDATA[ 　オレメモであります。<br />　参考になりそうな先達のページ<br /><br />● UDP/IP通信全体の参考<br /><a class="url" href="https&#58;//hensa40.cutegirl.jp/archives/780" target="_blank" title="https&#58;//hensa40.cutegirl.jp/archives/780">UDP / IP でパケットの送受信を行う</a><br />● broadcast通信の参考<br /><a class="url" href="https&#58;//www.geekpage.jp/programming/linux-network/broadcast.php" target="_blank" title="https&#58;//www.geekpage.jp/programming/linux-network/broadcast.php">UDPブロードキャスト送信サンプル</a><br />● ネットワークデバイスを指定した通信の参考<br /><a class="url" href="https&#58;//qiita.com/KazumichiShirai/items/969fc588299e0f2c9681" target="_blank" title="https&#58;//qiita.com/KazumichiShirai/items/969fc588299e0f2c9681">Ethernetインターフェース(eth0, eth1)を指定してソケットを作成する (Linux, C, Raspberry Pi)</a> <br />● 受信タイムアウトの参考<br /><a class="url" href="https&#58;//daeudaeu.com/timeout-recv/" target="_blank" title="https&#58;//daeudaeu.com/timeout-recv/">selectを使用してタイムアウト付き受信を実現する</a> &lt;= recvもrecvfromも受信があるまでひたすら待ち続けるので、タイムアウトさせることは必須。<br /><a class="url" href="https&#58;//ryo-n.hatenablog.com/entry/20080125/1201265780" target="_blank" title="https&#58;//ryo-n.hatenablog.com/entry/20080125/1201265780">UDP通信におけるselectの使い方。</a> &lt;= recvの例が多い中、recvfromの書式を確認出来る。recvfromを使う理由は送信元アドレスを取得したいから。<br />● 時間の扱い方<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> &lt;= これの５ページ目の「POSIX環境」が結構大事。DelayをするにもDMXのタイムアウトをするにもこれが必要。<br />● ターミナルの行長と行数を取得する<br /><a class="url" href="https&#58;//zombie-hunting-club.net/archives/300" target="_blank" title="https&#58;//zombie-hunting-club.net/archives/300">ターミナルのサイズを取得する</a><br /><a class="url" href="https&#58;//zenn.dev/kusaremkn/articles/abdbd2f38c3d98b145eb" target="_blank" title="https&#58;//zenn.dev/kusaremkn/articles/abdbd2f38c3d98b145eb">ターミナルの幅と高さを得る</a> <br />● ANSIエスケープシーケンス<br /><a class="url" href="https&#58;//qiita.com/PruneMazui/items/8a023347772620025ad6" target="_blank" title="https&#58;//qiita.com/PruneMazui/items/8a023347772620025ad6">ANSIエスケープシーケンス チートシート</a> <br /><br />　この辺りを参考にすれば「ネットワークデバイスを指定してbroadcastで通信する」が出来そうな気がします。<br />　ただし、１行々々読み込んで使われている構造体をよく把握することが大切です。構造体の中に必要な情報が隠れていることが多いからです。構造体の中に構造体があったりもするので、十分に読み込まないといけません。<br /><br />　実験は受信が当面の課題となり、<br />１）ネットワークデバイスを指定せずArt-Netを受信する。&lt;= とにかく受信する<br />２）ネットワークデバイスを指定してArt-Netを受信する。&lt;= ネットワークデバイスを制限して受信する。<br />３）送信元IPアドレスを取得し、IPアドレスをもとに受信値を振り分ける。&lt;= 複数の送信元(卓)がある場合の不確実性排除とミックス処理のためには不可欠。<br />　といった手順で進めることになろうかと思います。<br />　受信値を確認するため、習作を兼ね、バイナリをダンプ表示をするライブラリも作ってみましょう。<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> <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 電装工芸 〔980文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=483</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=483</guid>
	<category>tegalog</category>
	<pubDate>Tue, 24 Jan 2023 11:34:36 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　RTCを装着したRaspberryPiは正常のようです。 ]]></title>
	<description><![CDATA[ 　RTCを装着したRaspberryPiは正常のようです。<br />　今後製作する装置にもRTCを装着したいのですが、電池切れをどうやって拾うか思案中です。<br /><br />　socketの実験は連休中に時間が取れず未対応です。<br />　Art-Netの受信と送信を１台でこなすにはIPアドレス的には同じゾーンで装置は別という変な構成になります。その上、broadcastで受けてbroadcastで送るというこれもまた変な構成です。ですので、コピペで使える先例がありそうでありません。<br />　RaspberryPiのPythonでは成功していることですから可能だと思いますが、Ｃ言語のsocketの方が設定すべきパラメータが多いため、Pythonには無かった設定をどうするかが難問なのです。難しいというより、「ネットワークデバイスを指定してbroadcastで通信する」という前提の先例が少なく、沢山のデータシートを継ぎハギしないと見えないことが多いために苦心しているところです。<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> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%ef%bc%a3%e8%a8%80%e8%aa%9e" class="taglink" title="Ｃ言語">#Ｃ言語</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 電装工芸 〔455文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=482</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=482</guid>
	<category>tegalog</category>
	<pubDate>Tue, 24 Jan 2023 10:45:23 +0900</pubDate>
</item>

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

