forked from ni/nimi-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnirfsg_script.py
More file actions
55 lines (42 loc) · 2.05 KB
/
nirfsg_script.py
File metadata and controls
55 lines (42 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import argparse
import nirfsg
import numpy as np
import sys
SAMPLE_SCRIPT = '''
script continuousWaveform
repeat forever
generate wfm
end repeat
end script
'''
def example(resource_name, options, frequency, power_level, number_of_samples):
waveform_data = np.full(number_of_samples, 1 + 0j, dtype=np.complex64)
with nirfsg.Session(resource_name=resource_name, id_query=False, reset_device=False, options=options) as session:
session.configure_rf(
frequency,
power_level
)
session.generation_mode = nirfsg.GenerationMode.SCRIPT
session.write_arb_waveform('wfm', waveform_data, False)
session.write_script(SAMPLE_SCRIPT)
with session.initiate():
session.check_generation_status()
def _main(argsv):
parser = argparse.ArgumentParser(description='Generates a signal based on the script provided.', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-n', '--resource-name', default='PXI1Slot2', help='Resource name of the NI RF signal generator.')
parser.add_argument('-f', '--frequency', default=1e9, type=float, help='Frequency in Hz.')
parser.add_argument('-p', '--power-level', default=-10.0, type=float, help='Power level in dBm.')
parser.add_argument('-s', '--number-of-samples', default=1000, type=int, help='Number of samples.')
parser.add_argument('-op', '--option-string', default='', type=str, help='Option string for the session.')
args = parser.parse_args(argsv)
example(args.resource_name, args.option_string, args.frequency, args.power_level, args.number_of_samples)
def main():
_main(sys.argv[1:])
def test_example():
options = {'simulate': True, 'driver_setup': {'Model': '5841', }, }
example('simulated5841', options, 1e9, -10.0, 1000)
def test_main():
cmd_line = ['--resource-name', 'simulated5841', '--frequency', '1e9', '--power-level', '-10', '--number-of-samples', '1000', '--option-string', 'Simulate=1, DriverSetup=Model:5841']
_main(cmd_line)
if __name__ == '__main__':
main()