[JAVA] Verwenden Sie die serielle Kommunikation unter Android

Einführung

Da die Methode der seriellen Kommunikation unter Android nicht so häufig eingeführt wird, werde ich sie beschreiben.

Zielgerät

Android REX-USB60MB (USB-serielle Konvertierung)

Zielumgebung

Android6.0 AndroidStudio Kotlin

herunterladen

Klicken Sie auf der FTDI-Website ** hier ** im Abschnitt ** Java D2XX-Update einschließlich FT4222H-Unterstützung **, um die Bibliothek herunterzuladen. FTDI-Homepage

Entpacken Sie die heruntergeladene komprimierte Datei

Verwenden Sie nur die Datei ** d2xx.jar ** im Ordner ** root **. ** device_filter.xml ** im Ordner ** res / xml / ** ist alt, erstellen Sie es also, ohne es zu verwenden.

Fügen Sie der Bibliothek d2xx.jar hinzu

Klicken Sie oben im Projektbaum auf das ▼ rechts mit der Aufschrift ** Android ** und wählen Sie ** Projekt ** aus der angezeigten Liste aus. Dann unterscheidet sich die Baumanzeige von der vorherigen.

Fügen Sie d2xx.jar per Drag & Drop zu ** app / libs ** hinzu. Klicken Sie mit der rechten Maustaste auf die hinzugefügte Datei d2xx.jar und führen Sie ** Zur Bibliothek hinzufügen ** aus. Die zusätzliche Operation fügt nur ** Implementierungsdateien ('libs / j2xx.jar') ** zu build.grade (app) hinzu. Wenn die Bibliothek nicht mehr benötigt wird, löschen Sie diese Zeile und löschen Sie libs / j2xx.jar, um sie wiederherzustellen.

Wenn Sie d2xx.jar zur Bibliothek hinzugefügt haben, klicken Sie rechts auf ▼, um zu ** Android ** zurückzukehren, dem obersten ** Projekt ** im Projektbaum.

Bereit zur Verwendung eines USB-Geräts

In Androidmanifest.xml

manifest.xml


        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
            </intent-filter>
            <meta-data
                android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/device_filter" />
        </activity>

Richten Sie das USB-Gerät auf diese Weise ein. Ich benutze nicht ** @ xml / device_filter **, sondern nur für den Fall.

Überprüfen Sie, ob es erkannt wird

sample.kt


        var mFTDIManager = D2xxManager.getInstance(this.context)
        var deviceCount = mFTDIManager?.createDeviceInfoList(this.context) ?: 0

Überprüfen Sie, ob diese beiden Zeilen erkannt werden können. Da ** deviceCount ** die Anzahl der erkannten Geräte ist, ist es erfolgreich, wenn 1 oder mehr eingegeben werden.

REX-USB60MB wird nicht erkannt

Wie Sie sehen können, wer das Beispiel zum Laufen gebracht hat, erkennt das Beispiel REX-USB60MB nicht. Der Grund für die Nichterkennung liegt in der Datei ** device_filter.xml **, die ich abgebrochen habe, weil sie alt war.

device-filter.xml


	<usb-device vendor-id="1412" product-id="45088" /> <!-- REX-USB60F -->

Wie kommentiert, ist ** REX-USB60F ** registriert, ** REX-USB60MB ** jedoch nicht. Warum also nicht REX-USB60MB hier definieren? Ich dachte, aber das würde es unpraktisch machen, das High-End-Modell ** RS-USB60FC ** und ** REX-USB60MI ** für Tablets zu verwenden, da es erneut geändert werden müsste.

Also werde ich versuchen, das angeschlossene serielle Kommunikationsgerät zu erkennen und zu verwenden.

comm.kt


    var usbDevice = mutableMapOf<String,Any>()
    var usbDeviceList : MutableList<MutableMap<String,Any>> = mutableListOf()
        val manager = getSystemService<UsbManager>(context, UsbManager::class.java)
        usbDeviceList.clear()
        if (manager == null) return
        for(item in manager.deviceList) {
            val device: UsbDevice = item.value
            val str : String = device.manufacturerName ?: ""
            val vid = device.vendorId
            val pid = device.productId
            usbDevice = mutableMapOf("vid" to vid,"pid" to pid ,"key" to item.key,"name" to  str)
            usbDeviceList.add(usbDevice)
            mFTDIManager?.setVIDPID(vid,pid)
        }

USB-Geräte scheinen zu funktionieren, wenn Sie ** Vendor ID ** und ** Product ID ** kennen. Es ist also in Ordnung, wenn Sie sie erhalten können, aber ich mache mir Sorgen, wenn ich nicht weiß, was das Gerät ist, also erhalte ich auch ** ManufacturerName ** Ich versuche es zu tun.

Registrieren Sie das zu verwendende Gerät

Das Gerät, das Sie verwenden möchten, wird nicht erkannt. Registrieren Sie es daher manuell.

sample.kt


        var mFTDIManager = D2xxManager.getInstance(this.context)
        mFTDIManager?.setVIDPID(1412,45115)
        var deviceCount = mFTDIManager?.createDeviceInfoList(this.context) ?: 0

Sie können die Erkennung erzwingen, indem Sie ** VendorID ** und ** ProductID ** im Argument von ** setVIDPID ** übergeben. Wenn der Wert von ** deviceCount ** 1 oder mehr ist, ist dies erfolgreich.

Referenzseite

Referenzseite

Recommended Posts

Verwenden Sie die serielle Kommunikation unter Android
Verwenden Sie nativen Code unter Android
[Kostenlose Studie für Erwachsene] Akustische Kommunikation mit Android
Versuchen Sie die Kommunikation mit gRPC auf einem Android + Java-Server
Verwenden Sie perltidy unter CentOS 8
[Android] Hinweise zu XML
Verwenden Sie mod_auth_cas unter CentOS 8
Verwenden Sie Corretto 11 mit Heroku
Verwenden Sie cpplapack mit Ubuntu
[Android Studio] Ich möchte eine Maven-Bibliothek unter Android verwenden
Mehrteilige Übertragungsbibliothek auf Android
So verwenden Sie OpenCV 4 unter Android und zeigen die Kamera live an
ROS App Entwicklung auf Android
Beispiel für eine serielle Kommunikation mit jSerialComm
Beispiel für eine serielle Kommunikation mit purejavacomm
Ereignisbehandlung mit RxBus unter Android
Wie man eine Ansicht auf Android "aushöhlt"
ReactNative Android Bridge Kommentar
[Android] Holen Sie sich das Datum von Montag
Verwenden Sie Docker Compose unter Windows 10 Home
Erhalten Sie JUnit-Codeabdeckung für Android.
Verwendung von Ruby on Rails
Verwendung von Bio-Formaten unter Ubuntu 20.04
Watson Assistant (ehemals Conversation) auf Android
Hinweise zum Aufrufen von Installer in der Android App
Einfach zu bedienender Cloud Firestore (Android)
Speichern Sie ArrayList mit GSON unter Android
Verwenden Sie den Befehl iostat unter CentOS 8
Verwenden Sie die Vervollständigung in Eclipse auf dem Mac
[Android] Empfangen Sie die Absicht mit Broadcast Reciever
Verwenden Sie Docker CE (Official) mit CentOS 8
Implementieren Sie die Welligkeitsdarstellung in Bildern auf Android
Beschleunigen Sie die Erfassung von Standortinformationen unter Android
Was war keine faire Verwendung der Java-API-Umleitung unter Android?