コンテンツにスキップ

ActivatePatternBank

ActivatePatternBank は, 再生対象の Pattern バンクを有効化する低レベルコマンド.

ActivatePatternBank {
bank,
transition_mode,
};
フィールド 型 説明
bank PatternBank 切り替え先バンク
transition_mode TransitionMode 切り替え時の挙動
Immediate 即時
SyncIdx 次に再生インデックスが0になった時
SysTime { time } 指定した デバイス時刻 time (SysTime)
Gpio(GpioIn) 指定 GPIO 入力ピンのトリガ
Ext 拡張モード (バンク内の再生が終わると次のバンクに自動で切り替え)
use core::num::NonZeroU16;
use autd3_rs::commands::{
ActivatePatternBank, Clear, ConfigPattern, Synchronize, WritePatternBuffer,
};
use autd3_rs::geometry::{Autd3, Geometry, offset};
use autd3_rs::units::{m, mm, s};
use autd3_rs::value::{Intensity, LoopBehavior, PatternBank, SamplingConfig, TransitionMode};
use autd3_rs::Client;
use autd3_rs::udp::TransportOption;
use autd3_rs_pattern::{focus, wavelength};
let geometry = Geometry::new(vec![Autd3::default()]);
let option = TransportOption::default();
let mut client = Client::open(&geometry, &option).await?;
client.send(Clear).await?;
client.send(Synchronize).await?;
let mut phases = geometry.phase_buffer();
focus(
&geometry,
geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm),
wavelength(340.0 * m / s),
&mut phases,
);
let bank = PatternBank::B0;
client
.send(WritePatternBuffer::new(bank, 0, &[phases], Intensity::MAX))
.await?;
client.send(ConfigPattern {
bank,
config: SamplingConfig::new(NonZeroU16::MAX),
size: 1,
loop_behavior: LoopBehavior::Infinite,
}).await?;
client.send(ActivatePatternBank {
bank,
transition_mode: TransitionMode::Immediate,
}).await?;