API > Peripheral


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

このページでは Peripheral API について解説する。

参考資料:
執筆時のバージョン:
  • ComputerCraft 1.56 for Minecraft 1.6.2




Peripheral API

周辺機器の各機能を使用するためのAPI。

コンピュータと周辺機器の間で行われる「対話」には、「メソッド」の呼び出しと「イベント」の発生の2種類がある。

「メソッド」とは周辺機器が持っている様々な関数である。メソッドをコンピュータ側から呼び出すことによって、周辺機器から結果を得たり、周辺機器を操作したりすることができる。一方、「イベント」は周辺機器が特定の条件を満たしたときに、周辺機器側からコンピュータへ送られるメッセージである。発生したイベントは能動的に取得する必要があり、コンピュータ側でos.pullEvent()を呼び出すことによって取得できる。

Peripheral APIは、周辺機器の「メソッド」を呼び出して周辺機器から結果を得、あるいは周辺機器の働きをコントロールするための関数群である。

周辺機器を指定する引数について

【1.51-】
周辺機器は引数nameで指定する。
ComputerやTurtleに隣接して設置されている周辺機器は「方向」(つまりCC1.5以前のコードもそのまま使える)を、Networking Cable経由で接続している周辺機器は自動で割り当てられる「名前」を使う。指定可能な方向や名前はperipheral.getNames()で取得できる。

※方向は、前なら"front"、後ろなら"back"、左なら"left"、右なら"right"、上なら"top"、下なら"bottom"を指定する(以下同様)。

【-1.5】
このページではnameとなっている所をsideと読み替えて使用する。ComputerやTurtleに隣接して設置されている周辺機器の「方向」で指定。

getNames

【1.51-】
  • peripheral.getNames()
  • 接続されている周辺機器の方向・名前を取得する
  • 戻り値:テーブル型。テーブルのキーは1~の整数(数値)、値は周辺機器の方向・名前(文字列)

例:
for n,v in ipairs( peripheral.getNames() ) do
  print(v)
end
接続されている全ての周辺機器の名前を表示する。

isPresent

  • peripheral.isPresent( name )
  • 【1.51-】name(文字列)という周辺機器が存在するかを調べる
  • 戻り値:ブーリアン型。周辺機器が存在するならtrue、しないならfalse

例:
print( peripheral.isPresent( "right" ) )
右方向に周辺機器があるかを調べ、結果を表示する。
(周辺機器が存在するなら"true"、しないなら"false"が表示される。)

getType

  • peripheral.getType( name )
  • 【1.51-】name(文字列)という周辺機器の種類を調べる
  • 戻り値:文字列型。周辺機器が存在しない場合はnilが返る

周辺機器と戻り値
周辺機器 戻り値
Computer,
Advanced Computer
"computer"
Turtle,
Advanced Turtle
"turtle"
Disk Drive "drive"
Monitor,
Advanced Monitor
"monitor"
Wireless Modem,
Wired Modem
"modem"
Crafty Turtle の作業台 "workbench"
Printer "printer"
Command Block "command"
追加で周辺機器MODを導入している場合は各周辺機器独自の文字列が返る場合もある。

getMethods

  • peripheral.getMethods( name )
  • 【1.51-】name(文字列)という周辺機器のメソッド名リストを取得する
  • 戻り値:テーブル型。テーブルのキーは1~の整数(数値)、値はメソッド名(文字列)。失敗時はnil

例:
for i,v in ipairs( peripheral.getMethods( "right" ) ) do
  print(i .. ". " .. v)
end
右側にある周辺機器のメソッド名リストを取得し、リストの番号とメソッド名を表示する。

call

  • peripheral.call( name , method [, ... ] )
  • 【1.51-】name(文字列)という周辺機器のメソッドmethod(文字列)を呼び出す。引数の3番目以降でメソッドに渡される引数を指定できる
  • 戻り値:呼び出したメソッドによる。失敗時はnil

methodは文字列であることに注意。

例:
peripheral.call("right", "clear")
右側の周辺機器(モニター)のclearメソッドを呼び出す。

wrap

  • peripheral.wrap( name )
  • 【1.51-】name(文字列)という周辺機器の各メソッドを呼び出すperipheral.call関数のテーブルを取得する
  • 戻り値:テーブル型。テーブルのキーはメソッド名(文字列)、値はメソッド(関数)。失敗時はnil

m = peripheral.wrap( side )
m.method()
は、
peripheral.call( side , "method") 
そのものである。
なぜならば、peripheral.wrap()によって、
-- bios.lua の peripheral.wrap = function( _sSide ) の一部
local tMethods = peripheral.getMethods( _sSide )
local tResult = {}
for n,sMethod in ipairs( tMethods ) do
  tResult[sMethod] = function( ... )
    return peripheral.call( _sSide, sMethod, ... )
  end
end
return tResult
のようなことが行われているからである 。
戻り値は、引数で指定したnameという名前(または方向)の、取得した時点で接続されていた周辺機器と同タイプのものに対して有効。

例:
local handle = peripheral.wrap("right")
handle.shutdown()
右側の周辺機器(コンピュータかタートル)のメソッドのテーブルを取得し、shutdownを呼び出す。

周辺機器のメソッド

Computer/Turtle

メソッド 引数 戻り値 解説
turnOn nil コンピュータ/タートルを起動する
shutdown nil コンピュータ/タートルを終了する
reboot nil コンピュータ/タートルを再起動する
getID 数値型 コンピュータ/タートルのIDを取得する

Disk Drive

Disk API も参照のこと。
メソッド 引数 戻り値 解説
isPresent ブーリアン型 ドライブにアイテムがセットされているか調べる。あればtrue、なければfalse
hasData ブーリアン型 ドライブにフロッピーディスクがセットされているか調べる。あればtrue、なければfalse
getMountPath 文字列型 ドライブにあるフロッピーディスクのパスを取得する
setDiskLabel title nil ドライブにあるフロッピーディスクにタイトルtitle(文字列)を設定する
getDiskLabel 文字列型 ドライブにあるフロッピーディスクやレコードのタイトルを取得する
getDiskID 数値型 ドライブにあるフロッピーディスクのIDを取得する。
まだIDの無いフロッピーディスクには新しいIDを割り振る
hasAudio ブーリアン型 ドライブにレコードがセットされているか調べる。あればtrue、なければfalse
getAudioTitle 文字列型 ドライブにあるレコードのタイトルを取得する
playAudio nil ドライブにあるレコードを再生する
stopAudio nil ドライブにあるレコードを停止する
eject nil ドライブにあるアイテムを取り出す

Monitor

Term API も参照のこと。
メソッド 引数 戻り値 解説
write text nil カーソル位置からtext(文字列)を表示させる
scroll line nil 画面をline(数値)だけスクロールさせる
setCursorPos x , y nil カーソルを(x , y)(数値)に移動する。左上は(1, 1)
getCursorPos 数値型 x, 数値型 y カーソルの位置(x, y)を取得する
getSize 数値型 x, 数値型 y モニターのサイズ(x, y)を取得する
setCursorBlink b nil カーソルのブリンクを有効(b(ブーリアン)がtrue)、または無効(同false)にする
clear nil モニターをクリアする。カーソル位置は変わらない
clearLine nil カーソルのある行をクリアする。カーソル位置は変わらない
setTextScale scale nil 文字の表示倍率をscale(数値)に設定する。scaleは0.5~5.0の0.5刻みの実数。
フォントサイズ(高さ:幅)は (18:12) * scale [px]。
その時点で表示されている文字のサイズも変わる
isColor ブーリアン型 【1.45-】カラー表示に対応しているかを返す。Advanced Monitorならtrue。
isColour(イギリス綴り)でも可
setTextColor color nil 【1.45-】文字色を color(数値、ColorsAPI色定数)に変更する。
setTextColour(イギリス綴り)でも可
setBackgroundColor color nil 【1.45-】文字の背景色を color(数値、ColorsAPI色定数)に変更する。
setBackgroundColour(イギリス綴り)でも可

Wireless Modem/Wired Moddem

【1.5-】
メソッド 引数 戻り値 解説
open channel nil チャンネルchannel(数値、0~65535の整数、以下同様)からの通信を受信可能な状態にする
isOpen channel ブーリアン型 channelからの通信を受信可能な状態かを返す
close channel nil channelからの通信を受信不可能な状態にする
closeAll nil 全てのチャンネルからの通信を受信不可能な状態にする
transmit channel, senderChannel, message nil channelmessage(文字列)を送信する。senderChannelは受信側に伝える送信者へ返送するためのチャンネル
isWireless ブーリアン型 【1.51-】無線通信に対応しているか。Wireless Modemならtrue、Wired Modemならfalse。
isPresentRemote name ブーリアン型 【1.51-】Wired Modem専用
ネットワーク内にname(文字列)という名前の周辺機器があるならtrue、それ以外はfalse。
getTypeRemote name 文字列型 【1.51-】Wired Modem専用
ネットワーク内の周辺機器name(文字列)の種類を取得する。
getMethodsRemote name テーブル型 【1.51-】Wired Modem専用
ネットワーク内の周辺機器name(文字列)のメソッド名リストを取得する。
callRemote name, method[, ...] メソッドの戻り値の型 【1.51-】Wired Modem専用
ネットワーク内の周辺機器name(文字列)のメソッドmethod(文字列)を(引数...で)呼び出す。
※-Remote系メソッドはWired Modem専用で、ケーブルネットワーク内の周辺機器を操作できる。ただし、Peripheral APIの各関数で代用可能なので通常は呼び出す必要がない。

Wireless Modem【-1.481】

メソッド 引数 戻り値 解説
open Rednet API
close
send
broadcast

Workbench

【1.4-】Crafty Turtle の作業台。
メソッド 引数 戻り値 解説
craft turtle.craft

Printer

【1.42-】
メソッド 引数 戻り値 解説
newPage ブーリアン型 ページの印刷を開始する。成否が返る。
用紙トレイの用紙とインクスロットの染料が消費され、文字色が決まる
endPage ブーリアン型 ページの印刷を終了する。成否が返る。印刷されたページが排出トレイに排出される
write text nil カーソル位置からtext(文字列)を印刷させる
setCursorPos x , y nil カーソルを(x , y)(数値)に移動する。左上は(1, 1)
getCursorPos 数値型 x, 数値型 y カーソルの位置(x, y)を取得する
getPageSize 数値型 x, 数値型 y ページの最大サイズ(x, y)を取得する
setPageTitle title nil 印刷中のページにタイトルtitle(文字列)を設定する
getInkLevel 数値型 インクスロットにある染料の数を返す
getPaperLevel 数値型 用紙トレイにある印刷可能な紙の数を返す

Command Block

【1.48-】バニラのコマンドブロックをコンピュータから操作することができる。
利用するにはComputerCraft.cfgのenableCommandBlockをtrueにする必要がある。
メソッド 引数 戻り値 解説
getCommand 文字列型 コマンドブロックに設定されているコマンドを取得する
setCommand command nil コマンドブロックにコマンドとしてcommand(文字列)を設定する
runCommand nil コマンドブロックのコマンドを実行する