質問編集履歴

1

スレッドを立てている部分のコードを追加しました。

2018/04/25 00:37

投稿

shikasama
shikasama

スコア163

test CHANGED
File without changes
test CHANGED
@@ -50,6 +50,478 @@
50
50
 
51
51
 
52
52
 
53
+ **追記**
54
+
55
+ 画像データの取得(ソケット通信)でスレッドを立てています。
56
+
57
+ 参考になるかわかりませんが、いかにその部分を抜き出したコードを記載します。
58
+
59
+
60
+
61
+ 波形データ取得部分
62
+
63
+ ```kotlin
64
+
65
+ private fun getScreenImage() {
66
+
67
+ isStop = false
68
+
69
+ isTriggerStoped = false
70
+
71
+
72
+
73
+ if(socketControl?.isConnect() == false) {
74
+
75
+ // 未接続
76
+
77
+ return
78
+
79
+ }
80
+
81
+
82
+
83
+ buttonSave.isEnabled = false
84
+
85
+
86
+
87
+ Toast.makeText(applicationContext, getString(R.string.text_image_acquisition_start), Toast.LENGTH_SHORT).show()
88
+
89
+
90
+
91
+ Thread(Runnable {
92
+
93
+ while(!isStop) {
94
+
95
+ Thread.sleep(0)
96
+
97
+ waitForTrgStop()
98
+
99
+ isTriggerStoped = false
100
+
101
+
102
+
103
+ receiveBuff = null
104
+
105
+
106
+
107
+ // 画像転送コマンド送信(受信データはBinary)
108
+
109
+ var str = "(画像転送コマンド)"
110
+
111
+ str += "PNG"
112
+
113
+
114
+
115
+ Thread.sleep(10)
116
+
117
+ socketControl?.sendCommand(str, true)
118
+
119
+
120
+
121
+ var timeout = 500
122
+
123
+
124
+
125
+ while (true) {
126
+
127
+ try {
128
+
129
+ Thread.sleep(80)
130
+
131
+ if(timeout < 0) {
132
+
133
+ break
134
+
135
+ } else if(receiveBuff != null) {
136
+
137
+ imageData = receiveBuff?.copyOf()
138
+
139
+ receiveBuff = null
140
+
141
+ Thread.sleep(10)
142
+
143
+ break
144
+
145
+ }
146
+
147
+ } catch (e: Exception) {
148
+
149
+ e.printStackTrace()
150
+
151
+ }
152
+
153
+
154
+
155
+ timeout -= 100
156
+
157
+ }
158
+
159
+
160
+
161
+ if(timeout < 0) {
162
+
163
+ continue
164
+
165
+ }
166
+
167
+
168
+
169
+ if(!checkBoxContinuousAcquisition.isChecked) {
170
+
171
+ isStop = true
172
+
173
+ }
174
+
175
+
176
+
177
+ class Mythread : Thread() {
178
+
179
+ override fun run() {
180
+
181
+ var bmp : Bitmap? = null
182
+
183
+ var imageSize = 0
184
+
185
+ if(imageData != null) {
186
+
187
+ imageSize = imageData?.size ?: 0
188
+
189
+ bmp = BitmapFactory.decodeByteArray(imageData, 0, imageSize)
190
+
191
+ }
192
+
193
+
194
+
195
+ if(imageSize == 0) {
196
+
197
+ Toast.makeText(applicationContext, getString(R.string.text_imageData_size_0), Toast.LENGTH_SHORT).show()
198
+
199
+ return
200
+
201
+ }
202
+
203
+
204
+
205
+ if(bbmp == null) {
206
+
207
+ Glide.with(applicationContext)
208
+
209
+ .load(bmp)
210
+
211
+ .into(imageViewWaveform)
212
+
213
+ bbmp = bmp
214
+
215
+ }
216
+
217
+ else {
218
+
219
+ requestOptions.placeholder(BitmapDrawable(resources,bmp))
220
+
221
+
222
+
223
+ Glide.with(applicationContext)
224
+
225
+ .load(bmp)
226
+
227
+ .apply(requestOptions)
228
+
229
+ .into(imageViewWaveform)
230
+
231
+ bbmp = bmp
232
+
233
+ }
234
+
235
+
236
+
237
+ if(isTriggerStoped) {
238
+
239
+ isTriggerStoped = false
240
+
241
+ }
242
+
243
+ }
244
+
245
+ }
246
+
247
+
248
+
249
+ val myRun = Mythread()
250
+
251
+ runOnUiThread(myRun)
252
+
253
+ myRun.join()
254
+
255
+
256
+
257
+ Thread.sleep(1)
258
+
259
+ }
260
+
261
+
262
+
263
+ if(checkBoxContinuousAcquisition.isChecked) {
264
+
265
+ receiveBuff = null
266
+
267
+
268
+
269
+ // 画像転送コマンド送信(受信データはBinary)
270
+
271
+ var str = "(画像転送コマンド) "
272
+
273
+ str += "PNG"
274
+
275
+
276
+
277
+ Thread.sleep(100)
278
+
279
+ socketControl?.sendCommand(str, true)
280
+
281
+
282
+
283
+ while (true) {
284
+
285
+ try {
286
+
287
+ Thread.sleep(100)
288
+
289
+ if(receiveBuff != null) {
290
+
291
+ imageData = receiveBuff?.copyOf()
292
+
293
+ receiveBuff = null
294
+
295
+ Thread.sleep(10)
296
+
297
+ break
298
+
299
+ }
300
+
301
+ } catch (e: Exception) {
302
+
303
+ e.printStackTrace()
304
+
305
+ }
306
+
307
+ }
308
+
309
+
310
+
311
+ class Mythread2 : Thread() {
312
+
313
+ override fun run() {
314
+
315
+ var bmp : Bitmap? = null
316
+
317
+ var imageSize = 0
318
+
319
+ if(imageData != null) {
320
+
321
+ imageSize = imageData?.size ?: 0
322
+
323
+ bmp = BitmapFactory.decodeByteArray(imageData, 0, imageSize)
324
+
325
+ }
326
+
327
+
328
+
329
+ if(imageSize == 0) {
330
+
331
+ Toast.makeText(applicationContext, getString(R.string.text_imageData_size_0), Toast.LENGTH_SHORT).show()
332
+
333
+ return
334
+
335
+ }
336
+
337
+
338
+
339
+ if(bbmp == null) {
340
+
341
+ Glide.with(applicationContext)
342
+
343
+ .load(bmp)
344
+
345
+ .into(imageViewWaveform)
346
+
347
+ bbmp = bmp
348
+
349
+ }
350
+
351
+ else {
352
+
353
+ requestOptions.placeholder(BitmapDrawable(resources,bmp))
354
+
355
+
356
+
357
+ Glide.with(applicationContext)
358
+
359
+ .load(bmp)
360
+
361
+ .apply(requestOptions)
362
+
363
+ .into(imageViewWaveform)
364
+
365
+ bbmp = bmp
366
+
367
+ }
368
+
369
+
370
+
371
+
372
+
373
+ if(isTriggerStoped) {
374
+
375
+ isTriggerStoped = false
376
+
377
+ }
378
+
379
+ }
380
+
381
+ }
382
+
383
+
384
+
385
+ val myRun2 = Mythread2()
386
+
387
+ runOnUiThread(myRun2)
388
+
389
+ myRun2.join()
390
+
391
+ }
392
+
393
+
394
+
395
+ class Mythread3 : Thread() {
396
+
397
+ override fun run() {
398
+
399
+ buttonGetScreenImage.isEnabled = true
400
+
401
+ buttonSave.isEnabled = true
402
+
403
+ Toast.makeText(applicationContext, getString(R.string.text_image_acquisition_stop), Toast.LENGTH_SHORT).show()
404
+
405
+ }
406
+
407
+ }
408
+
409
+
410
+
411
+ val myRun3 = Mythread3()
412
+
413
+ runOnUiThread(myRun3)
414
+
415
+ myRun3.join()
416
+
417
+ }).start()
418
+
419
+ }
420
+
421
+ ```
422
+
423
+
424
+
425
+
426
+
427
+ ソケット通信でのデータ送信部分
428
+
429
+ ```kotlin
430
+
431
+ fun sendCommand(sendStr: String, isBinaryReceive: Boolean): Boolean {
432
+
433
+ if (this.socketClient?.isConnect() != true) {
434
+
435
+ // 未接続
436
+
437
+ return false
438
+
439
+ }
440
+
441
+
442
+
443
+ this.isBinary = isBinaryReceive
444
+
445
+ this.receiveBuff = null
446
+
447
+ this.receiveNum = 0
448
+
449
+ val str = sendStr + "\r\n"
450
+
451
+ val data = str.toByteArray(Charsets.UTF_8)
452
+
453
+ this.socketClient?.sendThread(data)
454
+
455
+
456
+
457
+ return true
458
+
459
+ }
460
+
461
+
462
+
463
+ fun sendThread(data : ByteArray) : Boolean {
464
+
465
+ var result = false
466
+
467
+ this.sendBuff = data
468
+
469
+ try {
470
+
471
+ thread {
472
+
473
+ result = send(sendBuff)
474
+
475
+ }.join()
476
+
477
+ }
478
+
479
+ catch (e : Exception) {
480
+
481
+ Log.d("TCP/IP sendTh", e.toString())
482
+
483
+ }
484
+
485
+ return result
486
+
487
+ }
488
+
489
+
490
+
491
+ private fun send(data : ByteArray) : Boolean {
492
+
493
+ var result = false
494
+
495
+
496
+
497
+ try {
498
+
499
+ output?.write(data, 0, data.size)
500
+
501
+ output?.flush()
502
+
503
+ result = true
504
+
505
+ } catch (e : Exception) {
506
+
507
+ Log.e("TCP/IP send", e.toString())
508
+
509
+ return result
510
+
511
+ }
512
+
513
+ return result
514
+
515
+ }
516
+
517
+ ```
518
+
519
+
520
+
521
+
522
+
523
+
524
+
53
525
  ### 補足情報(FW/ツールのバージョンなど)
54
526
 
55
527