これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.14.x を参照.
ConfigPattern
ConfigPattern は, Pattern バンクの再生パラメータを設定する低レベルコマンド.
設定は書き込まれるだけで, 有効化するには ActivatePatternBank を送る.
ConfigPattern { bank, config, size, loop_behavior,};ConfigPattern( bank=bank, config=config, size=size, loop_behavior=loop_behavior,)new ConfigPattern( bank: bank, config: config, size: size, loopBehavior: loopBehavior);| フィールド | 型 | 説明 |
|---|---|---|
bank |
PatternBank |
対象バンク |
config |
SamplingConfig |
再生サンプリング周波数 |
size |
usize |
バンク内のサンプル数. 静的 Pattern は 1 |
loop_behavior |
LoopBehavior |
再生ループ回数 (Infinite / Finite) |
loop_behavior は, ActivatePatternBank で現在と異なるバンクへ切り替えたときのみ作用する.
size = 1 (静的 Pattern) は loop_behavior = Infinite のときのみ有効.
有限ループを使う場合は size を 2 以上にする.
Example
Section titled “Example”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?;import asyncio
from autd3 import Client, TransportOptionfrom autd3.commands import ActivatePatternBank, Clear, ConfigPattern, Synchronize, WritePatternBufferfrom autd3.geometry import Autd3, Geometry, offsetfrom autd3.units import m, mm, sfrom autd3.value import Intensity, LoopBehavior, PatternBank, SamplingConfig, TransitionModefrom autd3_pattern import focus, wavelength
async def main() -> None: geometry = Geometry([Autd3()]) with await Client.open(geometry, TransportOption()) as client: await client.send(Clear()) await client.send(Synchronize())
phases = geometry.phase_buffer() focus( geometry, geometry.center() + offset(0.0 * mm, 0.0 * mm, 150.0 * mm), wavelength(340 * m / s), phases, )
bank = PatternBank.B0
await client.send( WritePatternBuffer( bank=bank, start_index=0, patterns=[phases], intensities=Intensity.MAX, ) ) await client.send( ConfigPattern( bank=bank, config=SamplingConfig(0xFFFF), size=1, loop_behavior=LoopBehavior.Infinite, ) ) await client.send( ActivatePatternBank( bank=bank, transition_mode=TransitionMode.Immediate, ) )
asyncio.run(main())using System.Threading.Tasks;using AUTD3;using static AUTD3.Units;
var geometry = new Geometry(new[] { new Autd3() });using var client = await Client.OpenAsync(geometry, new TransportOption());await client.SendAsync(new Clear());await client.SendAsync(new Synchronize());
var phases = geometry.PhaseBuffer();Pattern.Focus( geometry, geometry.Center + Offset(0.0f * mm, 0.0f * mm, 150.0f * mm), Pattern.Wavelength(340.0f * m / s), phases);
var bank = PatternBank.B0;
await client.SendAsync(new WritePatternBuffer( bank: bank, startIndex: 0, patterns: new[] { phases }, intensities: Intensity.Max));await client.SendAsync(new ConfigPattern( bank: bank, config: new SamplingConfig(ushort.MaxValue), size: 1, loopBehavior: LoopBehavior.Infinite));await client.SendAsync(new ActivatePatternBank( bank: bank, transitionMode: TransitionMode.Immediate));