はじめに
まだまだ計測機器と通信はRS-232Cが現役です。
ある計測機器(USB-miniB/RS-232C)とAndroidでRS-232C通信できないかと相談がありました。
そこでUSB-miniB/RS-232C(変換ケーブル)で通信できるか調査しました。
先に結論を書くと、
- USB-TypeC→USB-TypeA変換→USB-miniBでは計測機器が認識できない端末あり。
- USB-TypeC→RS-232C変換ケーブル(ラトックシステム製)→RS-232CではUSB-TypeCの端末で認識できました。
調査環境
計測機器の認識調査
- UsbManager. getDeviceList()でUSB機器を検索します。
- 見つかったUSB機器情報をテキストに表示します。
- USB機器(計測機器/変換ケーブル)が見つからない場合、認識しないと判断します。
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import android.hardware.usb.UsbDevice
import android.hardware.usb.UsbManager
class MainActivity : AppCompatActivity() {
private lateinit var usbManager:UsbManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
usbManager = getSystemService(Context.USB_SERVICE) as UsbManager
btnTest.setOnClickListener {
// USB機器を検索してテキストに表示
val devices = usbManager.deviceList
var str = ""
for (device in devices.values) {
val name = device.deviceName
str += "Name:${name}\n"
str += "Vendor:{$device.vendorId}\n"
str += "Product:{$device.productName}\n"
str += "\n"
}
txtMsg.text = str
}
}
}
USB-miniBで調査
- USB-microB/Type-C→USB TypeA変換ケーブル→計測機器(USB-miniB)とAndroid端末の組み合わせで、計測機器を認識できる端末/できない端末があった。
- USB-Type-Cでは認識できる端末/できない端末があり、変換ケーブルと端末の選定が難しくなった。
計測機器を認識できる組み合わせ
- USB-microB→USB-TypeA→USB-miniB
端末 |
OS |
認識 |
Nexus7 |
6.0.1 |
O |
Moto5G |
7.0 |
O |
- USB-TypeC→USB-TypeA→USB-miniB
計測機器を認識できない
- USB-TypeC→USB-TypeA→USB-miniB
端末 |
OS |
認識 |
ZenfoneAR |
7.0 |
X |
Zenfone5 |
8.0.0 |
X |
USB-TypeC→RS-232C変換ケーブル(RS-USB60FC)で調査
- 下記の全ての端末で認識できました。
- USB-TypeC→RS-USB60FC
端末 |
OS |
認識 |
ZenfoneAR |
7.0 |
O |
Zenfone3 Deluxe |
8.0.0 |
O |
Zenfone5 |
8.0.0 |
O |
Nexus5X |
8.1.0 |
O |
Essential Phone PH-1 |
10.0 |
O |
Zenfone5Z |
10.0 |
O |
Pixel3a |
10.0 |
O |
おわりに
- USB-TypeC→USB-TypeA変換→USB-miniBでは計測機器が認識できない端末あり。
- USB-TypeC→RS-232C変換ケーブル(ラトックシステム製)→RS-232CではUSB-TypeCの端末で認識できました。
- ラトックシステム製のRS-232C変換ケーブルは、USB-TypeA/miniB/microB/Type-Cのタイプが用意されているので、ターゲット端末に応じて使おうと思います。