全年全月24日の投稿[39件]
2025年6月 この範囲を時系列順で読む この範囲をファイルに出力する
秋口に大規模な花火大会の仕事を請けたと社長の鼻息が荒い。
売り上げは大きいので良いことですが問題はダイムコード。音に合わせて花火を打ち上げるのですが、この音で花を咲かせたいとなれば点火のタイミングは花火の挙動から逆算したところにあります。この対策に今どきの花火師さん達はタイムコード(LTC)を使います。音源のLchに音楽、RchにLTCを入れてそれを制御(点火)のキーにするのです。困ったことに、タイムコード(LTC)を理解してない人が多すぎ。アナログ音声信号としてデジタル信号を構成しているってことを全くわかってない。
差動バイフェーズなので音声信号として-4~4dBで渡せば済むのでハイパス・ローパスフィルタとコンプレッサをかけてノイズ除去をすればいいのですが、その理屈を理解してもらえない。
フィルムにフレームの番地を与えるために発祥した技術ですが、そもそもがわかってないので伝わらない。
伝送方式である差動バイフェーズ(差動マンチェスター)は1980代にパソコンのデータをカセットテープに保存した様式と同じなのですが、デジタルも結局はアナログって思考が無い人にどうやって説明したものでしょう。システムレイヤーって概念がわかれば伝わりやすいことですが思ったより難しいことのようです。
追記
ChatGPT に差動バイフェーズやLTCのことを質問したらとてもわかりすい回答を得られました。
私もLTCについて本体ページに書いていますが、AIにここまでやられたら記事をまとめる必要を感じなくなったりして(笑
#タイムコード
売り上げは大きいので良いことですが問題はダイムコード。音に合わせて花火を打ち上げるのですが、この音で花を咲かせたいとなれば点火のタイミングは花火の挙動から逆算したところにあります。この対策に今どきの花火師さん達はタイムコード(LTC)を使います。音源のLchに音楽、RchにLTCを入れてそれを制御(点火)のキーにするのです。困ったことに、タイムコード(LTC)を理解してない人が多すぎ。アナログ音声信号としてデジタル信号を構成しているってことを全くわかってない。
差動バイフェーズなので音声信号として-4~4dBで渡せば済むのでハイパス・ローパスフィルタとコンプレッサをかけてノイズ除去をすればいいのですが、その理屈を理解してもらえない。
フィルムにフレームの番地を与えるために発祥した技術ですが、そもそもがわかってないので伝わらない。
伝送方式である差動バイフェーズ(差動マンチェスター)は1980代にパソコンのデータをカセットテープに保存した様式と同じなのですが、デジタルも結局はアナログって思考が無い人にどうやって説明したものでしょう。システムレイヤーって概念がわかれば伝わりやすいことですが思ったより難しいことのようです。
追記
ChatGPT に差動バイフェーズやLTCのことを質問したらとてもわかりすい回答を得られました。
私もLTCについて本体ページに書いていますが、AIにここまでやられたら記事をまとめる必要を感じなくなったりして(笑
#タイムコード
RaspberryPi が案外色んなことに対応できるのは GPU のオカゲだそうな。
GPU は画像処理を担うモジュールですが、計算に特化した GPGPU という使い方も出来るらしい。
GPGPU はその昔の FPU と呼ばれた計算チップとは意味が違います。メモリに展開した複数の値に対して同時に計算が出来るらしい。代数計算というかC言語などで言う配列に対してすべての要素を同時に計算するらしい。具体的にどうすれば何が出来るのかはわからないのですが、比較的簡単な計算を同時に沢山出来ると思えばいいらしい。「算数」が全ての私と「数学」を操る方とでは「比較的簡単」の意味は違うと思いますけど、例えば動画の明暗を調整するなんて計算には向いてますよね。すべてのドットに対して輝度を上げたり下げたりするのですから。
この機能は調光卓を作るのに向いてますね。調光卓は沢山の値に一意の値を掛け合わせることをひたすらやっているのです。forループで1個づつ計算するよりメモリ転送の時間はかかっても一斉に計算するなら後者の方が速いかもしれません。
パッチマシンは設定を参照しながら値を並べ直す作業がほとんどですから GPGPU を使ってもあまり意味が無いと思われますが、卓を作るならば GPGPU を使えたらと思ってしまいます。群の数に一定の値を当てて積を得る作業が高速化出来たら作れると思うのです。位相をオフセットした sin などを当てられたらエフェクトエンジンそのものです。
#器具の製作
GPU は画像処理を担うモジュールですが、計算に特化した GPGPU という使い方も出来るらしい。
GPGPU はその昔の FPU と呼ばれた計算チップとは意味が違います。メモリに展開した複数の値に対して同時に計算が出来るらしい。代数計算というかC言語などで言う配列に対してすべての要素を同時に計算するらしい。具体的にどうすれば何が出来るのかはわからないのですが、比較的簡単な計算を同時に沢山出来ると思えばいいらしい。「算数」が全ての私と「数学」を操る方とでは「比較的簡単」の意味は違うと思いますけど、例えば動画の明暗を調整するなんて計算には向いてますよね。すべてのドットに対して輝度を上げたり下げたりするのですから。
この機能は調光卓を作るのに向いてますね。調光卓は沢山の値に一意の値を掛け合わせることをひたすらやっているのです。forループで1個づつ計算するよりメモリ転送の時間はかかっても一斉に計算するなら後者の方が速いかもしれません。
パッチマシンは設定を参照しながら値を並べ直す作業がほとんどですから GPGPU を使ってもあまり意味が無いと思われますが、卓を作るならば GPGPU を使えたらと思ってしまいます。群の数に一定の値を当てて積を得る作業が高速化出来たら作れると思うのです。位相をオフセットした sin などを当てられたらエフェクトエンジンそのものです。
#器具の製作
ChatGPT に Art-Net を受信するC言語のコードを聞いたところ、これまでに勉強したことが簡潔にまとまったコードが出てきました。
欲しいすべてが出て来るワケではありませんが、これはスゲー。
出てきたコードを理解・評価するにはある程度の基礎が必要ですが、細かい質問にも丁寧に答えてくれますし、何よりもヘッダーファイルを読んだり検索しないと理解出来なかったライブラリ関数の使い方も詳しく解りやすく教えてます。Google 検索で先達の成果から学ぶのも大事だと思いますが、AIエージェントを検索と同じ感覚で使うのは効率的だと思った次第。
アプリの製作代行まで求めるには質問の仕方を工夫して課金しなければならないでしょうけど、イメージとしては教科書から求める情報を抜き出してくれる補助ツールとして有効だなって感じ。
追記
他にも重要となる処理を ChatGPT に聞きましたが簡潔でわかりやすいお答え。
先達の書き込みはありがたいものの奇妙な応用を含めた物が多く知りたいことが読み取りにくいことがあります。
シンプルな質問を心がければ AI はとても便利に使えそうです。
#C言語 #AI
欲しいすべてが出て来るワケではありませんが、これはスゲー。
出てきたコードを理解・評価するにはある程度の基礎が必要ですが、細かい質問にも丁寧に答えてくれますし、何よりもヘッダーファイルを読んだり検索しないと理解出来なかったライブラリ関数の使い方も詳しく解りやすく教えてます。Google 検索で先達の成果から学ぶのも大事だと思いますが、AIエージェントを検索と同じ感覚で使うのは効率的だと思った次第。
アプリの製作代行まで求めるには質問の仕方を工夫して課金しなければならないでしょうけど、イメージとしては教科書から求める情報を抜き出してくれる補助ツールとして有効だなって感じ。
追記
他にも重要となる処理を ChatGPT に聞きましたが簡潔でわかりやすいお答え。
先達の書き込みはありがたいものの奇妙な応用を含めた物が多く知りたいことが読み取りにくいことがあります。
シンプルな質問を心がければ AI はとても便利に使えそうです。
#C言語 #AI
2025年4月 この範囲を時系列順で読む この範囲をファイルに出力する
年齢のせいか早寝早起き生活になっています。目覚まし無しでも6時には目がさめます。これから出張って昨日の作業の続きをしようかなと。
昨日、某社の営業さんが来て話していたのですが、彼のご両親は私と同い年とか・・・。
計算すれば何の不思議もないことですが、部下ならともかく、自分の年齢を実感してしまいました。
#雑談
昨日、某社の営業さんが来て話していたのですが、彼のご両親は私と同い年とか・・・。
計算すれば何の不思議もないことですが、部下ならともかく、自分の年齢を実感してしまいました。
#雑談
2025年1月 この範囲を時系列順で読む この範囲をファイルに出力する
Antari F1-FAZER は3歩進んで2歩下がっています。何か別なアプローチは無いかとKUREエンジンコンディショナーをぶち込んでみました。エンジンの内部を洗浄するケミカル品です。キャブレタークリーナーの一種ですが、発泡するので良いかなと選んでみました。
次は今実施している手順ですが、圧送ボトルから溶液を送った途端に大きな焦げカスが数個出てきました。KUREエンジンコンディショナーは正解かもしれません。
● F1-FAZER 焼き付き対策(お試し検証中ネタ)
発煙器の内部に焦げが溜まり発煙が減った場合への対策。
重メンテナンス(通常メンテナンスではない)
1. 本体のサイドパネルを両側外す。
2. リキッドポンプのタブ端子を引き抜く。
3. エアーポンプを外す。底面の止めネジを外し固定パネルをスライドさせるとゴム脚が外れる。逆止弁の先のチューブを引き抜く。電源コネクタを外す。
4. 発煙器のリキッド注入口からチューブを引き抜く。
5. 〜ここまでが下準備
6. 冷えた状態でKUREエンジンコンディショナーを発煙器に注入する。発煙口とリキッド注入口にKUREエンジンコンディショナーのノズルを出来るだけ奥まで差し込んで噴射する。泡が溢れても2-3秒保持する。KUREエンジンコンディショナーは横にしても使える。
7. 電源を投入し予熱する。発煙口の温度が60〜70度(触ってはいられないが数秒なら火傷しない程度)になったら電源を落として20〜30分放置する。
8. 圧送ボトルに洗浄溶液を入れておく。お酢1:エタノール1:精製水3の割合。量は吸い込み具合いで調整する。100mlくらいから試し、概ね2時間で吸える量が目安でしょうか。
9. 圧送ボトルからのチューブを発煙器のリキッド注入口に接続する。
10. 約0.1Mpaのエアーで洗浄溶液を圧送する。
11. 6〜10を繰り返す。
12. 組み上げ直して精製水を500ml吸わせる。洗浄溶液を洗い流す。
追記
イロイロ試したら目詰まりが振り出しに戻りました。外れた焦げカスが詰まったのかな?
ここまでの経緯をイロイロ考えたのですが、リキッド1:エタノール1:精製水2~3を混ぜた溶液を0.1Mpaで与え続けた時が良いカモ!?って感じがしてきました。ケミカル品を吸わせても変化があったり無かったり。リキッド+エタノール+精製水を使った時に変化が大きかった感じがするのです。吸わせてすぐに結果が出るもんぢゃありませんので判断が難しいのですけどね。
追記の追記
なんでかんで、資料整理の作業中に上記の対処をしたのですが、昨日のイイ感じまで戻ってました。
正解かどうかはわかりませんが、しばらくこの線で進めてみましょう。
#器具の修理
次は今実施している手順ですが、圧送ボトルから溶液を送った途端に大きな焦げカスが数個出てきました。KUREエンジンコンディショナーは正解かもしれません。
● F1-FAZER 焼き付き対策(お試し検証中ネタ)
発煙器の内部に焦げが溜まり発煙が減った場合への対策。
重メンテナンス(通常メンテナンスではない)
1. 本体のサイドパネルを両側外す。
2. リキッドポンプのタブ端子を引き抜く。
3. エアーポンプを外す。底面の止めネジを外し固定パネルをスライドさせるとゴム脚が外れる。逆止弁の先のチューブを引き抜く。電源コネクタを外す。
4. 発煙器のリキッド注入口からチューブを引き抜く。
5. 〜ここまでが下準備
6. 冷えた状態でKUREエンジンコンディショナーを発煙器に注入する。発煙口とリキッド注入口にKUREエンジンコンディショナーのノズルを出来るだけ奥まで差し込んで噴射する。泡が溢れても2-3秒保持する。KUREエンジンコンディショナーは横にしても使える。
7. 電源を投入し予熱する。発煙口の温度が60〜70度(触ってはいられないが数秒なら火傷しない程度)になったら電源を落として20〜30分放置する。
8. 圧送ボトルに洗浄溶液を入れておく。お酢1:エタノール1:精製水3の割合。量は吸い込み具合いで調整する。100mlくらいから試し、概ね2時間で吸える量が目安でしょうか。
9. 圧送ボトルからのチューブを発煙器のリキッド注入口に接続する。
10. 約0.1Mpaのエアーで洗浄溶液を圧送する。
11. 6〜10を繰り返す。
12. 組み上げ直して精製水を500ml吸わせる。洗浄溶液を洗い流す。
追記
イロイロ試したら目詰まりが振り出しに戻りました。外れた焦げカスが詰まったのかな?
ここまでの経緯をイロイロ考えたのですが、リキッド1:エタノール1:精製水2~3を混ぜた溶液を0.1Mpaで与え続けた時が良いカモ!?って感じがしてきました。ケミカル品を吸わせても変化があったり無かったり。リキッド+エタノール+精製水を使った時に変化が大きかった感じがするのです。吸わせてすぐに結果が出るもんぢゃありませんので判断が難しいのですけどね。
追記の追記
なんでかんで、資料整理の作業中に上記の対処をしたのですが、昨日のイイ感じまで戻ってました。
正解かどうかはわかりませんが、しばらくこの線で進めてみましょう。
#器具の修理
Antari F1-FAZER のメンテナンスは焦げカスを取り去ることに特化することにしました。
これまでで効果がありそうな方法は、
1)空炊きする。
2)エタノールを混ぜた溶液を用いて脈打ち戻りを行う。
この二つです。
空炊きによって焦げカスを外れやすくし、脈打ち戻りで内部を水流洗浄するのです。エタノールは沸点が78度くらいですので脈打ち戻りが強いようです。
焦げの種類は違う気もしますが、エンジン内部のカーボンを取り去る KURE エンジンコンディショナー も使ってみるつもりです。ひょっとすると焦げカスが外れやすくなるかもしれません。
#器具の修理
これまでで効果がありそうな方法は、
1)空炊きする。
2)エタノールを混ぜた溶液を用いて脈打ち戻りを行う。
この二つです。
空炊きによって焦げカスを外れやすくし、脈打ち戻りで内部を水流洗浄するのです。エタノールは沸点が78度くらいですので脈打ち戻りが強いようです。
焦げの種類は違う気もしますが、エンジン内部のカーボンを取り去る KURE エンジンコンディショナー も使ってみるつもりです。ひょっとすると焦げカスが外れやすくなるかもしれません。
#器具の修理
2024年9月 この範囲を時系列順で読む この範囲をファイルに出力する
本業が忙しく、気分のまま趣味に没頭すると体力が不足して後悔するお年頃。明日の体力を考慮すると本業で一日が終わってしまう哀しい初老。
ネタはあるんすよ、棚上げ済みが特盛。形にしないと記事に出来ません。書き出したら50件くらいあった。
あぁ神様仏様、私に体力をください。
願い事を書いた短冊を紅葉したモミジの枝に吊るしたら白縁取りの赤服を着た先輩が年末に体力をプレゼントしてくれるかな?かな!!
「体力」と書かれたお札が入ったお年玉袋はいらない。。。
目玉を一つにはできませんケド、自慢のツルツル頭を赤く染めて角付けたら体力3倍になんねーかなぁ。
図面描いて切って削ってくっつけてソースコード書いてお腹いっぱいになりたいのだ!!
そうだ、若返りの薬を作ればいいのだ!わがはいは天才!!!
あぁ~~~
#雑記
ネタはあるんすよ、棚上げ済みが特盛。形にしないと記事に出来ません。書き出したら50件くらいあった。
あぁ神様仏様、私に体力をください。
願い事を書いた短冊を紅葉したモミジの枝に吊るしたら白縁取りの赤服を着た先輩が年末に体力をプレゼントしてくれるかな?かな!!
「体力」と書かれたお札が入ったお年玉袋はいらない。。。
目玉を一つにはできませんケド、自慢のツルツル頭を赤く染めて角付けたら体力3倍になんねーかなぁ。
図面描いて切って削ってくっつけてソースコード書いてお腹いっぱいになりたいのだ!!
そうだ、若返りの薬を作ればいいのだ!わがはいは天才!!!
あぁ~~~
#雑記
2024年8月 この範囲を時系列順で読む この範囲をファイルに出力する
「自分を修理しよう!『指圧の世界』へようこそ!?」です。
ピップ・エレキバンを貼ると弱い指圧を長時間されている感じで、リアルな指圧をグリグリするような負荷は無いのですが、それでも2-3日の使用は負担になる感じです。今回は磁力の強い「ピップエレキバンMAX200」を使いましたが、目的の部位が皮膚に近く細い場合は標準タイプでいいのかもしれません。今日は外して様子をみていますが、次は標準タイプを試してみます。
#自分を修理しよう!『指圧の世界』へようこそ!?
ピップ・エレキバンを貼ると弱い指圧を長時間されている感じで、リアルな指圧をグリグリするような負荷は無いのですが、それでも2-3日の使用は負担になる感じです。今回は磁力の強い「ピップエレキバンMAX200」を使いましたが、目的の部位が皮膚に近く細い場合は標準タイプでいいのかもしれません。今日は外して様子をみていますが、次は標準タイプを試してみます。
#自分を修理しよう!『指圧の世界』へようこそ!?
2024年5月 この範囲を時系列順で読む この範囲をファイルに出力する
eth0 と eth1 に Art-Net のIPアドレスを設定する bashスクリプトです。
体裁の都合でタブ下げを全角空白にしています。パクってくださる方はテキストエディタなりで全角空白を削除するか半角空白に変換してください。utf-8でも全角空白はエラーの元です。
Art-Net の OEMコードを取っていませんので、0x29DA を勝手に使ってます。身近な器具で使われていないのと「肉だ」の語呂です。製品化する際には OEMコードを取得します。
set_artnet_ipaddress_eth0eth1.sh
// RaspberryPi:4B
// OS:RaspberryPiOS(bookworm) 32bit-Lite
// パーミッション:755
// bashスクリプトですのでファイルに実行権限を与え、Sudo で実行してください。
#!/bin/bash
# 定数定義
OEM_CODE_H=41 # Art-NetのOEMコードの上位バイト10進数で表記
OEM_CODE_L=218 # Art-NetのOEMコードの下位バイト10進数で表記 仮に0x29DA Oem_hdl_dmxnode8_1 HDL
NETWORK_SWITCH=2 # NetworkSwitch/ON=2,OFF=10
ETH0_NAME="artnet-in-eth0"
ETH1_NAME="artnet-out-eth1"
# 必要なファイル、コマンドの有無を確認
# bcコマンド
if !(type "bc" > /dev/null 2>&1); then
/usr/bin/echo "[Art-Net] Please Install the bc command."
exit
fi
## ipアドレス設定
ETH_NAME=$ETH0_NAME
for (( i=0; i<2; i++ )); do
## ethの有無を確認
P_eth=$(/usr/sbin/ifconfig | /usr/bin/grep eth$i)
if [ -z "$P_eth" ]; then
/usr/bin/echo "[Art-Net] eth"$i" does not exist"
exit
fi
## ethのMACアドレスを変数に格納する
MAC_ADDR_eth=$(/usr/bin/cat `find /sys/devices/ -name eth$i`/address)
## MACアドレスの有無を確認し、あればIPアドレスの設定を実行
if [ -n "$MAC_ADDR_eth" ]; then
# ethのIPアドレス作成
# 区切り文字「:」で配列変数化
MAC_eth=(${MAC_ADDR_eth//:/ })
# 16進数の文字列を数値に変換する
MAC_eth_4=$((16#${MAC_eth[3]}))
MAC_eth_5=$((16#${MAC_eth[4]}))
MAC_eth_6=$((16#${MAC_eth[5]}))
# Art-NetのIPアドレスを計算
ArtNet_IP_eth_1=$NETWORK_SWITCH
ArtNet_IP_eth_2=$(((MAC_eth_4 + OEM_CODE_H + OEM_CODE_L) % 256))
ArtNet_IP_eth_3=$MAC_eth_5
ArtNet_IP_eth_4=$MAC_eth_6
ArtNet_IP_eth=$ArtNet_IP_eth_1"."$ArtNet_IP_eth_2"."$ArtNet_IP_eth_3"."$ArtNet_IP_eth_4
/usr/bin/echo "[Art-Net] "$ETH_NAME" is "$ArtNet_IP_eth
# NetworkManager設定ファイルの有無確認
if [ ! -e "/etc/NetworkManager/system-connections/"$ETH_NAME".nmconnection" ]; then
# 設定ファイルが無いので新規設定し有効化
/usr/bin/nmcli connection add con-name $ETH_NAME type ethernet ifname eth$i connection.autoconnect yes ipv4.addresses $ArtNet_IP_eth"/8" ipv4.method manual ipv4.never-default no ipv6.method disabled >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
else
# 設定ファイルがある IPアドレスが違うなら更新
# 現在のIPアドレスを取得
Current_IP_eth=$(/usr/bin/ip -f inet -o addr show eth$i|cut -d\ -f 7 | cut -d/ -f 1)
# 現在のIPアドレスがArt-NetのIPアドレスと違うなら更新
if [ "$Current_IP_eth" != "$ArtNet_IP_eth" ]; then
/usr/bin/nmcli c modify $ETH_NAME ipv4.address $ArtNet_IP_eth"/8"
/usr/bin/nmcli c down $ETH_NAME >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
/usr/bin/echo "[Art-Net] Updated eth"$i" IP address."
else
# IPアドレスが同じなので何もしない
/usr/bin/echo "[Art-Net] eth"$i" does not need to be changed."
fi
fi
else
# MACアドレスを取得出来ません
/usr/bin/echo "[Art-Net] Unable to obtain IP address for eth"$i"."
fi
## eth1に切換え
ETH_NAME=$ETH1_NAME
## for 折り返し
done
手直ししたコードに差し替えました。
下手糞コードは勘弁してください。。。
スマホで表示すると表示が崩れますが原因は不明です。
#[Art-Net]
体裁の都合でタブ下げを全角空白にしています。パクってくださる方はテキストエディタなりで全角空白を削除するか半角空白に変換してください。utf-8でも全角空白はエラーの元です。
Art-Net の OEMコードを取っていませんので、0x29DA を勝手に使ってます。身近な器具で使われていないのと「肉だ」の語呂です。製品化する際には OEMコードを取得します。
set_artnet_ipaddress_eth0eth1.sh
// RaspberryPi:4B
// OS:RaspberryPiOS(bookworm) 32bit-Lite
// パーミッション:755
// bashスクリプトですのでファイルに実行権限を与え、Sudo で実行してください。
#!/bin/bash
# 定数定義
OEM_CODE_H=41 # Art-NetのOEMコードの上位バイト10進数で表記
OEM_CODE_L=218 # Art-NetのOEMコードの下位バイト10進数で表記 仮に0x29DA Oem_hdl_dmxnode8_1 HDL
NETWORK_SWITCH=2 # NetworkSwitch/ON=2,OFF=10
ETH0_NAME="artnet-in-eth0"
ETH1_NAME="artnet-out-eth1"
# 必要なファイル、コマンドの有無を確認
# bcコマンド
if !(type "bc" > /dev/null 2>&1); then
/usr/bin/echo "[Art-Net] Please Install the bc command."
exit
fi
## ipアドレス設定
ETH_NAME=$ETH0_NAME
for (( i=0; i<2; i++ )); do
## ethの有無を確認
P_eth=$(/usr/sbin/ifconfig | /usr/bin/grep eth$i)
if [ -z "$P_eth" ]; then
/usr/bin/echo "[Art-Net] eth"$i" does not exist"
exit
fi
## ethのMACアドレスを変数に格納する
MAC_ADDR_eth=$(/usr/bin/cat `find /sys/devices/ -name eth$i`/address)
## MACアドレスの有無を確認し、あればIPアドレスの設定を実行
if [ -n "$MAC_ADDR_eth" ]; then
# ethのIPアドレス作成
# 区切り文字「:」で配列変数化
MAC_eth=(${MAC_ADDR_eth//:/ })
# 16進数の文字列を数値に変換する
MAC_eth_4=$((16#${MAC_eth[3]}))
MAC_eth_5=$((16#${MAC_eth[4]}))
MAC_eth_6=$((16#${MAC_eth[5]}))
# Art-NetのIPアドレスを計算
ArtNet_IP_eth_1=$NETWORK_SWITCH
ArtNet_IP_eth_2=$(((MAC_eth_4 + OEM_CODE_H + OEM_CODE_L) % 256))
ArtNet_IP_eth_3=$MAC_eth_5
ArtNet_IP_eth_4=$MAC_eth_6
ArtNet_IP_eth=$ArtNet_IP_eth_1"."$ArtNet_IP_eth_2"."$ArtNet_IP_eth_3"."$ArtNet_IP_eth_4
/usr/bin/echo "[Art-Net] "$ETH_NAME" is "$ArtNet_IP_eth
# NetworkManager設定ファイルの有無確認
if [ ! -e "/etc/NetworkManager/system-connections/"$ETH_NAME".nmconnection" ]; then
# 設定ファイルが無いので新規設定し有効化
/usr/bin/nmcli connection add con-name $ETH_NAME type ethernet ifname eth$i connection.autoconnect yes ipv4.addresses $ArtNet_IP_eth"/8" ipv4.method manual ipv4.never-default no ipv6.method disabled >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
else
# 設定ファイルがある IPアドレスが違うなら更新
# 現在のIPアドレスを取得
Current_IP_eth=$(/usr/bin/ip -f inet -o addr show eth$i|cut -d\ -f 7 | cut -d/ -f 1)
# 現在のIPアドレスがArt-NetのIPアドレスと違うなら更新
if [ "$Current_IP_eth" != "$ArtNet_IP_eth" ]; then
/usr/bin/nmcli c modify $ETH_NAME ipv4.address $ArtNet_IP_eth"/8"
/usr/bin/nmcli c down $ETH_NAME >> /dev/null
/usr/bin/nmcli c reload
/usr/bin/nmcli c up $ETH_NAME >> /dev/null
/usr/bin/echo "[Art-Net] Updated eth"$i" IP address."
else
# IPアドレスが同じなので何もしない
/usr/bin/echo "[Art-Net] eth"$i" does not need to be changed."
fi
fi
else
# MACアドレスを取得出来ません
/usr/bin/echo "[Art-Net] Unable to obtain IP address for eth"$i"."
fi
## eth1に切換え
ETH_NAME=$ETH1_NAME
## for 折り返し
done
手直ししたコードに差し替えました。
下手糞コードは勘弁してください。。。
スマホで表示すると表示が崩れますが原因は不明です。
#[Art-Net]
資料映像のレンダリング中に Art-Net の IPアドレスを設定する Bashスクリプトを書いてみました。
実機は自宅ですが ssh で遠隔操作が出来ます。
dhcpcd.conf の書き換えを NetworkManager のコマンドに置き換えるだけですので難しくはありません。
とりあえず本体プログラムを書くための準備は終わりました。
#[Art-Net]
実機は自宅ですが ssh で遠隔操作が出来ます。
dhcpcd.conf の書き換えを NetworkManager のコマンドに置き換えるだけですので難しくはありません。
とりあえず本体プログラムを書くための準備は終わりました。
#[Art-Net]