No.1057
ArtNetPatch は一時スタックに格納した後にどう処理するかが課題です。
一定以上の処理速度を確保しなければなりません。DMX512 は最大44fps ですので1フェーズあたり23msec.以下で動かす必要があります。4卓、各8ユニバースと想定するなら、受信1パケットあたりの総処理時間を710usec.以下にしなければなりません。RaspberryPi でも一時スタックに格納するまでの所要時間は150usec.くらいかと予想しますが、全体の処理が納まるかは感覚として微妙です。
Delay の扱いをどうするが鍵です。Delay を構成するには FIFO と呼ばれるループ型のスタックを使いますが、Art-Net を受信する度に FIFO に持って行くか、一旦一時スタックに留めて一定間隔で FIFO に持って行くか悩んでいます。前者ならソースコードは簡単ですがパケットの受信時刻を評価する回数が多く重くなり、後者ならソースコードが複雑になりますがスタックポインタの現在値からの単純なオフセットで処理出来るので軽くなります。簡単で重いか、複雑で軽いか、この両者の良し悪しは簡単には決められません。
後工程を考えずに前工程を決めてしまうと難儀することがあるので、工程全体をある程度イメージしてから進めなければなりません。
#[Art-Net]
一定以上の処理速度を確保しなければなりません。DMX512 は最大44fps ですので1フェーズあたり23msec.以下で動かす必要があります。4卓、各8ユニバースと想定するなら、受信1パケットあたりの総処理時間を710usec.以下にしなければなりません。RaspberryPi でも一時スタックに格納するまでの所要時間は150usec.くらいかと予想しますが、全体の処理が納まるかは感覚として微妙です。
Delay の扱いをどうするが鍵です。Delay を構成するには FIFO と呼ばれるループ型のスタックを使いますが、Art-Net を受信する度に FIFO に持って行くか、一旦一時スタックに留めて一定間隔で FIFO に持って行くか悩んでいます。前者ならソースコードは簡単ですがパケットの受信時刻を評価する回数が多く重くなり、後者ならソースコードが複雑になりますがスタックポインタの現在値からの単純なオフセットで処理出来るので軽くなります。簡単で重いか、複雑で軽いか、この両者の良し悪しは簡単には決められません。
後工程を考えずに前工程を決めてしまうと難儀することがあるので、工程全体をある程度イメージしてから進めなければなりません。
#[Art-Net]