これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.
SetOutputMask
SetOutputMask は, 振動子ごとに出力の有効/無効を切り替えるコマンド.
SetOutputMask { masks: &masks };SetOutputMask(masks)new SetOutputMask(masks);| フィールド | 型 | 説明 |
|---|---|---|
masks |
&[Vec<bool>] |
デバイスごとの出力マスク (true で出力). |
Example
Section titled “Example”use autd3_rs::commands::SetOutputMask;use autd3_rs::geometry::{Autd3, Geometry};use autd3_rs::{Client, ClientConfig};use autd3_rs_link_nop::Nop;
let geometry = Geometry::new(vec![Autd3::default()]);let client = Client::open(&geometry, Nop, ClientConfig::default()).await?;
let masks: Vec<Vec<bool>> = geometry .iter() .map(|dev| vec![true; dev.num_transducers()]) .collect();
let mut builder = client.datagram_builder();builder.push(SetOutputMask { masks: &masks });let frames = builder.build()?;for frame in &frames { client.send_checked(frame).await?;}
client.close().await?;import asyncio
from autd3 import Client, ClientConfigfrom autd3.commands import SetOutputMaskfrom autd3.geometry import Autd3, Geometryfrom autd3_link_nop import Nop
async def main() -> None: geometry = Geometry([Autd3([0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0])]) client = await Client.open(geometry, Nop(), ClientConfig())
masks = [ [True] * geometry.device(i).num_transducers() for i in range(geometry.num_devices()) ]
builder = client.datagram_builder() builder.push(SetOutputMask(masks=masks)) frames = builder.build() for frame in frames: await client.send_checked(frame)
await client.close()
asyncio.run(main())using System.Numerics;using System.Threading.Tasks;using AUTD3;using AUTD3.Link;using Nop = AUTD3.Link.Nop;
var geometry = new Geometry(new[] { new Autd3(Vector3.Zero) });var client = await Client.OpenAsync(geometry, new Nop(), new ClientConfig());
var masks = new bool[geometry.NumDevices][];for (var i = 0; i < geometry.NumDevices; i++){ var count = geometry[i].NumTransducers; masks[i] = new bool[count]; for (var t = 0; t < count; t++) { masks[i][t] = true; }}
var builder = client.DatagramBuilder();builder.Push(new SetOutputMask(masks));var frames = builder.Build();foreach (var frame in frames){ await client.SendCheckedAsync(frame);}
await client.CloseAsync();