V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xionghengheng
V2EX  ›  Android

[问] android usb host 编程相关问题

  •  
  •   xionghengheng · 2015-12-02 15:22:20 +08:00 · 9153 次点击
    这是一个创建于 3308 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景: Android 手机需要和一块单片机进行 USB 通信,目前单片机采用的是 Arduino 。然后自己写了测试程序,单片机端就是把读到的字节简单返回, Android 端,能正常写,也能读,但是读出来的字节数组却不对。

    问题:
    byte[] WriteData = new byte[64];
    for (int i = 0; i < WriteData.length; i++)
    {
    WriteData[i] = (byte) (i + 1);
    }
    10 条回复    2015-12-03 11:33:02 +08:00
    xionghengheng
        1
    xionghengheng  
    OP
       2015-12-02 15:23:04 +08:00
    返回的字节码是一堆的负数,但是个数是对的
    xuyinan503
        2
    xuyinan503  
       2015-12-02 15:53:34 +08:00
    xionghengheng
        3
    xionghengheng  
    OP
       2015-12-02 16:10:14 +08:00
    @xuyinan503 传的是 1-64 的字节码,这个在 c 和 Java 里应该都是正数的,只是大于 128 就会那样
    xuyinan503
        4
    xuyinan503  
       2015-12-02 16:27:38 +08:00
    @xionghengheng 就是我给你发的那个。好好学英语

    得出来的结果 x & 0xFF 一下就可以了
    xuyinan503
        5
    xuyinan503  
       2015-12-02 16:29:20 +08:00
    原因是二进制第 1 位被认为是符号位了。
    miao1007
        6
    miao1007  
       2015-12-02 16:30:26 +08:00
    字符串通信,建议用 okio 试试
    xionghengheng
        7
    xionghengheng  
    OP
       2015-12-02 17:00:52 +08:00
    @xuyinan503 64 的二进制 0100 0000 ,如果最高位是 0 ,那么不管是有符号还是无符号是不是都是一样的?
    xionghengheng
        8
    xionghengheng  
    OP
       2015-12-02 17:03:41 +08:00
    @miao1007 底层都是字节流,字节数据的值不知道为什么不准确
    xuyinan503
        9
    xuyinan503  
       2015-12-02 17:07:30 +08:00
    @xionghengheng 0 正 1 负
    所以 01111111(127)是正的
    再大就是负的
    xionghengheng
        10
    xionghengheng  
    OP
       2015-12-03 11:33:02 +08:00
    原来是手机的波特率和板的波特率不一样导致了字节码的错位,已解决······
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2937 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:35 · PVG 21:35 · LAX 05:35 · JFK 08:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.