質問編集履歴
7
IOデータ USB-RSAQ6 に修正。
title
CHANGED
File without changes
|
body
CHANGED
@@ -189,7 +189,7 @@
|
|
189
189
|
|
190
190
|
次の2つのシリアル通信を試しました。
|
191
191
|
```
|
192
|
-
|
192
|
+
IOデータ USB-RSAQ6
|
193
193
|
usb-device vendor-id="1659" product-id="8963"
|
194
194
|
秋月電子通商のFT234X 超小型USBシリアル変換モジュール
|
195
195
|
usb-device vendor-id="1027" product-id="24597"
|
6
通信ができた旨、ご報告。
title
CHANGED
File without changes
|
body
CHANGED
@@ -227,7 +227,7 @@
|
|
227
227
|
/dev/bus/001/026
|
228
228
|
と出ました。
|
229
229
|
|
230
|
-
### 送信ができました。(ご報告)
|
230
|
+
### 送信ができました。(ご報告)(2019年6月中旬)
|
231
231
|
usb-serial-for-androidを使わない方法で、送信ができました。
|
232
232
|
[AndroidのUSBホスト(OTG)機能を使って、接続されたArduinoとシリアル通信してみる話](https://relativelayout.hatenablog.com/entry/2016/08/12/085051)
|
233
233
|
を参考にしました。(ぐぐったり、null pointerに悩まされながら)
|
@@ -236,4 +236,12 @@
|
|
236
236
|
を参考にやろうと思います。
|
237
237
|
両方できたら、「自己解決(いろいろお世話になっていますが...)」と
|
238
238
|
しようと思います。
|
239
|
-
よろしくお願いいたします。
|
239
|
+
よろしくお願いいたします。
|
240
|
+
|
241
|
+
### 受信ができませんでした。(ご報告)(2019July04)
|
242
|
+
いろいろ、インターネットをさまよったのですが、
|
243
|
+
serialドライバーを使わない方法での受信ができませんでした。
|
244
|
+
|
245
|
+
### FTDI社のFT232RL用ドライバーを使ったら、FT234Xは通信ができた。(2019July04)
|
246
|
+
[Fab蔵さんのページ:201. USB Host事前準備](https://sites.google.com/a/gclue.jp/fab-zang-docs/sumafo-lian-xie/2-android-arduino-rogu-chu-li) から続く内容を実行したら動きました。
|
247
|
+
これをもって、自己解決としたいと思います。
|
5
送信ができた旨、ご報告。
title
CHANGED
File without changes
|
body
CHANGED
@@ -225,4 +225,15 @@
|
|
225
225
|
に従って、getDeviceListしてみました。
|
226
226
|
シリアル機器をUSBに接続すると
|
227
227
|
/dev/bus/001/026
|
228
|
-
と出ました。
|
228
|
+
と出ました。
|
229
|
+
|
230
|
+
### 送信ができました。(ご報告)
|
231
|
+
usb-serial-for-androidを使わない方法で、送信ができました。
|
232
|
+
[AndroidのUSBホスト(OTG)機能を使って、接続されたArduinoとシリアル通信してみる話](https://relativelayout.hatenablog.com/entry/2016/08/12/085051)
|
233
|
+
を参考にしました。(ぐぐったり、null pointerに悩まされながら)
|
234
|
+
受信は、
|
235
|
+
[自作のUSBデバイスを、Androidで動かす](http://blog.kshoji.jp/2012/12/android-usb-host.html)
|
236
|
+
を参考にやろうと思います。
|
237
|
+
両方できたら、「自己解決(いろいろお世話になっていますが...)」と
|
238
|
+
しようと思います。
|
239
|
+
よろしくお願いいたします。
|
4
試したことがソースの変更に伴い変わっていたので、変えた。
title
CHANGED
File without changes
|
body
CHANGED
@@ -165,9 +165,13 @@
|
|
165
165
|
は、そのままです。
|
166
166
|
|
167
167
|
### 試したこと
|
168
|
-
シリアルの端末がつながると、スイッチの反応がなくなるはずなのに、
|
169
|
-
ボタンをタップすると数値がインクリメントされる。
|
170
168
|
|
169
|
+
シリアルの端末がつながると、counter_textに1が入るはずなのに、
|
170
|
+
counter_text2に1が入る。
|
171
|
+
|
172
|
+
(古いソースでは、スイッチの反応がなくなるはずなのに、
|
173
|
+
ボタンをタップすると数値がインクリメントされる。)
|
174
|
+
|
171
175
|
### 補足情報(FW/ツールのバージョンなど)
|
172
176
|
シリアルの端末がつながると、ポップアップで許可を求めてきます。
|
173
177
|
API19
|
3
コードが乱れたので直しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,7 +16,6 @@
|
|
16
16
|
activity_main.xml
|
17
17
|
(文字数が...と出たので削除)
|
18
18
|
|
19
|
-
```
|
20
19
|
helloworld4/app/src/main/res/xml/device_filter.xml
|
21
20
|
```xml
|
22
21
|
<?xml version="1.0" encoding="utf-8"?>
|
2
追加情報を記載しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -13,89 +13,99 @@
|
|
13
13
|
|
14
14
|
### 該当のソースコード
|
15
15
|
MainActivity.java
|
16
|
+
activity_main.xml
|
17
|
+
(文字数が...と出たので削除)
|
18
|
+
|
19
|
+
```
|
20
|
+
helloworld4/app/src/main/res/xml/device_filter.xml
|
21
|
+
```xml
|
22
|
+
<?xml version="1.0" encoding="utf-8"?>
|
23
|
+
<resources>
|
24
|
+
<!-- 0x067B / 0x2303: USB serial232c ok -->
|
25
|
+
<usb-device vendor-id="1659" product-id="8963" />
|
26
|
+
|
27
|
+
<!-- 0x067B / 0x2303: USB serial232c -->
|
28
|
+
<usb-device vendor-id="1659" product-id="8963" />
|
29
|
+
|
30
|
+
<!-- 0x0403 / 0x6001: FTDI FT232R UART -->
|
31
|
+
<usb-device vendor-id="1027" product-id="24577" />
|
32
|
+
|
33
|
+
<!-- 0x0403 / 0x6015: FTDI FT231X ok -->
|
34
|
+
<usb-device vendor-id="1027" product-id="24597" />
|
35
|
+
|
36
|
+
<!-- 0x2341 / Arduino -->
|
37
|
+
<usb-device vendor-id="9025" />
|
38
|
+
|
39
|
+
<!-- 0x16C0 / 0x0483: Teensyduino -->
|
40
|
+
<usb-device vendor-id="5824" product-id="1155" />
|
41
|
+
|
42
|
+
<!-- 0x10C4 / 0xEA60: CP210x UART Bridge -->
|
43
|
+
<usb-device vendor-id="4292" product-id="60000" />
|
44
|
+
|
45
|
+
<!-- 0x067B / 0x2303: Prolific PL2303 -->
|
46
|
+
<usb-device vendor-id="1659" product-id="8963" />
|
47
|
+
|
48
|
+
<!-- 0x1a86 / 0x7523: Qinheng CH340 -->
|
49
|
+
<usb-device vendor-id="6790" product-id="29987" />
|
50
|
+
</resources>
|
51
|
+
```
|
52
|
+
|
53
|
+
### 該当のソースコード(2019/05/29 17:00修正版)
|
54
|
+
MainActivity.java
|
16
55
|
```java
|
17
|
-
package xx.xx.xxxx.
|
56
|
+
package xx.xx.xxxx.helloworld5;
|
18
57
|
|
19
58
|
import android.content.Context;
|
20
59
|
import android.support.v7.app.AppCompatActivity;
|
21
60
|
import android.os.Bundle;
|
22
61
|
import java.io.*;
|
23
62
|
import android.hardware.usb.*;
|
24
|
-
import com.hoho.android.usbserial.driver.*;
|
25
63
|
import android.util.Log;
|
26
|
-
import android.view.View;
|
27
|
-
import android.widget.Button;
|
28
64
|
import android.widget.TextView;
|
65
|
+
import com.hoho.android.usbserial.driver.*;
|
29
66
|
|
30
67
|
public class MainActivity extends AppCompatActivity {
|
31
68
|
UsbSerialDriver usb;
|
32
|
-
byte my_echo[];
|
33
|
-
String result;
|
34
69
|
int counter = 0;
|
70
|
+
int counter2 = 0;
|
35
71
|
|
36
72
|
@Override
|
37
73
|
protected void onCreate(Bundle savedInstanceState) {
|
38
74
|
super.onCreate(savedInstanceState);
|
39
75
|
setContentView(R.layout.activity_main);
|
40
76
|
|
41
|
-
|
77
|
+
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
78
|
+
usb = UsbSerialProber.acquire(manager);
|
42
79
|
if (usb != null) {
|
43
|
-
try
|
80
|
+
try{
|
44
81
|
usb.open();
|
45
82
|
usb.setBaudRate(19200);
|
46
83
|
start_read_thread(); // シリアル通信を読むスレッドを起動
|
84
|
+
}
|
47
|
-
|
85
|
+
catch(IOException e){
|
48
86
|
e.printStackTrace();
|
49
87
|
}
|
50
|
-
|
88
|
+
counter++;
|
89
|
+
String str = String.valueOf(counter);
|
51
|
-
|
90
|
+
TextView my_counter = findViewById(R.id.counter_text);
|
52
|
-
button.setOnClickListener(new View.OnClickListener() {
|
53
|
-
@Override
|
54
|
-
|
91
|
+
my_counter.setText(str);
|
55
|
-
if (usb != null) {
|
56
92
|
|
93
|
+
while(true) {
|
57
|
-
|
94
|
+
try {
|
58
|
-
|
95
|
+
usb.write("o".getBytes("UTF-8"), 1);
|
59
|
-
|
96
|
+
} catch (UnsupportedEncodingException e) {
|
60
|
-
|
97
|
+
// 発生し得ないが、書くしかない
|
61
|
-
|
98
|
+
// https://qiita.com/niharu/items/662b130149ee180f7f34
|
62
|
-
|
99
|
+
} catch (IOException e) {
|
63
|
-
|
100
|
+
e.printStackTrace();
|
64
|
-
}
|
65
|
-
|
66
|
-
// https://codeday.me/jp/qa/20190316/423730.html
|
67
|
-
try {
|
68
|
-
Thread.sleep(100);
|
69
|
-
} catch (InterruptedException e) {
|
70
|
-
e.printStackTrace();
|
71
|
-
}
|
72
|
-
|
73
|
-
try {
|
74
|
-
usb.read(my_echo, my_echo.length);
|
75
|
-
} catch (IOException e) {
|
76
|
-
e.printStackTrace();
|
77
|
-
}
|
78
|
-
|
79
|
-
try {
|
80
|
-
result = new String(my_echo, "UTF-8");
|
81
|
-
} catch (UnsupportedEncodingException e) {
|
82
|
-
// 発生し得ないが、書くしかない
|
83
|
-
// https://qiita.com/niharu/items/662b130149ee180f7f34
|
84
|
-
}
|
85
|
-
} else {
|
86
|
-
TextView textView = findViewById(R.id.textView);
|
87
|
-
textView.setText("tap!!");
|
88
|
-
|
89
|
-
counter++;
|
90
|
-
String str = String.valueOf(counter);
|
91
|
-
TextView my_counter = findViewById(R.id.my_counter);
|
92
|
-
my_counter.setText(str);
|
93
|
-
|
94
|
-
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
|
95
|
-
usb = UsbSerialProber.acquire(manager);
|
96
101
|
}
|
97
102
|
}
|
103
|
+
} else {
|
104
|
+
counter2++;
|
105
|
+
String str2 = String.valueOf(counter2);
|
106
|
+
TextView my_counter2 = findViewById(R.id.counter_text2);
|
107
|
+
my_counter2.setText(str2);
|
98
|
-
}
|
108
|
+
}
|
99
109
|
}
|
100
110
|
public void start_read_thread(){
|
101
111
|
new Thread(new Runnable(){
|
@@ -104,7 +114,7 @@
|
|
104
114
|
while(true){
|
105
115
|
byte buf[] = new byte[256];
|
106
116
|
int num = usb.read(buf, buf.length);
|
107
|
-
if(num > 0) Log.v("
|
117
|
+
if(num > 0) Log.v("Arduino", new String(buf, 0, num)); // Arduinoから受信した値をlogcat出力
|
108
118
|
Thread.sleep(10);
|
109
119
|
}
|
110
120
|
}
|
@@ -119,12 +129,14 @@
|
|
119
129
|
}
|
120
130
|
}
|
121
131
|
```
|
122
|
-
|
132
|
+
AndroidManifest.xml
|
123
133
|
```xml
|
124
134
|
<?xml version="1.0" encoding="utf-8"?>
|
125
135
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
126
|
-
package="
|
136
|
+
package="xx.xx.xxxx.helloworld5">
|
127
|
-
|
137
|
+
<uses-feature android:name="android.hardware.usb.host" />
|
138
|
+
<!-- https://blog.integrityworks.co.jp/2017/12/20/permission-is-only-granted-to-system-app/ -->
|
139
|
+
<uses-permission android:name="android.permission.MANAGE_USB" />
|
128
140
|
<application
|
129
141
|
android:allowBackup="true"
|
130
142
|
android:icon="@mipmap/ic_launcher"
|
@@ -139,9 +151,8 @@
|
|
139
151
|
|
140
152
|
<category android:name="android.intent.category.LAUNCHER" />
|
141
153
|
</intent-filter>
|
142
|
-
|
143
154
|
<intent-filter>
|
144
|
-
|
155
|
+
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
|
145
156
|
</intent-filter>
|
146
157
|
<meta-data
|
147
158
|
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
|
@@ -152,38 +163,8 @@
|
|
152
163
|
</manifest>
|
153
164
|
```
|
154
165
|
helloworld4/app/src/main/res/xml/device_filter.xml
|
155
|
-
|
166
|
+
は、そのままです。
|
156
|
-
<?xml version="1.0" encoding="utf-8"?>
|
157
|
-
<resources>
|
158
|
-
<!-- 0x067B / 0x2303: USB serial232c ok -->
|
159
|
-
<usb-device vendor-id="1659" product-id="8963" />
|
160
167
|
|
161
|
-
<!-- 0x067B / 0x2303: USB serial232c -->
|
162
|
-
<usb-device vendor-id="1659" product-id="8963" />
|
163
|
-
|
164
|
-
<!-- 0x0403 / 0x6001: FTDI FT232R UART -->
|
165
|
-
<usb-device vendor-id="1027" product-id="24577" />
|
166
|
-
|
167
|
-
<!-- 0x0403 / 0x6015: FTDI FT231X ok -->
|
168
|
-
<usb-device vendor-id="1027" product-id="24597" />
|
169
|
-
|
170
|
-
<!-- 0x2341 / Arduino -->
|
171
|
-
<usb-device vendor-id="9025" />
|
172
|
-
|
173
|
-
<!-- 0x16C0 / 0x0483: Teensyduino -->
|
174
|
-
<usb-device vendor-id="5824" product-id="1155" />
|
175
|
-
|
176
|
-
<!-- 0x10C4 / 0xEA60: CP210x UART Bridge -->
|
177
|
-
<usb-device vendor-id="4292" product-id="60000" />
|
178
|
-
|
179
|
-
<!-- 0x067B / 0x2303: Prolific PL2303 -->
|
180
|
-
<usb-device vendor-id="1659" product-id="8963" />
|
181
|
-
|
182
|
-
<!-- 0x1a86 / 0x7523: Qinheng CH340 -->
|
183
|
-
<usb-device vendor-id="6790" product-id="29987" />
|
184
|
-
</resources>
|
185
|
-
```
|
186
|
-
|
187
168
|
### 試したこと
|
188
169
|
シリアルの端末がつながると、スイッチの反応がなくなるはずなのに、
|
189
170
|
ボタンをタップすると数値がインクリメントされる。
|
@@ -213,4 +194,32 @@
|
|
213
194
|
|
214
195
|
Q88のadbがなくて、ちまちまリリース用のakpをファイル転送してテストしています。
|
215
196
|
|
216
|
-
よろしくお願いいたします。
|
197
|
+
よろしくお願いいたします。
|
198
|
+
|
199
|
+
|
200
|
+
### 追加情報
|
201
|
+
ソースコードをリンク先に近い形にしました。
|
202
|
+
|
203
|
+
>通信相手をつないで『アプリの画面の R.id.button ボタンを
|
204
|
+
>押しても』usbがNULLのまま, という解釈であっていますでしょうか.
|
205
|
+
はい。
|
206
|
+
|
207
|
+
>なんのスイッチでしょう.
|
208
|
+
『アプリの画面の R.id.button ボタン』です。
|
209
|
+
|
210
|
+
>どのような「許可」を求められるのでしょうか
|
211
|
+
Open アプリ名 when this USB device is connected?
|
212
|
+
□Use by default for this USB device
|
213
|
+
「Cancel」「 OK」
|
214
|
+
で、チェックマークを入れずにOKをタップした後、
|
215
|
+
ボタンの反応しますので、usbがnullと判断しています。
|
216
|
+
|
217
|
+
マニフェストに
|
218
|
+
<uses-permission android:name="android.permission.MANAGE_USB" />
|
219
|
+
を追記してみましたが、変わりませんでした。
|
220
|
+
|
221
|
+
[AndroidのUSBホスト機能を緩く使ってみる](https://relativelayout.hatenablog.com/entry/2016/08/04/221216)
|
222
|
+
に従って、getDeviceListしてみました。
|
223
|
+
シリアル機器をUSBに接続すると
|
224
|
+
/dev/bus/001/026
|
225
|
+
と出ました。
|
1
githubの「ライブラリーの」ソースを読んでません。と追加。
title
CHANGED
File without changes
|
body
CHANGED
@@ -200,7 +200,7 @@
|
|
200
200
|
を取り込んでいます。
|
201
201
|
usb-serial-for-androidのグーグルコードが消えてしまって、情報が半分くらい
|
202
202
|
消え去っている。(githubに飛ばされた)
|
203
|
-
githubに公開されている、ソースは読んでいない...です。すいません。
|
203
|
+
githubに公開されている、ライブラリのソースは読んでいない...です。すいません。
|
204
204
|
[usb-serial-for-androidのgithub](https://github.com/mik3y/usb-serial-for-android)
|
205
205
|
|
206
206
|
次の2つのシリアル通信を試しました。
|