File Coverage

blib/lib/Lab/Moose/Instrument/RS_ZVM.pm
Criterion Covered Total %
statement 42 47 89.3
branch 1 2 50.0
condition n/a
subroutine 14 16 87.5
pod 2 7 28.5
total 59 72 81.9


line stmt bran cond sub pod time code
1             package Lab::Moose::Instrument::RS_ZVM;
2             $Lab::Moose::Instrument::RS_ZVM::VERSION = '3.880';
3             #ABSTRACT: Rohde & Schwarz ZVM Vector Network Analyzer
4              
5 2     2   5696 use v5.20;
  2         15  
6              
7 2     2   14 use Moose;
  2         53  
  2         19  
8 2     2   14553 use Moose::Util::TypeConstraints;
  2         5  
  2         19  
9 2     2   4814 use MooseX::Params::Validate;
  2         4  
  2         16  
10 2     2   988 use Lab::Moose::Instrument qw/getter_params timeout_param validated_getter validated_setter/;
  2         5  
  2         202  
11 2     2   16 use Carp;
  2         4  
  2         133  
12 2     2   13 use Config;
  2         5  
  2         96  
13 2     2   13 use namespace::autoclean;
  2         5  
  2         15  
14              
15             extends 'Lab::Moose::Instrument';
16              
17             with 'Lab::Moose::Instrument::SCPI::Format' => {
18             -excludes => [qw/format_border format_border_query/],
19             },
20             qw(
21             Lab::Moose::Instrument::SCPI::Sense::Function
22             Lab::Moose::Instrument::SCPI::Source::Power
23             Lab::Moose::Instrument::VNASweep
24             );
25              
26             sub BUILD {
27 1     1 0 34 my $self = shift;
28              
29             #$self->clear();
30             #$self->cls(timeout => 5);
31             }
32              
33             sub cached_format_data_builder {
34 1     1 0 2 my $self = shift;
35 1         5 return $self->format_data_query( timeout => 3 );
36             }
37              
38             sub sparam_catalog {
39 4     4 0 14 my $self = shift;
40 4         17 my $function = $self->cached_sense_function();
41              
42 4 50       23 if ( $function !~ /(?<sparam>S[12]{2})/ ) {
43 0         0 croak "no S-parameter selected";
44             }
45              
46 4     1   36 my $sparam = $+{sparam};
  1         754  
  1         453  
  1         322  
47              
48 4         26 return [ "Re($sparam)", "Im($sparam)" ];
49             }
50              
51             sub trace_data_response_all {
52 3     3 0 12 my ( $self, %args ) = validated_hash(
53             \@_,
54             getter_params(),
55             trace => { isa => 'Str' },
56             );
57              
58 3         1742 my $trace = delete $args{trace};
59              
60 3         17 return $self->binary_query(
61             command => "TRAC:DATA:RESP:ALL? $trace",
62             %args
63             );
64             }
65              
66             sub sparam_sweep_data {
67 3     3 0 11 my ( $self, %args ) = validated_getter( \@_ );
68              
69 3         2019 my $channel = $self->cached_instrument_nselect();
70              
71             # Start single sweep.
72 3         16 $self->initiate_immediate();
73              
74             # Wait until single sweep is finished.
75 3         19 $self->wai();
76 3         18 return $self->trace_data_response_all(
77             trace => "CH${channel}DATA",
78             %args
79             );
80             }
81              
82              
83              
84              
85             sub set_power {
86 0     0 1 0 my ( $self, $value, %args ) = validated_setter( \@_ );
87 0         0 $self->source_power_level_immediate_amplitude( value => $value );
88             }
89              
90             sub get_power {
91 0     0 1 0 my $self = shift;
92 0         0 return $self->source_power_level_immediate_amplitude_query();
93             }
94              
95              
96             __PACKAGE__->meta->make_immutable();
97              
98             1;
99              
100             __END__
101              
102             =pod
103              
104             =encoding UTF-8
105              
106             =head1 NAME
107              
108             Lab::Moose::Instrument::RS_ZVM - Rohde & Schwarz ZVM Vector Network Analyzer
109              
110             =head1 VERSION
111              
112             version 3.880
113              
114             =head1 SYNOPSIS
115              
116             my $data = $zvm->sparam_sweep(timeout => 10);
117             my $matrix = $data->matrix;
118              
119             =head1 METHODS
120              
121             See L<Lab::Moose::Instrument::VNASweep> for the high-level C<sparam_sweep> and
122             C<sparam_catalog> methods.
123              
124             =head2 set_power, get_power
125              
126             Interface for power sweeps
127              
128             =head1 COPYRIGHT AND LICENSE
129              
130             This software is copyright (c) 2023 by the Lab::Measurement team; in detail:
131              
132             Copyright 2016 Simon Reinhardt
133             2017 Andreas K. Huettel, Simon Reinhardt
134             2020 Andreas K. Huettel
135             2023 Andreas K. Huettel
136              
137              
138             This is free software; you can redistribute it and/or modify it under
139             the same terms as the Perl 5 programming language system itself.
140              
141             =cut