質問編集履歴

2

C++のコードを追記しました。

2019/08/05 04:16

投稿

p_pp
p_pp

スコア17

test CHANGED
File without changes
test CHANGED
@@ -118,240 +118,62 @@
118
118
 
119
119
  追記
120
120
 
121
- ```python
121
+ ```C++
122
122
 
123
- import ctypes
123
+ //保存先ファイル名の取得
124
124
 
125
- from ctypes import*
125
+ SaveFileDialog1->OverwritePrompt = true;
126
126
 
127
- import numpy as np
127
+ SaveFileDialog1->Filter = "データファイル(*.dat)|*.dat";
128
128
 
129
- """構造体宣言"""
129
+ if( SaveFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
130
130
 
131
- class ADSMS_SETTING(Structure):
131
+ {
132
132
 
133
- _fields_ = [
133
+ if( System::IO::File::Exists(SaveFileDialog1->FileName))//既存ファイルチェック
134
134
 
135
- ("ChLen",c_ubyte),
135
+ {
136
136
 
137
- ("ChPattern", c_ubyte*3),
137
+ System::IO::File::Delete(SaveFileDialog1->FileName);
138
138
 
139
- ("ChPatternRange", c_ubyte*3),
140
-
141
- ("TriggerTypes",c_ubyte),
142
-
143
- ("TriggerLevel",c_short),
144
-
145
- ("TriggerCh",c_ubyte),
146
-
147
- ("ClockSel",c_ubyte),
148
-
149
- ("SamplingClock",c_int),
150
-
151
- ("PreTriggerLen",c_int),
152
-
153
- ("TotalLen",c_int)]
139
+ }
154
140
 
155
141
 
156
142
 
143
+ SaveFile = gcnew StreamWriter(SaveFileDialog1->FileName);//ファイルを開く
157
144
 
145
+ ret = Tusbadsms_Sample_Start((short) IdSel->SelectedIndex,smpl_setting);
158
146
 
159
- #dll読み込み
147
+ if( ret == 0 )//正常にスタートできた
160
148
 
161
- dll=ctypes.cdll.LoadLibrary('tt.dll')
149
+ {
162
150
 
163
- #機械ID
151
+ StopReq = false;
164
152
 
165
- ID=0
153
+ TotalLeng = 0;
166
154
 
155
+ EnableDisableControl(2);
167
156
 
157
+ Timer1->Interval = 100;
168
158
 
169
- #関数の引数型設定
159
+ Timer1->Enabled = true;
170
160
 
171
- dll.Tusbadsms_Device_Open.argtypes=[c_short]
161
+ }
172
162
 
173
- dll.Tusbadsms_Device_Close.argtypes=[c_short]
163
+ else//正常にスタートできなかった
174
164
 
175
- dll.Tusbadsms_Single_Sample.argtypes=[c_short,c_ubyte,c_ubyte,POINTER(c_short)]
165
+ {
176
166
 
177
- dll.Tusbadsms_Status_Read.argtypes=[c_short,POINTER(c_ubyte),POINTER(c_ubyte),POINTER(c_int)]
167
+ SaveFile->Close();
178
168
 
179
- dll.Tusbadsms_Memory_Read.argtypes=[c_short,POINTER(c_short*9000),POINTER(c_int)]
169
+ Tusbadsms_Device_Close((short) IdSel->SelectedIndex);
180
170
 
181
- dll.Tusbadsms_Sampling_Stop.argtypes=[c_short]
171
+ }
182
172
 
183
- """
173
+ }
184
174
 
185
- dllの関数をセット
186
-
187
-
188
-
189
- """
190
-
191
- #オープン
175
+ }
192
-
193
- Device_Open=dll.Tusbadsms_Device_Open
194
-
195
- #クローズ
196
-
197
- Device_close=dll.Tusbadsms_Device_Close
198
-
199
- #測定値一回取り込み
200
-
201
- Single_Sample=dll.Tusbadsms_Single_Sample
202
-
203
- #測定値連続取り込み関数
204
-
205
- Sample_Start=dll.Tusbadsms_Sample_Start
206
-
207
- #連続取り込み動作状態の確認
208
-
209
- Status_Read=dll.Tusbadsms_Status_Read
210
-
211
- #連続取り込み済みデータの取得
212
-
213
- Memory_Read=dll.Tusbadsms_Memory_Read
214
-
215
- #連続取り込み停止
216
-
217
- Sampling_Stop=dll.Tusbadsms_Sampling_Stop
218
-
219
- #ソフトウェアトリガー
220
-
221
- Sampling_Trigger=dll.Tusbadsms_Sampling_Trigger
222
-
223
-
224
-
225
- """
226
-
227
- ADコンバータ制御
228
-
229
-
230
-
231
- """
232
-
233
- #オープン
234
-
235
- Device_Open(ID)
236
-
237
-
238
-
239
-
240
-
241
- """
242
-
243
- 単一取り込み
244
-
245
-
246
-
247
- """
248
-
249
-
250
-
251
- #結果を格納するための変数valを作成
252
-
253
- val = c_short()
254
-
255
-
256
-
257
- #指定チャンネル入力の変換値を一回取り込む
258
-
259
- Single_Sample(ID,0,1,byref(val))
260
-
261
-
262
-
263
- print(val.value)
264
-
265
-
266
-
267
- """
268
-
269
- 連続取り込み
270
-
271
-
272
-
273
- """
274
-
275
- #連続取り込み設定
276
-
277
- adsms=ADSMS_SETTING()
278
-
279
- adsms.ChLen=1
280
-
281
- adsms.ChPattern[0]=0
282
-
283
- adsms.ChPatternRange[0]=0
284
-
285
- adsms.TriggerTypes=1
286
-
287
- adsms.TriggerLevel=100
288
-
289
- adsms.TriggerCh=0
290
-
291
- adsms.ClockSel=0
292
-
293
- adsms.SamplingClock=100
294
-
295
- adsms.PreTriggerLen=0
296
-
297
- adsms.TotalLen=9000
298
-
299
- #連続取り込み開始
300
-
301
- cc=Sample_Start(ID,adsms)
302
-
303
- print(cc)
304
-
305
- Sampling_Trigger(ID)
306
-
307
-
308
-
309
- """連続取り込み状態確認"""
310
-
311
- #結果を格納するための変数を作成
312
-
313
- status = c_ubyte() #0:停止中 1:トリガ待ち 2:サンプリング中
314
-
315
- ovf = c_ubyte()#0:正常 1:オーバーフロー発生(FIFOメモリの空きが無くなりました)
316
-
317
- lengh = c_int()#PC内データバッファに取り込まれているデータセットの数
318
-
319
- #連続取り込み状態確認
320
-
321
- Status_Read(ID,byref(status),byref(ovf),byref(lengh))
322
-
323
- print(status.value,ovf.value,lengh.value)
324
-
325
-
326
-
327
- """連続取り込みデータ取得"""
328
-
329
- #結果を格納するための変数を作成
330
-
331
- leng = c_int()
332
-
333
- data=(c_short*9000)()
334
-
335
- Memory_Read (ID,byref(data),byref(leng))
336
-
337
- print(leng.value)
338
-
339
- #numpy配列に格納
340
-
341
- n=np.ctypeslib.as_array(data)
342
-
343
- print(n)
344
-
345
-
346
-
347
- """連続取り込み停止"""
348
-
349
- Sampling_Stop(ID)
350
-
351
-
352
-
353
- #クローズ
354
-
355
- Device_close(ID)
356
176
 
357
177
  ```
178
+
179
+ Tusbadsms_Sample_Startが関数となっています。

1

pythonのコードを追記しました。

2019/08/05 04:16

投稿

p_pp
p_pp

スコア17

test CHANGED
File without changes
test CHANGED
@@ -113,3 +113,245 @@
113
113
 
114
114
 
115
115
  つたない文章で分かりにくいとは思いますが、何卒よろしくお願いいたします
116
+
117
+
118
+
119
+ 追記
120
+
121
+ ```python
122
+
123
+ import ctypes
124
+
125
+ from ctypes import*
126
+
127
+ import numpy as np
128
+
129
+ """構造体宣言"""
130
+
131
+ class ADSMS_SETTING(Structure):
132
+
133
+ _fields_ = [
134
+
135
+ ("ChLen",c_ubyte),
136
+
137
+ ("ChPattern", c_ubyte*3),
138
+
139
+ ("ChPatternRange", c_ubyte*3),
140
+
141
+ ("TriggerTypes",c_ubyte),
142
+
143
+ ("TriggerLevel",c_short),
144
+
145
+ ("TriggerCh",c_ubyte),
146
+
147
+ ("ClockSel",c_ubyte),
148
+
149
+ ("SamplingClock",c_int),
150
+
151
+ ("PreTriggerLen",c_int),
152
+
153
+ ("TotalLen",c_int)]
154
+
155
+
156
+
157
+
158
+
159
+ #dll読み込み
160
+
161
+ dll=ctypes.cdll.LoadLibrary('tt.dll')
162
+
163
+ #機械ID
164
+
165
+ ID=0
166
+
167
+
168
+
169
+ #関数の引数型設定
170
+
171
+ dll.Tusbadsms_Device_Open.argtypes=[c_short]
172
+
173
+ dll.Tusbadsms_Device_Close.argtypes=[c_short]
174
+
175
+ dll.Tusbadsms_Single_Sample.argtypes=[c_short,c_ubyte,c_ubyte,POINTER(c_short)]
176
+
177
+ dll.Tusbadsms_Status_Read.argtypes=[c_short,POINTER(c_ubyte),POINTER(c_ubyte),POINTER(c_int)]
178
+
179
+ dll.Tusbadsms_Memory_Read.argtypes=[c_short,POINTER(c_short*9000),POINTER(c_int)]
180
+
181
+ dll.Tusbadsms_Sampling_Stop.argtypes=[c_short]
182
+
183
+ """
184
+
185
+ dllの関数をセット
186
+
187
+
188
+
189
+ """
190
+
191
+ #オープン
192
+
193
+ Device_Open=dll.Tusbadsms_Device_Open
194
+
195
+ #クローズ
196
+
197
+ Device_close=dll.Tusbadsms_Device_Close
198
+
199
+ #測定値一回取り込み
200
+
201
+ Single_Sample=dll.Tusbadsms_Single_Sample
202
+
203
+ #測定値連続取り込み関数
204
+
205
+ Sample_Start=dll.Tusbadsms_Sample_Start
206
+
207
+ #連続取り込み動作状態の確認
208
+
209
+ Status_Read=dll.Tusbadsms_Status_Read
210
+
211
+ #連続取り込み済みデータの取得
212
+
213
+ Memory_Read=dll.Tusbadsms_Memory_Read
214
+
215
+ #連続取り込み停止
216
+
217
+ Sampling_Stop=dll.Tusbadsms_Sampling_Stop
218
+
219
+ #ソフトウェアトリガー
220
+
221
+ Sampling_Trigger=dll.Tusbadsms_Sampling_Trigger
222
+
223
+
224
+
225
+ """
226
+
227
+ ADコンバータ制御
228
+
229
+
230
+
231
+ """
232
+
233
+ #オープン
234
+
235
+ Device_Open(ID)
236
+
237
+
238
+
239
+
240
+
241
+ """
242
+
243
+ 単一取り込み
244
+
245
+
246
+
247
+ """
248
+
249
+
250
+
251
+ #結果を格納するための変数valを作成
252
+
253
+ val = c_short()
254
+
255
+
256
+
257
+ #指定チャンネル入力の変換値を一回取り込む
258
+
259
+ Single_Sample(ID,0,1,byref(val))
260
+
261
+
262
+
263
+ print(val.value)
264
+
265
+
266
+
267
+ """
268
+
269
+ 連続取り込み
270
+
271
+
272
+
273
+ """
274
+
275
+ #連続取り込み設定
276
+
277
+ adsms=ADSMS_SETTING()
278
+
279
+ adsms.ChLen=1
280
+
281
+ adsms.ChPattern[0]=0
282
+
283
+ adsms.ChPatternRange[0]=0
284
+
285
+ adsms.TriggerTypes=1
286
+
287
+ adsms.TriggerLevel=100
288
+
289
+ adsms.TriggerCh=0
290
+
291
+ adsms.ClockSel=0
292
+
293
+ adsms.SamplingClock=100
294
+
295
+ adsms.PreTriggerLen=0
296
+
297
+ adsms.TotalLen=9000
298
+
299
+ #連続取り込み開始
300
+
301
+ cc=Sample_Start(ID,adsms)
302
+
303
+ print(cc)
304
+
305
+ Sampling_Trigger(ID)
306
+
307
+
308
+
309
+ """連続取り込み状態確認"""
310
+
311
+ #結果を格納するための変数を作成
312
+
313
+ status = c_ubyte() #0:停止中 1:トリガ待ち 2:サンプリング中
314
+
315
+ ovf = c_ubyte()#0:正常 1:オーバーフロー発生(FIFOメモリの空きが無くなりました)
316
+
317
+ lengh = c_int()#PC内データバッファに取り込まれているデータセットの数
318
+
319
+ #連続取り込み状態確認
320
+
321
+ Status_Read(ID,byref(status),byref(ovf),byref(lengh))
322
+
323
+ print(status.value,ovf.value,lengh.value)
324
+
325
+
326
+
327
+ """連続取り込みデータ取得"""
328
+
329
+ #結果を格納するための変数を作成
330
+
331
+ leng = c_int()
332
+
333
+ data=(c_short*9000)()
334
+
335
+ Memory_Read (ID,byref(data),byref(leng))
336
+
337
+ print(leng.value)
338
+
339
+ #numpy配列に格納
340
+
341
+ n=np.ctypeslib.as_array(data)
342
+
343
+ print(n)
344
+
345
+
346
+
347
+ """連続取り込み停止"""
348
+
349
+ Sampling_Stop(ID)
350
+
351
+
352
+
353
+ #クローズ
354
+
355
+ Device_close(ID)
356
+
357
+ ```