Arduino 安卓 USB 连接

2023-12-08

我正在使用 Arduino杜米拉诺夫 and Nexus 7。我已成功检测到 Arduino 板并显示供应商 ID 和产品 ID。我正在尝试将数据从平板电脑传输到 Arduino 板并尝试闪烁LED在黑板上。 Android 的代码如下。

主要活动.java

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
        UsbDeviceConnection connection;
        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
        Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
        UsbDevice device = null;
        while(deviceIterator.hasNext()){
            device = deviceIterator.next();
            String s = device.getDeviceName();
            int pid = device.getProductId();
            int did = device.getDeviceId();
            int vid = device.getVendorId();
            TextView tv = (TextView) findViewById(R.id.textview);
            tv.setText(s+"\n"+Integer.toString(pid)+"\n"+Integer.toString(did));
        }
        connection = manager.openDevice(device);
        DataTransfer dt = new DataTransfer(device,connection);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

数据传输.java

public class DataTransfer extends Thread {
    UsbDevice device;
    UsbDeviceConnection connection;
    byte data = 1;
    public DataTransfer(UsbDevice device, UsbDeviceConnection connection) {
        // TODO: Auto-generated constructor stub
        device = this.device;
        connection = this.connection;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        super.run();
        UsbInterface usbIf = device.getInterface(0);
        UsbEndpoint end1 = usbIf.getEndpoint(0);

        //UsbRequest ureq = connection.requestWait();
        final Object[] sSendLock = new Object[]{};
        boolean mStop = false;
        byte mData = 0x00;

        if(!connection.claimInterface(usbIf, true))
        {
            return;
        }

        connection.controlTransfer(0x21, 34, 0, 0, null, 0, 0);
        connection.controlTransfer(0x21, 32, 0, 0, new byte[] { (byte) 0x80,
                0x25, 0x00, 0x00, 0x00, 0x00, 0x08 }, 7, 0);
        connection.controlTransfer(0x40, 0x03, 0x4138, 0, null, 0, 0); //Baudrate 9600

        UsbEndpoint epIN = null;
        UsbEndpoint epOUT = null;

        for (int i = 0; i < usbIf.getEndpointCount(); i++) {
            if (usbIf.getEndpoint(i).getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) {
                if (usbIf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN)
                    epIN = usbIf.getEndpoint(i);
                else
                    epOUT = usbIf.getEndpoint(i);
            }
        }

        for (;;) { // This is the main loop for transferring
            synchronized (sSendLock) { //OK, there should be a OUT queue, no guarantee that the byte is sent actually.
                try {
                    sSendLock.wait();
                }
                catch (InterruptedException e) {
                    if (mStop) {
                        return;
                    }
                    e.printStackTrace();
                }
                connection.bulkTransfer(epOUT,new byte[] {data}, 1, 0);
            }
        }
    }
}

我的 Arduino 代码是:

int incomingByte = 0; // For incoming serial data
void setup() {
    pinMode(13, OUTPUT);
    Serial.begin(9600); // Opens serial port, sets data rate to 9600 bps.
}

void loop() {
    // Send data only when you receive data:
    if (Serial.available() > 0) {
        // Read the incoming byte:
        incomingByte = Serial.read();
        digitalWrite(13, HIGH);   // Set the LED on
        delay(1000);              // Wait for a second
        digitalWrite(13, LOW);    // Set the LED off

        // Say what you got:
        Serial.print("I received: ");
        Serial.println(incomingByte, DEC);
    }
}

问题是 Arduino 板上没有 LED 发光。我不确定问题出在哪里,因为我刚刚开始在这个领域工作。


您引用的项目http://android.serverbox.ch/?p=549注释中的内容仅适用于更新的 Arduino 板,例如 Uno(或使用它们实现的 CDC-ACM 串行 USB 方案的其他板)。

较旧的 Arduino 板(例如 duemilanove)使用 FTDI USB 串行芯片,这需要不同的 USB 操作。

您也许可以在某个地方找到有关将 FT232 系列 USB 串行转换器与 Android 的 USB 主机 api 接口的信息(FTDI 部件广泛用于嵌入式系统中,因此您可能会找到一些东西),或者您可以获得 Uno 板来尝试您已有的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino 安卓 USB 连接 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 使用 Android 前台服务为 MediaPlayer 创建通知

    问题就在这里 我目前正在开发一个应用程序 该应用程序必须提供 A 广播播放器 来自 URL 的 AAC 直播 还有一个播客播放器 来自 URL 的 MP3 流 该应用程序必须能够在后台运行 Android 服务 并通过以下方式向用户公开持续
  • GCM 向主题发送消息:TOO_MANY_TOPICS 错误

    以前 GCM 每个应用程序有 100 万个主题订阅的限制 我发现他们现在已经取消了这一限制 基于发布 订阅模型 主题消息支持 每个应用程序无限订阅 https developers google com cloud messaging to
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • 在 Google Analytics 中跟踪应用程序版本

    我正在使用谷歌分析模块 https marketplace appcelerator com apps 5081 2014113336 https marketplace appcelerator com apps 5081 2014113
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • ROOM迁移过程中如何处理索引信息

    CODE Entity tableName UserRepo indices Index value id unique true public class GitHubRepo PrimaryKey autoGenerate true p
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少

随机推荐

  • Ruby on Rails - $rails 服务器失败,因为无法找到 uglifier gem

    我正在开始我的第一个 Ruby 项目 我正在遵循的教程让我使用 Rails 当我尝试跑步时 rails server我收到一条错误消息 找不到 gemuglifier gt 1 3 0 x86 mingw32在这台机器上可用的宝石中 我在使
  • 声明类型不同时的不同行为(Set 与 TreeSet)

    var set TreeSet 5 4 3 2 1 println set val diffSet TreeSet Int set if I change above code to val diffSet Set Int set the
  • 可编辑标签控件

    有谁知道我如何创建可编辑标签控件 我需要我的用户能够编辑标签 还可以更改其样式信息的部分 但在网上找不到任何有用的信息 如有任何帮助 我们将不胜感激 谢谢 您可以创建自定义控件 需要一些工作 该控件内部可以有一个标准标签控件 当用户单击该标
  • 斯坦福 NER:我可以在代码中同时使用两个分类器吗?

    在我的代码中 我得到Person来自第一个分类器的识别 对于我制作的第二个分类器 我添加了一些要识别或注释的单词组织但它没有注释Person 我需要从他们两个那里得到好处 我该怎么做呢 我正在使用 Netbeans 这是代码 String
  • 调用Web服务时出错

    我无法致电web service即使添加后kSOAP 2 library jar file 源代码 package com example web import org ksoap2 SoapEnvelope import org ksoa
  • MonadException 实例未推导

    也许我在这里做了一些愚蠢的事情 但我得到 No instance for MonadException Ti arising from a use of getInputLine 在代码示例中 module Foo where import
  • Tornado - 通过 websocket 同时监听多个客户端

    我想使用 Tornado 在 Python 中创建 websocket 服务器 这是 API http tornado readthedocs org en latest websocket html 在 API 中 我没有看到获取客户端句
  • Apache .htaccess // 设置为禁止子文件夹文件

    我对 Apache htaccess 感到抓狂 我试图使用相对地址将我的子文件夹设置为受保护 但这似乎不可能 Apache文件夹的路径结构如下 var www apachedir 现在我想保护 var www apachedir subfo
  • 属性 httpRequest' 不存在

    当我在 Visual Studio 外部运行构建时收到此错误 名称为 httpRequest 的属性不存在 如果我在 Visual Studio 中运行相同的代码 它就会起作用 有人知道我做错了什么吗 我的应用程序配置
  • 方法 vs 基本 JS?我应该使用 toString 吗?解析Int? jQuery?

    自从我发现 toString 函数以来 这是我一直想知道的一个问题 但从未费心去问 我应该使用基本的 JS 还是做同样事情的函数 现在 不要误会我的意思 我意识到 toString 有其可取之处 就像将函数转换为字符串一样 var mess
  • PHP:如何用逗号分解字符串,而不是逗号在引号内的位置?

    我需要将字符串输入分解为逗号处的数组 但是该字符串在引号内包含逗号 Input line TRUE 59 A large number is 10 000 linearray explode line linemysql implode l
  • Android 使用 RSA 公钥加密字符串

    我正在从事一个必须使用 RSA 公钥加密密码的项目 我尝试了很多来自SO的示例和解决方案 如下所示 来自公共字符串的 Android RSA 加密 使用 SpongyCastle 进行 RSA 但不幸的是 这些解决方案都不适用于我的情况 如
  • 在 JSON.parse() 之后保留属性属性(可写、可配置)

    假设我正在其他地方创建一个对象并以某种方式将其传递到我的模块 也许它是在服务器上创建的node js 也许它是在不同的模块中创建的 无论出于何种原因我JSON stringify 解析它并传递序列化版本 特别是如果它来自服务器 但我希望这个
  • 禁用 PictureBox 上的图像混合

    在我的 Windows 窗体程序中 我有一个PictureBox包含一个小图像 5 x 5 pixels 当这个位图被分配给PictureBox Image属性 它变得非常模糊 我试图找到诸如混合模式 模糊模式或抗锯齿模式之类的东西 但我没
  • 创建新用户集realmRoles时 - Keycloak Admin REST API

    我在创建用户时分配现有领域角色时遇到问题 创建新用户时遵循文档POST realm users 在主体参数中使用UserRepresentation 我们有一个名为realmRoles这是可选的 我已经尝试在以下模式中进行分配 id 123
  • pip install Upgrade 升级私有依赖失败

    背景 pip支持ssh链接后缀 分店名称 提交哈希值 标签名称 一个 git 参考 但是 pip 在升级某些依赖于这些 ssh 链接的软件包时存在问题 在版本 5 1 2 的名为 CurrentPackage 的包的 setup py 中
  • Meteor/Semantic-UI 中的错误?

    如果根元素是流星模板 则语义 UI 模态窗口的使用不起作用 包 semantic ui css 错误重现 你好 html
  • UITableView willDisplayCell 方法的错误行为

    有一个UITableView的帖子 看到的帖子 id 保存在 sqlite 中我想用橙色显示已看过的帖子 用黑色显示其他帖子 但是当我为看到的帖子设置橙色时willDisplayCell方法某些单元格被错误地着色为橙色 否则打印日志 为其着
  • com.mysql.jdbc.driver类未找到异常

    我得到了帮助this博客文章 但我得到 com mysql jdbc driver 类未找到异常 该博客文章的不同之处在于 在我的例子中 他们尝试连接到 mysql 而不是 MS SQL 到目前为止 这是我的代码 包com example
  • Arduino 安卓 USB 连接

    我正在使用 Arduino杜米拉诺夫 and Nexus 7 我已成功检测到 Arduino 板并显示供应商 ID 和产品 ID 我正在尝试将数据从平板电脑传输到 Arduino 板并尝试闪烁LED在黑板上 Android 的代码如下 主要