CheckDMXCollision(handle, string[, integer[, integer]])

grandMA3 ユーザマニュアル » プラグイン » Lua 関数 - Object-Free API » CheckDMXCollision(handle, string[, integer[, integer]]) Version 2.0

説明

CheckDMXCollision 関数は、特定のDMXアドレス範囲が利用可能か、またはすでに利用されているかを確認します。

これは、フィクスチャタイプの特定の「DMXモード」のDMXチャネル数を用いて、指定されたDMX開始アドレスから利用できるDMXチャネルの数を計算します。

すべてのフィクスチャタイプには少なくとも1つのDMXモードが定義されていますが、複数のモードを持つフィクスチャも多くあります。この Lua 関数は、フィクスチャタイプの特定のDMXモードを使用します。

引数

  • handle:
    DMXモードに対するハンドルです。範囲内で利用可能なDMXチャネル数を計算するために用いられます。
  • string:
    文字列で表現されたDMXアドレスです。チェック範囲の始まりを指定します。
  • integer (オプション)|nil:
    このオプションの整数値は、チェックすべき後続のDMXモードの数です。デフォルト値は 1 です。
    例えば、指定されたDMXモードのDMXチャネル数が10で、カウントが5に設定されている場合、肯定的な結果を得るには、開始アドレスから50のパッチされていないDMXチャネルがなければなりません。
  • integer (オプション):
    このオプションの整数値は、ブレークインデックスを示します。デフォルト値は 0 で、DMXモードで定義された最初のDMXブレークです。すべてのフィクスチャタイプには、少なくとも1つのDMXブレークが定義されています。

戻り値

  • boolean:
    以下の boolean 値を返します。
    • true:
      DMXアドレスは開始アドレスとして使用できます。
    • false:
      DMXアドレスは、計算されたDMXチャネル数の開始アドレスとして使用できません。

現在選択されている最初のフィクスチャのDMXモードに基づいて、DMXアドレス 1.001 に対するDMX競合チェックの結果を出力します。

Lua
return function()
-- Set the DMX universe - range 1-1024.
local myDMXUniverse = 1
-- Set the DMX address in the universe - range 1-512.
local myDMXAddress = 1
-- Set the optional count for the number of fixtures (break_index channel amount) to check.
local myCount = 1
-- Set the optional break_index number for fixtures with multiple breaks.
-- Default value is 0 to indicate the first break.
local myBreakIndex = 0

-- Creates the string used for the DMX address.
local startOfRange = string.format("%d.%03d", myDMXUniverse, myDMXAddress)

-- Check if there is a selection and exit if there isn't.
if SelectionFirst() == nil then
Printf("Please make a selection and try again.")
return
end
-- This gets the handle for the first fixture a patched generic Dimmers 8-bit mode.
local myDmxMode = GetSubfixture(SelectionFirst()).ModeDirect

if myDmxMode == nil then
-- Exit the function if the DMX mode returns nil.

else
-- Do the actual collision check and provide useful feedback.
if CheckDMXCollision(myDmxMode, startOfRange, myCount, myBreakIndex) then
Printf("The DMX address " .. startOfRange .. " is available.")
return
else
Printf("The DMX address " .. startOfRange .. " cannot be used as a start address for this patch.")
return
end
end
end