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 ("Port check is {}" , ret )
13+
14+ ret = sciencemode .smpt_open_serial_port (device ,com )
15+ print ("smpt_open_serial_port: {}" , ret )
16+
17+ packet_number = sciencemode .smpt_packet_number_generator_next (device )
18+ print ("next packet_number {}" , packet_number )
19+
20+ ret = sciencemode .smpt_send_get_extended_version (device , packet_number )
21+ print ("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 ("command number {}, packet_number {}" , ack .command_number , ack .packet_number )
30+
31+ 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 )
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 ("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+
71+ ml_init = sciencemode .ffi .new ("Smpt_ml_init*" )
72+ ml_init .packet_number = sciencemode .smpt_packet_number_generator_next (device )
73+ ret = sciencemode .smpt_send_ml_init (device , ml_init )
74+ print ("smpt_send_ml_init: {}" , ret )
75+ time .sleep (1 )
76+
77+ ml_update = sciencemode .ffi .new ("Smpt_ml_update*" )
78+ ml_update .packet_number = sciencemode .smpt_packet_number_generator_next (device )
79+ for i in range (8 ):
80+ ml_update .enable_channel [i ] = True
81+ ml_update .channel_config [i ].period = 20
82+ ml_update .channel_config [i ].number_of_points = 3
83+ ml_update .channel_config [i ].points [0 ].time = 100
84+ ml_update .channel_config [i ].points [0 ].current = 20
85+ ml_update .channel_config [i ].points [1 ].time = 100
86+ ml_update .channel_config [i ].points [1 ].current = 20
87+ ml_update .channel_config [i ].points [2 ].time = 100
88+ ml_update .channel_config [i ].points [2 ].current = - 20
89+
90+ ret = sciencemode .smpt_send_ml_update (device , ml_update )
91+ print ("smpt_send_ml_update: {}" , ret )
92+
93+ ml_get_current_data = sciencemode .ffi .new ("Smpt_ml_get_current_data*" )
94+
95+
96+ for i in range (10 ):
97+ ml_get_current_data .data_selection = sciencemode .Smpt_Ml_Data_Channels
98+ ml_get_current_data .packet_number = sciencemode .smpt_packet_number_generator_next (device )
99+ ret = sciencemode .smpt_send_ml_get_current_data (device , ml_get_current_data )
100+ print ("smpt_send_ml_get_current_data: {}" , ret )
101+ time .sleep (1 )
102+
103+
104+ packet_number = sciencemode .smpt_packet_number_generator_next (device )
105+ ret = sciencemode .smpt_send_ml_stop (device , packet_number )
106+ print ("smpt_send_ml_stop: {}" , ret )
107+
108+
109+ ret = sciencemode .smpt_close_serial_port (device )
110+ print ("smpt_close_serial_port: {}" , ret )
0 commit comments