Skip to content

Commit 5471171

Browse files
Add example for one stimulation channel
* Improve naming and structure of examples * fix f-strings in example
1 parent b8819d7 commit 5471171

File tree

7 files changed

+510
-14593
lines changed

7 files changed

+510
-14593
lines changed

examples/p24_ll_eight_channels.py

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
from sciencemode import sciencemode
2+
import time
3+
4+
5+
ack = sciencemode.ffi.new("Smpt_ack*")
6+
device = sciencemode.ffi.new("Smpt_device*")
7+
extended_version_ack = sciencemode.ffi.new("Smpt_get_extended_version_ack*")
8+
9+
com = sciencemode.ffi.new("char[]", b"COM3")
10+
11+
ret = sciencemode.smpt_check_serial_port(com)
12+
print(f"Port check is {ret}")
13+
14+
ret = sciencemode.smpt_open_serial_port(device,com)
15+
print(f"smpt_open_serial_port: {ret}", )
16+
17+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
18+
print(f"next packet_number {packet_number}")
19+
20+
ret = sciencemode.smpt_send_get_extended_version(device, packet_number)
21+
print(f"smpt_send_get_extended_version: {ret}")
22+
23+
ret = False
24+
25+
while ( not sciencemode.smpt_new_packet_received(device)):
26+
time.sleep(1)
27+
28+
sciencemode.smpt_last_ack(device, ack);
29+
print(f"command number {ack.command_number}, packet_number {ack.packet_number}")
30+
31+
ret = sciencemode.smpt_get_get_extended_version_ack(device, extended_version_ack)
32+
print(f"smpt_get_get_extended_version_ack: {ret}")
33+
print(f"fw_hash {extended_version_ack.fw_hash} ")
34+
35+
36+
ll_init = sciencemode.ffi.new("Smpt_ll_init*")
37+
ll_init.high_voltage_level = sciencemode.Smpt_High_Voltage_Default
38+
ll_init.packet_number = sciencemode.smpt_packet_number_generator_next(device)
39+
ret = sciencemode.smpt_send_ll_init(device, ll_init)
40+
print(f"smpt_send_ll_init: {ret}")
41+
time.sleep(1)
42+
43+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
44+
print(f"next packet_number {packet_number}")
45+
46+
47+
ll_config = sciencemode.ffi.new("Smpt_ll_channel_config*")
48+
49+
ll_config.enable_stimulation = True
50+
ll_config.number_of_points = 3
51+
ll_config.points[0].time = 100
52+
ll_config.points[0].current = 20
53+
ll_config.points[1].time = 100
54+
ll_config.points[1].current = 20
55+
ll_config.points[2].time = 100
56+
ll_config.points[2].current = -20
57+
58+
59+
for i in range(30):
60+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
61+
ll_config.channel = sciencemode.Smpt_Channel_Red
62+
ll_config.connector = sciencemode.Smpt_Connector_Yellow
63+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
64+
print(f"1. channel smpt_send_ll_channel_config: {ret}")
65+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
66+
ll_config.channel = sciencemode.Smpt_Channel_Blue
67+
ll_config.connector = sciencemode.Smpt_Connector_Yellow
68+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
69+
print(f"2. channel smpt_send_ll_channel_config: {ret}")
70+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
71+
ll_config.channel = sciencemode.Smpt_Channel_Black
72+
ll_config.connector = sciencemode.Smpt_Connector_Yellow
73+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
74+
print(f"3. channel smpt_send_ll_channel_config: {ret}")
75+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
76+
ll_config.channel = sciencemode.Smpt_Channel_White
77+
ll_config.connector = sciencemode.Smpt_Connector_Yellow
78+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
79+
print(f"4. channel smpt_send_ll_channel_config: {ret}")
80+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
81+
ll_config.channel = sciencemode.Smpt_Channel_Red
82+
ll_config.connector = sciencemode.Smpt_Connector_Green
83+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
84+
print(f"5. channel smpt_send_ll_channel_config: {ret}")
85+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
86+
ll_config.channel = sciencemode.Smpt_Channel_Blue
87+
ll_config.connector = sciencemode.Smpt_Connector_Green
88+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
89+
print(f"6. channel smpt_send_ll_channel_config: {ret}")
90+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
91+
ll_config.channel = sciencemode.Smpt_Channel_Black
92+
ll_config.connector = sciencemode.Smpt_Connector_Green
93+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
94+
print(f"7. channel smpt_send_ll_channel_config: {ret}")
95+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
96+
ll_config.channel = sciencemode.Smpt_Channel_White
97+
ll_config.connector = sciencemode.Smpt_Connector_Green
98+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
99+
print(f"8. channel smpt_send_ll_channel_config: {ret}")
100+
time.sleep(0.1)
101+
102+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
103+
ret = sciencemode.smpt_send_ll_stop(device, packet_number)
104+
print(f"smpt_send_ll_stop: {ret}")
105+
106+
ret = sciencemode.smpt_close_serial_port(device)
107+
print(f"smpt_close_serial_port: {ret}")

examples/p24_ll_one_channel.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
from sciencemode import sciencemode
2+
import time
3+
4+
print("***** Low-Level Example for simulating one channel.")
5+
ack = sciencemode.ffi.new("Smpt_ack*")
6+
device = sciencemode.ffi.new("Smpt_device*")
7+
extended_version_ack = sciencemode.ffi.new("Smpt_get_extended_version_ack*")
8+
9+
com = sciencemode.ffi.new("char[]", b"COM3")
10+
11+
ret = sciencemode.smpt_check_serial_port(com)
12+
print(f"Port check is {ret}")
13+
14+
ret = sciencemode.smpt_open_serial_port(device,com)
15+
print(f"smpt_open_serial_port: {ret}")
16+
17+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
18+
print(f"next packet_number {packet_number}")
19+
20+
ret = sciencemode.smpt_send_get_extended_version(device, packet_number)
21+
print(f"smpt_send_get_extended_version: {ret}")
22+
23+
ret = False
24+
25+
while ( not sciencemode.smpt_new_packet_received(device)):
26+
time.sleep(1)
27+
28+
sciencemode.smpt_last_ack(device, ack);
29+
print(f"command number {ack.command_number}, packet_number {ack.packet_number}")
30+
31+
ret = sciencemode.smpt_get_get_extended_version_ack(device, extended_version_ack)
32+
print(f"smpt_get_get_extended_version_ack: {ret}")
33+
print(f"fw_hash {extended_version_ack.fw_hash}")
34+
35+
36+
ll_init = sciencemode.ffi.new("Smpt_ll_init*")
37+
ll_init.high_voltage_level = sciencemode.Smpt_High_Voltage_Default
38+
ll_init.packet_number = sciencemode.smpt_packet_number_generator_next(device)
39+
ret = sciencemode.smpt_send_ll_init(device, ll_init)
40+
print(f"smpt_send_ll_init: {ret}")
41+
time.sleep(1)
42+
43+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
44+
print(f"next packet_number {packet_number}")
45+
46+
47+
ll_config = sciencemode.ffi.new("Smpt_ll_channel_config*")
48+
49+
ll_config.enable_stimulation = True
50+
ll_config.channel = sciencemode.Smpt_Channel_Red
51+
ll_config.connector = sciencemode.Smpt_Connector_Yellow
52+
ll_config.number_of_points = 3
53+
ll_config.points[0].time = 100
54+
ll_config.points[0].current = 20
55+
ll_config.points[1].time = 100
56+
ll_config.points[1].current = 20
57+
ll_config.points[2].time = 100
58+
ll_config.points[2].current = -20
59+
60+
61+
for i in range(30):
62+
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
63+
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
64+
print(f"smpt_send_ll_channel_config: {ret}")
65+
time.sleep(0.1)
66+
67+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
68+
ret = sciencemode.smpt_send_ll_stop(device, packet_number)
69+
print(f"smpt_send_ll_stop: {ret}")
70+
71+
ret = sciencemode.smpt_close_serial_port(device)
72+
print(f"smpt_close_serial_port: {ret}")
Lines changed: 12 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -9,69 +9,34 @@
99
com = sciencemode.ffi.new("char[]", b"COM3")
1010

1111
ret = sciencemode.smpt_check_serial_port(com)
12-
print("Port check is {}", ret)
12+
print(f"Port check is {ret}")
1313

1414
ret = sciencemode.smpt_open_serial_port(device,com)
15-
print("smpt_open_serial_port: {}", ret)
15+
print(f"smpt_open_serial_port: {ret}", )
1616

1717
packet_number = sciencemode.smpt_packet_number_generator_next(device)
18-
print("next packet_number {}", packet_number)
18+
print(f"next packet_number {packet_number}")
1919

2020
ret = sciencemode.smpt_send_get_extended_version(device, packet_number)
21-
print("smpt_send_get_extended_version: {}", ret)
21+
print(f"smpt_send_get_extended_version: {ret}")
2222

2323
ret = False
2424

2525
while ( not sciencemode.smpt_new_packet_received(device)):
2626
time.sleep(1)
2727

2828
sciencemode.smpt_last_ack(device, ack);
29-
print("command number {}, packet_number {}", ack.command_number, ack.packet_number)
29+
print(f"command number {ack.command_number}, packet_number {ack.packet_number}")
3030

3131
ret = sciencemode.smpt_get_get_extended_version_ack(device, extended_version_ack)
32-
print("smpt_get_get_extended_version_ack: {}", ret)
33-
print("fw_hash {} ",extended_version_ack.fw_hash)
32+
print(f"smpt_get_get_extended_version_ack: {ret}")
33+
print(f"fw_hash {extended_version_ack.fw_hash} ")
3434

3535

36-
ll_init = sciencemode.ffi.new("Smpt_ll_init*")
37-
ll_init.high_voltage_level = sciencemode.Smpt_High_Voltage_Default
38-
ll_init.packet_number = sciencemode.smpt_packet_number_generator_next(device)
39-
ret = sciencemode.smpt_send_ll_init(device, ll_init)
40-
print("smpt_send_ll_init: {}", ret)
41-
time.sleep(1)
42-
43-
packet_number = sciencemode.smpt_packet_number_generator_next(device)
44-
print("next packet_number {}", packet_number)
45-
46-
47-
ll_config = sciencemode.ffi.new("Smpt_ll_channel_config*")
48-
49-
ll_config.enable_stimulation = True
50-
ll_config.channel = sciencemode.Smpt_Channel_Red
51-
ll_config.connector = sciencemode.Smpt_Connector_Yellow
52-
ll_config.number_of_points = 3
53-
ll_config.points[0].time = 100
54-
ll_config.points[0].current = 20
55-
ll_config.points[1].time = 100
56-
ll_config.points[1].current = 20
57-
ll_config.points[2].time = 100
58-
ll_config.points[2].current = -20
59-
60-
61-
for i in range(3):
62-
ll_config.packet_number = sciencemode.smpt_packet_number_generator_next(device)
63-
ret = sciencemode.smpt_send_ll_channel_config(device, ll_config)
64-
print("smpt_send_ll_channel_config: {}", ret)
65-
time.sleep(1)
66-
67-
packet_number = sciencemode.smpt_packet_number_generator_next(device)
68-
ret = sciencemode.smpt_send_ll_stop(device, packet_number)
69-
print("smpt_send_ll_stop: {}", ret)
70-
7136
ml_init = sciencemode.ffi.new("Smpt_ml_init*")
7237
ml_init.packet_number = sciencemode.smpt_packet_number_generator_next(device)
7338
ret = sciencemode.smpt_send_ml_init(device, ml_init)
74-
print("smpt_send_ml_init: {}", ret)
39+
print(f"smpt_send_ml_init: {ret}")
7540
time.sleep(1)
7641

7742
ml_update = sciencemode.ffi.new("Smpt_ml_update*")
@@ -88,7 +53,7 @@
8853
ml_update.channel_config[i].points[2].current = -20
8954

9055
ret = sciencemode.smpt_send_ml_update(device, ml_update)
91-
print("smpt_send_ml_update: {}", ret)
56+
print(f"smpt_send_ml_update: {ret}")
9257

9358
ml_get_current_data = sciencemode.ffi.new("Smpt_ml_get_current_data*")
9459

@@ -97,14 +62,14 @@
9762
ml_get_current_data.data_selection = sciencemode.Smpt_Ml_Data_Channels
9863
ml_get_current_data.packet_number = sciencemode.smpt_packet_number_generator_next(device)
9964
ret = sciencemode.smpt_send_ml_get_current_data(device, ml_get_current_data)
100-
print("smpt_send_ml_get_current_data: {}", ret)
65+
print(f"smpt_send_ml_get_current_data: {ret}")
10166
time.sleep(1)
10267

10368

10469
packet_number = sciencemode.smpt_packet_number_generator_next(device)
10570
ret = sciencemode.smpt_send_ml_stop(device, packet_number)
106-
print("smpt_send_ml_stop: {}", ret)
71+
print(f"smpt_send_ml_stop: {ret}")
10772

10873

10974
ret = sciencemode.smpt_close_serial_port(device)
110-
print("smpt_close_serial_port: {}", ret)
75+
print(f"smpt_close_serial_port: {ret}")

examples/p24_ml_one_channel.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from sciencemode import sciencemode
2+
import time
3+
4+
5+
ack = sciencemode.ffi.new("Smpt_ack*")
6+
device = sciencemode.ffi.new("Smpt_device*")
7+
extended_version_ack = sciencemode.ffi.new("Smpt_get_extended_version_ack*")
8+
9+
com = sciencemode.ffi.new("char[]", b"COM3")
10+
11+
ret = sciencemode.smpt_check_serial_port(com)
12+
print(f"Port check is {ret}")
13+
14+
ret = sciencemode.smpt_open_serial_port(device,com)
15+
print(f"smpt_open_serial_port: {ret}")
16+
17+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
18+
print(f"next packet_number {packet_number}")
19+
20+
ret = sciencemode.smpt_send_get_extended_version(device, packet_number)
21+
print(f"smpt_send_get_extended_version: {ret}")
22+
23+
ret = False
24+
25+
while ( not sciencemode.smpt_new_packet_received(device)):
26+
time.sleep(1)
27+
28+
sciencemode.smpt_last_ack(device, ack);
29+
print(f"command number {ack.command_number}, packet_number {ack.packet_number}")
30+
31+
ret = sciencemode.smpt_get_get_extended_version_ack(device, extended_version_ack)
32+
print(f"smpt_get_get_extended_version_ack: {ret}")
33+
print(f"fw_hash {extended_version_ack.fw_hash}")
34+
35+
36+
ml_init = sciencemode.ffi.new("Smpt_ml_init*")
37+
ml_init.packet_number = sciencemode.smpt_packet_number_generator_next(device)
38+
ret = sciencemode.smpt_send_ml_init(device, ml_init)
39+
print(f"smpt_send_ml_init: {ret}")
40+
time.sleep(1)
41+
42+
ml_update = sciencemode.ffi.new("Smpt_ml_update*")
43+
ml_update.packet_number = sciencemode.smpt_packet_number_generator_next(device)
44+
channel = 0
45+
ml_update.enable_channel[channel] = True
46+
ml_update.channel_config[channel].period = 20
47+
ml_update.channel_config[channel].number_of_points = 3
48+
ml_update.channel_config[channel].points[0].time = 100
49+
ml_update.channel_config[channel].points[0].current = 20
50+
ml_update.channel_config[channel].points[1].time = 100
51+
ml_update.channel_config[channel].points[1].current = 20
52+
ml_update.channel_config[channel].points[2].time = 100
53+
ml_update.channel_config[channel].points[2].current = -20
54+
55+
ret = sciencemode.smpt_send_ml_update(device, ml_update)
56+
print(f"smpt_send_ml_update: {ret}", )
57+
58+
ml_get_current_data = sciencemode.ffi.new("Smpt_ml_get_current_data*")
59+
60+
61+
for i in range(10):
62+
ml_get_current_data.data_selection = sciencemode.Smpt_Ml_Data_Channels
63+
ml_get_current_data.packet_number = sciencemode.smpt_packet_number_generator_next(device)
64+
ret = sciencemode.smpt_send_ml_get_current_data(device, ml_get_current_data)
65+
print(f"smpt_send_ml_get_current_data: {ret}")
66+
time.sleep(1)
67+
68+
69+
packet_number = sciencemode.smpt_packet_number_generator_next(device)
70+
ret = sciencemode.smpt_send_ml_stop(device, packet_number)
71+
print(f"smpt_send_ml_stop: {ret}")
72+
73+
74+
ret = sciencemode.smpt_close_serial_port(device)
75+
print(f"smpt_close_serial_port: {ret}")

0 commit comments

Comments
 (0)