"シリアル" (RS-232 / RS-422シリアルプロトコル)
"Serial"は,RS-232およびRS-422のプロトコルを通して,シリアル通信の汎用インターフェースを提供する.
シリアル通信は通常,Unixベースのシステムでは/dev/ttyXXデバイスを通して,WindowsベースのシステムではCOMポートを通して,使用することができる.
シリアル通信は,UARTを使ってハードウェアに実装されることが多い.
シリアルポートの物理コネクタとしては,D-sub25ピンコネクタとDE-9 9ピンコネクタが含まれる.
シリアル通信は,USB,Bluetooth(ブルートゥース)等を通じて行われることが多い.
デバイスを開く
- 以下のオプションを使用することができる.
-
"BaudRate" 9600 データ転送速度(単位:ビット/秒) "DataBits" 8 各フレームに使用するデータビットの数 "Handshake" None フロー制御ハンドシェイクプロトコル "IgnoreBreak" False ブレークを無視するかどうか "Parity" None パリティビットの設定 "ReadBufferSize" 4096 読込みバッファのバイトサイズ "StopBits" None 使用するストップビットの数 - 典型的な通信速度は,4800,9600,19200,38400,57600,115200,230400である.
- "DataBits"は,データを転送するのに使われる各バイトにおけるビット数を返す.可能な値は,5,6,7,8,9である.
- フロー制御ハンドシェイクプロトコル"Handshake"で可能な値は, None,"RTS","XOnXOff"である.
- パリティビットがどのように設定されるかを指定する"Parity"の値には,None,"Even","Odd","Mark","Space"のいずれかが可能である.
- "StopBits"は,データフレームを分けるのに使われるビットの数を与える.可能な値は,None,1,1.5,2である.
DeviceOpen["Serial"]
デフォルトのシリアルポートを開く.
DeviceOpen["Serial",name]
指定された名前のシリアルポートを開く.Unixベースのシステムで一般的な名前は,"/dev/ttyXX"あるいは"/dev/tty.usbserialXX"であり,Windowsでは"COM1","COM2"等である.
DeviceOpen["Serial",{name,opts}]
指定されたオプションでデフォルトのシリアルポートを開く.
デバイスの設定
- 設定は必要ない.シリアル接続のパラメータを設定する場合は,DeviceOpenを使う.
データの読取り
- DeviceReadLatest,DeviceReadTimeSeries等のWolfram言語関数もサポートされている.
- Wolfram言語では,バイトはその整数値で表される.
- バイトのリストは,FromCharacterCodeを使って文字列に変換することができる.
- "ReadTerminator"の設定は,単一のバイトでも文字でもよい.
- 読み取るデータがない場合には,事前設定時間の10秒を越えると,読取り関数はタイムアウトする.
DeviceRead[dev]
シリアル接続から単一バイトを読み取り,整数値を返す.
DeviceRead[dev,"String"]
シリアル接続から単一文字を読み取り,その文字を文字列として返す.
DeviceReadBuffer[dev]
シリアル接続バッファで使用できるすべてのバイトを読み取り,整数のリストを返す.
DeviceReadBuffer[dev,n]
シリアル接続バッファ内の最近の n 個のバイトを読み取る.
DeviceReadBuffer[dev,"ReadTerminator"->term]
シリアルポートバッファから,ターミネータ term までバイトを読み取る.
データの書込み
- DeviceWriteBuffer等のWolfram言語関数もサポートされている.
- バイトは,0から255までの整数として,あるいは単一文字のASCII文字列として指定することができる.
DeviceWrite[dev,b]
バイト b をシリアル接続に書き込む.
DeviceWrite[dev,{b1,b2,…}]
バイト bi のリストをシリアル接続に書き込む.
DeviceWrite[dev,"string"]
文字列内のバイトをシリアル接続に書き込む.
コマンドの実行
- "SerialReadyQ"コマンドを使うと,シリアル接続からの読取りをブロックできるかどうかをチェックすることができる.
DeviceExecute[dev,"ReadFlush"]
読み取り,バッファされた任意のデータをフラッシュする.
DeviceExecute[dev,"SerialReadyQ"]
リソースの終了と解放
DeviceClose[dev]
シリアル接続を閉じて,関連リソースを解放する.