Étant donné que la méthode de communication série avec Android n'est pas tellement introduite, je vais la décrire.
Android REX-USB60MB (conversion USB-série)
Android6.0 AndroidStudio Kotlin
Depuis la page d'accueil FTDI, cliquez ** ici ** dans la section ** Mise à jour Java D2XX incluant le support FT4222H ** pour télécharger la bibliothèque. Page d'accueil FTDI
Décompressez le fichier compressé téléchargé
Utilisez uniquement le fichier ** d2xx.jar ** situé dans le dossier ** root **. ** device_filter.xml ** dans le dossier ** res / xml / ** est ancien, alors créez-le sans l'utiliser.
Cliquez sur ▼ à droite qui dit ** Android ** en haut de l'arborescence du projet et sélectionnez ** Projet ** dans la liste qui apparaît. Ensuite, l'arborescence sera différente de la précédente.
Ajoutez d2xx.jar à ** app / libs ** par glisser-déposer. Cliquez avec le bouton droit sur le fichier d2xx.jar ajouté et exécutez ** Ajouter à la bibliothèque **. L'opération supplémentaire ajoute uniquement des ** fichiers d'implémentation ('libs / j2xx.jar') ** à build.grade (app). Si la bibliothèque n'est plus nécessaire, supprimez cette ligne et supprimez libs / j2xx.jar pour la récupérer.
Lorsque vous avez terminé d'ajouter d2xx.jar à la bibliothèque, cliquez sur ▼ à droite pour le renvoyer à ** Android **, qui est le ** projet ** le plus élevé dans l'arborescence du projet.
Dans 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>
Configurez pour utiliser le périphérique USB de cette manière. Je n'utilise pas ** @ xml / device_filter **, mais juste au cas où.
sample.kt
var mFTDIManager = D2xxManager.getInstance(this.context)
var deviceCount = mFTDIManager?.createDeviceInfoList(this.context) ?: 0
Vérifiez s'il peut être reconnu par ces deux lignes. Puisque ** deviceCount ** est le nombre d'appareils reconnus, il réussit si 1 ou plus est entré.
Comme vous pouvez voir qui a fait fonctionner l'exemple, l'exemple ne reconnaît pas réellement REX-USB60MB. La raison pour laquelle je ne l'ai pas reconnu est dans le fichier ** device_filter.xml ** que j'ai abandonné car il était ancien.
device-filter.xml
<usb-device vendor-id="1412" product-id="45088" /> <!-- REX-USB60F -->
Comme commenté, ** REX-USB60F ** est enregistré, mais ** REX-USB60MB ** ne l'est pas. Alors pourquoi ne pas définir REX-USB60MB ici? J'ai pensé, mais cela ne rendrait pas pratique l'utilisation du modèle supérieur ** RS-USB60FC ** ou ** REX-USB60MI ** pour les tablettes, car il faudrait le changer à nouveau.
Je vais donc essayer de reconnaître le périphérique de communication série connecté et de l'utiliser.
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)
}
Les périphériques USB semblent fonctionner si vous connaissez ** Vendor ID ** et ** Product ID **, donc ce n'est pas grave si vous pouvez les obtenir, mais je suis inquiet si je ne sais pas ce qu'est l'appareil, donc j'obtiens également ** ManufacturerName ** J'essaye de le faire.
L'appareil que vous souhaitez utiliser n'est pas reconnu, donc enregistrez-le manuellement.
sample.kt
var mFTDIManager = D2xxManager.getInstance(this.context)
mFTDIManager?.setVIDPID(1412,45115)
var deviceCount = mFTDIManager?.createDeviceInfoList(this.context) ?: 0
Vous pouvez le forcer à être reconnu en passant ** VendorID ** et ** ProductID ** dans l'argument de ** setVIDPID **. Si la valeur de ** deviceCount ** est égale ou supérieure à 1, l'opération réussit.
Recommended Posts