精华内容
下载资源
问答
  • PC与Android设备进行USB文件传输

    热门讨论 2014-10-17 16:22:44
    上位机c#源代码:在PC上实现与Android设备的数据传输,完美使用ADB命令 功能包括: 1.上传文件 2.上传文件夹 3.下载文件 4.下载文件夹 5.删除Android文件 6.删除Android文件夹 7.创建Android文件夹
  • Android使用usb线传输大文件笔记

    千次阅读 2019-04-21 00:54:46
    使用usb线传输大文件 参考资料: 使用USB数据线连接PC端和Android端进行数据的交互 安卓设备通过USB接口实现与pc端的简单数据通信 Socket TCP/IP协议数据传输过程中的粘包和分包问题 【Android学习】socket长连接,...

    使用usb线传输大文件

    参考资料:

    1. 使用USB数据线连接PC端和Android端进行数据的交互
    2. 安卓设备通过USB接口实现与pc端的简单数据通信
    3. Socket TCP/IP协议数据传输过程中的粘包和分包问题
    4. 【Android学习】socket长连接,数据粘包问题

      由于客户应用使用的场景比较特殊。明确要求不能使用网络进行数据交互,所以不得不研究了一下使用usb通信这方面。原理就是当连上usb线后,通过socket进行数据通信。只不过android设备作为socket服务端,pc作为socket的客户端。pc端在与服务端建立连接之前需要使用adb命令设置转发端口(具体可参考参考资料1和参考资料2)。
      端口这玩意随便填,不跟别人冲突就行。

    adb shell am broadcast -a NotifyServiceStop
    adb forward tcp:9999 tcp:9000
    adb shell am broadcast -a NotifyServiceStart

    ##使用代码调用命令行
      如果想要完善android通过usb先进行数据交互,这里应该有不少的命令能用到,这里先记录一下调用命令的基本使用。

    import java.io.BufferedReader
    import java.io.InputStreamReader
    
    fun main() {
    
      //读取连接设备
      val process = Runtime.getRuntime().exec("adb devices")
      val devices = BufferedReader(InputStreamReader(process.inputStream))
      val stringBuilder = StringBuilder()
      var line: String? = null
      while (devices.readLine().apply { line = this } != null) {
        stringBuilder.append("$line\n")
      }
      println(stringBuilder.toString())
    
      //读取安装的应用
      val process2 = Runtime.getRuntime().exec("adb shell pm list packages")
      val packages = BufferedReader(InputStreamReader(process2.inputStream))
      val sb = StringBuilder()
      var line2: String? = null
      while (packages.readLine().apply { line2 = this } != null) {
        sb.append("$line2\n")
      }
      println(sb.toString())
    
    }
    

      打印结果如下图所示:
    在这里插入图片描述
      上面运行结果不错就是代码量有点多,用python简化一下就清晰不少。

    import subprocess
    
    if __name__ == '__main__':
        # 读取连接设备
        subprocess.call("adb devices", shell=True)
        # 读取安装的应用
        subprocess.call("adb shell pm list packages", shell=True)
    
    

    Android端

      Android端作为Socket的服务端,用来接收文件。为了防止分包的问题这里我定义了一个封包和解包方式。
    在这里插入图片描述
      在文件传输的时候,数据的收发都会以这种结构去发送或者接收。(实际情况下肯定跟这个不一样,我这为了方便携带参数用的就是json格式的数据)。理论上就是每次读取的字节大小都在携带信息中。如果在循环读取中有一次没有读满,那就把它应当读取的字节都读取出来,再循环下一次数据读取,省着出现粘包的现象。(byte也别设太大,要不内存溢出)

    package com.lyan.usbtestphone
    
    import android.annotation.SuppressLint
    import android.support.v7.app.AppCompatActivity
    import android.os.Bundle
    import android.os.Environment
    import android.os.Handler
    import com.blankj.utilcode.constant.PermissionConstants
    import com.blankj.utilcode.util.GsonUtils
    import com.blankj.utilcode.util.LogUtils
    import com.blankj.utilcode.util.PermissionUtils
    import com.blankj.utilcode.util.ToastUtils
    import kotlinx.android.synthetic.main.activity_main.*
    import java.io.*
    import java.net.ServerSocket
    import java.net.Socket
    
    class MainActivity : AppCompatActivity() {
    
        @SuppressLint("SetTextI18n")
        private val handler = Handler(Handler.Callback {
            when (it.what) {
                1 -> progressTv.text = "${it.obj}%"
            }
            false
        })
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            testBtn.setOnClickListener {
                startSocketServer { LogUtils.i("${Thread.currentThread().name} : $it") }
            }
        }
    
        private fun startSocketServer(callback: (name: Socket) -> Unit) = Thread {
            val file = File(Environment.getExternalStorageDirectory(), "copy.db3")
            if (file.exists()) {
                if (file.delete()) {
                    file.createNewFile()
                }
            } else {
                file.createNewFile()
            }
            ServerSocket(9000).apply {
                logI("移动服务端等待客户端的连接...")
                val client = this.accept()
                callback.invoke(client)
                val bufferedOutputStream = BufferedOutputStream(DataOutputStream(FileOutputStream(file)))
                val bufferedInputStream = BufferedInputStream(DataInputStream(client.getInputStream()))
                val tagBytes = ByteArray(6)
                val infoBytes = ByteArray(4)
                var hTag: String//标记头
                var fTag: String//标记尾
                var infoSize: Int//携带数据的一些信息
                var jsonBytes: ByteArray//携带数据的byte数组
                var sendInfoData: SendInfoData//解析后的携带信息
                var readBytes: ByteArray//真正传输的数据的byte数组
                var readSize: Int//真正传输的数据的byte长度
                while (true) {
    
                    val len = bufferedInputStream.read(tagBytes)
                    if (len == -1) {
                        break
                    }
                    hTag = String(tagBytes, 0, len)//标记头
                    //读取进度信息
                    infoSize = bufferedInputStream.read(infoBytes).run { bytesToInt(infoBytes) }
                    jsonBytes = ByteArray(infoSize)
                    sendInfoData = bufferedInputStream.read(jsonBytes).run {
                        val infoJson = when (infoSize) {
                            this -> {//读取数据完整
                                LogUtils.i("读取数据完整")
                                String(jsonBytes, 0, this)
                            }
                            else -> {//读取数据不完整(此处只要将分包处理后、粘包的问题自然就不会出现了)
                                LogUtils.i("读取数据不完整")
                                bufferedInputStream.read(jsonBytes, this, infoSize - this).run {
                                    String(jsonBytes, 0, infoSize)
                                }
                            }
                        }
                        LogUtils.i("其他信息 ------> $infoJson")
                        GsonUtils.getGson().fromJson(infoJson, SendInfoData::class.java)
                    }
                    handler.obtainMessage(1, sendInfoData.percent).sendToTarget()
                    //读取数据信息 传输数据大小 解析数据长度
                    readBytes = ByteArray(sendInfoData.sendSize)
                    readSize = bufferedInputStream.read(readBytes)//已读数据大小
                    LogUtils.i("读流的长度:$readSize")
                    if (readSize < sendInfoData.sendSize) {
                        LogUtils.w("读取数据不完整!已读数据少于应读取数据的大小……",
                                "应读:${sendInfoData.sendSize}", "实读:$readSize")
                        bufferedInputStream.read(readBytes, readSize, sendInfoData.sendSize - readSize)
                    }
                    fTag = bufferedInputStream.read(tagBytes).run { String(tagBytes, 0, this) }
                    LogUtils.w("header:$hTag", "携带信息的字节数:$infoSize", "携带信息内容:$sendInfoData",
                            "每次应读取的数据字节数量:${sendInfoData.sendSize}", "footer:$fTag")
                    bufferedOutputStream.write(readBytes)
                    bufferedOutputStream.flush()
                }
            }
        }.start()
    
        //请求权限(文件读写权限)
        override fun onResume() {
            super.onResume()
            PermissionUtils.permission(PermissionConstants.STORAGE).callback(object : PermissionUtils.SimpleCallback {
                override fun onGranted() {
                    ToastUtils.showShort("获取文件读写权限成功!")
                }
    
                override fun onDenied() {
                }
            }).request()
        }
    
        private fun bytesToInt(bytes: ByteArray): Int {
            return (0 until bytes.size).sumBy { (bytes[it].toInt() and 0xFF) shl it * 8 }
        }
    
        //每次接收数据的信息 进度 和 要保存的数据字节大小
        data class SendInfoData(val percent: String, val sendSize: Int)
    }
    
    

    pc端(正常应该是后台)

      在这种情况下后台就成客户端了。这里为了减少socket客户端的代码量,所以使用ptyhon来写:

    import subprocess
    import socket
    import time
    import copy
    import json
    import os
    
    
    class SendInfoData(object):
    
        def __init__(self, percent="", sendSize=0):
            self.__percent = percent
            self.__sendSize = sendSize
    
        def toJson(self):
            return json.dumps({
                "percent": self.__percent,
                "sendSize": self.__sendSize,
            })
    
    
    # int转byte数组
    def intToBytes(intNumber=0): return intNumber.to_bytes(4, "little")
    
    
    # str转utf-8 byte数组
    def strToUtf8Bytes(value): return bytes(value, encoding="utf-8")
    
    
    if __name__ == '__main__':
    
        subprocess.call("adb shell am broadcast -a NotifyServiceStop", shell=True)
        subprocess.call("adb forward tcp:9999 tcp:9000", shell=True)
        subprocess.call("adb shell am broadcast -a NotifyServiceStart", shell=True)
    
        client = socket.socket()
        result = client.connect(("127.0.0.1", 9999))
    
        # 文件路径
        filePath = "/Users/apple/Downloads/base.db3"
    
        # 文件大小
        allSize = os.path.getsize(filePath)
        fileSize = copy.deepcopy(allSize)
        print("%s\n" % fileSize)
        defaultReadSize = 1024 * 10
        progress = 0
    
        h = time.time()
        # 读取 文件
        with open(filePath, mode="rb") as readFile:
            while True:
                if fileSize <= 0: break
                readSize = defaultReadSize if fileSize > defaultReadSize else fileSize
                progress += readSize
                percent = '{: .2f}'.format(progress * 1.0 / allSize * 100)
                print("进度:%s" % percent)
                # 读取内容
                readBytes = readFile.read(readSize)
                if not readBytes: break
                tagH = strToUtf8Bytes("@tag:h")
                tagF = strToUtf8Bytes("@tag:f")
                # 携带信息
                infoJson = SendInfoData(percent, readSize).toJson()
                print("json:%s\n" % infoJson)
                infoBytes = strToUtf8Bytes(infoJson)
                infoSize = intToBytes(len(infoBytes))
                # 包裹传输数据
                client.send(tagH)  # 标记开头
                client.send(infoSize)  # 携带参数byte数据长度
                client.send(infoBytes)  # 携带参数内容
                client.send(readBytes)  # 真实传输的内容
                client.send(tagF)  # 标记结尾
                fileSize -= readSize
    
        client.close()
    
        f = time.time()
        print("用时:{: .0f}s".format((f - h)))
    
    

      这个例子的界面比较简单,就一个按钮和一个文本。手上测试的文件是一个900多兆的文件,在单位的时候试过一个4个多G的sqlite文件。而且文件在传输后一样可以正常使用。说明这个方式还是可行的。(当然在实际项目中这个例子仅仅是证明这个方式可行而已,具体优化部分肯定不带少的)
    在这里插入图片描述
    在这里插入图片描述

    笔记:byte[]未写满,补全的方式

      目的是验证,这里以读取文件的内容为例,文件是txt格式的这里放了一段字符串“一二三四五六七八九十”。一共是10字符(一个字符2个字节,也就是20个字节)。定义一个byte数组长度为20。先读一半,然后再读剩下的一半。

    import java.io.File
    import java.io.FileInputStream
    import java.nio.charset.Charset
    
    fun main() {
    
        val path = "/Users/apple/Downloads/O.txt"
        val file = File(path)
        val inputStream = FileInputStream(file)
        //available()这个方法本质的意义是 剩余未被读取的字节数量
        println("文件的字节总数:${inputStream.available()}")
    
        val byte = ByteArray(20)
    
        val read1 = inputStream.read(byte, 0, 10)
        println(read1)
        println("read1后剩余字节数量:${inputStream.available()}")
        val read1Msg = String(byte, 0, read1, Charset.forName("GBk"))
        println(read1Msg)
    
        inputStream.read(byte, 10, 20 - read1)
        println("read2后剩余字节数量:${inputStream.available()}")
        val read2Msg = String(byte, 0, byte.size, Charset.forName("GBk"))
        println(read2Msg)
    
    }
    

      这块结合Android端那段代码看正好(一旦索引那想不明白,真不如运行代码来的实在),运行结果如下。
    在这里插入图片描述

    展开全文
  • 苹果手机需要安装iTunes才能与其设备进行USB通信,诸如查看设备信息...说到USB传文件,还必须要手机内的APP开放了文件共享权限,才能通过iTunes访问应用程序内的文件数据。 其传输速度在USB 2.0的电脑上,可以达到...

    苹果手机需要安装iTunes才能与其设备进行USB通信,诸如查看设备信息,管理联系人,管理照片,管理应用程序等众多功能。

    但iTunes软件在Windows上使用体验极度不好,况且大部分情况下,安装iTunes只是为了用USB向手机传文件。

    说到USB传文件,还必须要手机内的APP开放了文件共享权限,才能通过iTunes访问应用程序内的文件数据。

    其传输速度在USB 2.0的电脑上,可以达到20-25MB/s,用来传下载好的电影还算不错。

    另外,其实只是传文件的话,国产软件iTools、爱思助手等软件使用其来更加方便,但是它们依然需要调用iTunes提供的接口,

    因此必须要在电脑上安装iTunes相关的组件,才能实现USB通信。

    但是安装iTunes会在系统里创建无数个开机自启服务,安装包体积也是足够臃肿,实在有点不舒服。

    解开iTunes的安装包,还会发现它内部其实要安装以下四个程序组件,分别是:

    1.AppleApplicationSupport.msi(41MB) 苹果软件支持组件,为苹果其它软件提供运行环境。

    2.AppleMobileDeviceSupport.msi(10MB) 苹果设备支持组件,包含USB驱动和一堆设备通信相关工具。

    3.Bonjour.msi(2MB)苹果为基于组播域名服务(multicast DNS)的开放性零设置网络。

    4.iTunes.msi(73MB)iTunes应用程序。

    实际上只需要安装1和2就可以实现用iTools和爱思助手来管理苹果手机了。

    即使只安装1和2,还是会增加好几个开机服务,你可以在任务管理器进程列表里看到它们的身影。

    对于强迫症患者来说,还是有点不可接受,难道就没有比这更简洁的办法了吗?

     

    答案是有的!

    主要实现方法还是要靠手机里的文件管理类APP,比如Documents、MFiles等支持HTTP,FTP方式传文件的软件。

    这类手机APP还可以对文件进行重命名,压缩,解压等操作,然后再通过APP内分享文件的方式,导入到其它APP里!

    并且HTTP和FTP方式都不需要在电脑上安装任何软件就可以实现双向通信,可以说是非常简洁了,简直就是强迫症的福音!

    使用方法也很简单,只要手机和电脑连接同一个WIFI就能通信,如果此地没有WIFI可用,那么还可以使用手机开个热点,或者电脑开热点的方法制造WIFI,最后打开手机上的APP,在电脑上用浏览器输入对应的IP地址和端口就可以了!

    然而,这个方法的弊端还是很明显:

    第一、如果电脑没有无线网卡,连接不了WIFI,那就不行了。

    第二、使用WIFI的通信速度远不如USB传输,在2.4G WIFI环境下大概只有1-2MB/s的速度,传大文件效率很低。

     

    那么有没有用USB又不安装iTunes的方法呢?

    答案是有的!

    那是因为苹果手机开热点,不仅可以开WIFI热点,还可以开一个USB热点!

    当你用USB连接电脑的时候打开手机热点,你有没有发现电脑上会出现一个Apple Mobile Device Ethernet的网卡呢?

    如果你的电脑没有联网,可以用这种方式,实现手机流量共享到电脑上网,这个时候电脑和手机之间建立了一个内部局域网,这个时候你打开手机上的MFiles,网页传文件可以发现,和连接WIFI一样的效果,但是这次是建立在USB之上的网络连接。

    再试一下文件传输,速度可以达到12MB/s,虽然比起原生的20MB/s还有点差距,但是比WIFI速度快了近10倍,传一些电视剧也够用了。

    但是电脑上要识别到Apple Mobile Device Ethernet这个网卡,还是要靠iTunes提供的USB驱动才行。

    所以我尝试把iTunes的USB驱动给提取出来,我就是不想安装完整的iTunes,最后发现原来仅仅8个文件就足够了!

    完全不需要安装完整的iTunes,不给系统增加任何负担,不会在任务管理器看到任何多余的进程。

    nice!!!

     

    =============================================

    提取USB驱动的方法:

    1.解开iTunes安装包得到4个msi文件

    2.解开AppleMobileDeviceSupport.msi

    3.找到以下8个文件:usbaapl.inf,usbaapl.sys,usbaapl.inf.cat,usbaaplrc.dll,netaapl.inf,netaapl.sys,netaapl.cat,WdfCoInstaller01009.dll

    4.插入苹果USB数据线,打开电脑的设备管理器,在便携设备下面找到Apple设备,右键更新驱动程序,路径选择usbaapl.inf所在的目录即可。

     

    最后提供我提取的USB驱动32位系统适用:

    https://download.csdn.net/download/qq446252221/11153774

     

     

    展开全文
  • Android File Transfer安卓和mac互传文件通过usbusb链接安卓手机和macbook打开手机文件夹来拷贝文件。
  • USB_DEMO传输文件

    2011-04-10 16:18:47
    USB_DEMO传输文件 提供大家学习用
  • Use the USB cable that came with your Android device and connect it to your Mac. Double click Android File Transfer. Browse the files and folders on your Android device and copy files.
  • 两台电脑在linux终端互传文件

    千次阅读 2018-09-02 15:11:53
    比如服务器的home下有一个文件是a.txt,那么命令是:scp root@192.168.2.208:/home/a.txt /home 此时会要你输入root的密码。输入后即可把a.txt 拷贝到你当前电脑的home下了。 两台linux之间拷贝文...

    假设我当前在使用的电脑是A,服务器是B,那么我们先要确认B的IP地址。假设B的IP是192.168.2.208

    1、从服务端copy文件到本地。比如服务器的home下有一个文件是a.txt,那么命令是:scp root@192.168.2.208:/home/a.txt /home 此时会要你输入root的密码。输入后即可把a.txt 拷贝到你当前电脑的home下了。

    两台linux之间拷贝文件
    发现规律没有?scp的命令是:scp 服务器用户名@iP地址:服务端文件路径 客户端保存路径。所以说,scp后面不一定是root,也可以是其他的用户。

    同理,将文件从本地拷贝到服务器:

    scp /home/a.txt root@192.168.2.208:~

    此时输入密码即可

    两台linux之间拷贝文件

    以上说的都是拷贝文件的,那么如何拷贝含有子目录的文件夹呢?很简单,加入-r参数,

    展开全文
  • 可用于向开发板传输文件,比如裸机程序,支持Kermit、Xmodem、Ymodem、Zmodem等协议。
  • 下载如下工具即可,可能会以来adb,基于adb方式传输的 下载地址https://www.android.com/filetransfer/#tips 传输速度还可以吧。具体看USB。理论是25Mb每秒,跟adb push 方式差不多。 ...

    下载如下工具即可,可能会以来adb,基于adb方式传输的
    下载地址 备用地址需要科学上网功能

    云盘下载:https://pan.baidu.com/s/1ASqVqkkfDo6agayQEs-8eg 链接:密码:xs28
    在这里插入图片描述
    传输速度还可以吧。具体看USB。理论是25Mb每秒,跟adb push 方式差不多。
    在这里插入图片描述

    展开全文
  • Android Studio开发的代码,可以通过USB往U盘传输数据,经过测试,可以使用。
  • 安卓手机如何跟Mac电脑互传文件

    千次阅读 2020-04-29 16:54:45
    受制于Mac os系统的原因,导致小伙伴在使用Mac电脑跟安卓手机互传文件的时候需要借助一些软件来实现这个操作,现未来软件园为大家带来快捷的直传方式,那就是使用Mac蓝牙功能来完成这这个操作,请大家观看以下详细...
  • android手机如何通过USB和pc互相传输文件啊,使用代码传输,比如在pc上的web浏览器点击某个按钮导入数据至sd卡,或者点击手机app上的某个按钮将文件传到pc硬盘上
  • imx6 usb bluetooth的连接与文件传输

    千次阅读 2017-01-10 12:06:23
    可以看到usb设备,说明驱动工作正常,这一步应该都没什么问题,因为内核自带bluez蓝牙协议以及usb蓝牙驱动,内核配置完成后应该都可以正常工作。 2.开启蓝牙 hciconfig命令:可以查看蓝牙设备信息,具体使用到...
  • Android USB(OTG) 删除文件的探索过程

    千次阅读 2019-06-11 11:50:27
    // 获取U盘URI读写权限,通过这个权限最终实现文件读取删除,这里要将删文件所在的目录,由于例子是删除U盘根目录下的文件,所以这里直接U盘根目录了:/storage/2E54-008A getUsbUriPermission(mUsbPath);...
  • Linux下用USB传输文件到开发板

    千次阅读 2013-07-05 19:07:11
    以往用FS2410时用的是minicom+usb2ram,功能比windows下的dnw更强,因为minicom支持彩色显示,不会像dnw一样出现很多乱码,这一点上超级终端做的也不错,可惜不能支持USB传输,加上我们用的是Linux嵌入式系统,平时...
  • Android 4.1+通过USB 连接Ubuntu进行文件传输方案
  • 包含FX33TRIAL.exe和sl.exe两个文件,其中前者在windows下安装,后者在dos上运行(未注册)。用于在两台计算机之间互传数据,将在dos下运行sl.exe,可以在dos和xp下互传文件
  • 主要是清除手机 usb 调试 设置的缓存。 oppo手机举例 步骤:“设置” --“其他设置”--“应用程序管理”--“全部”--“USB调试”--“清除数据” 拔掉数据线,重新插入ok 参考文章:...
  • 感觉使用USB连接手机进行管理手机文件的功能很不完善,删除文件可能删不掉,有时候文件列表也不对,并且USB数据线线头啥的还不能接触不良。 使用FTP,借助无线网管理手机文件,发现很不错,无需数据线,而且功能各...
  • 在Windows上,我们常常需要用USB数据线将安卓手机连接到电脑上,然后在手机和电脑之间传输各种...幸运的是,mac上有很多第三方应用程序填补了这一空白,今天小编就为大家介绍四款使得Mac 和 Android 手机之间互传文件
  • 在Windows上,我们常常需要用USB数据线将安卓手机连接到电脑上,然后在手机和电脑之间传输各种文件。但是这种方法对Mac电脑就不怎么起作用了。由于OS X系统的特殊性,许多用户都不知道如何顺利地将安卓连接至Mac,更...
  • 用SD卡传文件到JZ2440

    2017-08-11 23:31:04
    主机开发环境: Ubuntu9.10 ...目的:通过SD卡传文件到开发板 其实很简单,就一条挂载命令,为了适应0基础刚入手开发板的同学,写的特别详细。步骤: 1. JZ2440接上电源,按红色开关启动系统 2. 电脑
  • Android端通过usb和pc端互json数据

    千次阅读 2017-05-17 15:01:26
    一、关于android端和usb的通信问题 原本对usb通信相关并不是很了解,但是涉及到了usb传输数据和pc交互,于是就开始了解起来,开始查阅了很多资料,同时也问了相关的朋友,感觉都很少有涉及到的,这里来做一个简单的...
  • openstack usb研究分析( centos7 )

    千次阅读 2015-08-11 11:19:16
    1 The bus/device IDs can be obtained from virsh via the 'virsh nodedev-list --tree' and 'virsh nodedev-dumpxml' commands or using 'lsusb' ...我采用的是lsusb来查看usb设备的编号,
  • 本设计为asp源码,可作为毕设和课设,都可以运行,可以为您做设计,请看个人简介信息获取更多,只希望您给个关注给个赞,后续会上更多新源码,关注后第一时间会通知到您。感谢!
  • 一 C#中通过USB操作手机文件

    千次阅读 热门讨论 2020-06-16 14:05:31
    C#中通过USB操作手机文件一 系统环境二 创建测试项目三 MediaDevices 的简单使用 一 系统环境 1.开发工具:vs2019 2. dotnet版本:4.5及以上 3. Nuget包:MediaDevices 二 创建测试项目 1.创建一个winform窗体程序,...
  • USB2.0挂载FatFs文件系统

    千次阅读 2017-09-04 17:57:31
    文件系统fatfs、USB协议栈、物理层flash存储芯片关系。 1、单独使用flash芯片,开发flash芯片的响应的驱动即可进行按照 绝对地址 的读写方式进行数据的存储和读取。一般的单片机只做存储的可以这么做。 void W25
  • LINUX和PC之间通过串口传文件

    万次阅读 2016-08-11 11:01:22
    从PC机下载东西到开发板的嵌入式linux系统里面,首先会想到... 按Ctrl-A,再按s,会出现一个选择文件的界面,选择你要传输的文件,回车后出现一个传输界面,传输完成后便可以在开发板的/tmp目录下找到这个文件了。
  • Android作为服务器,通过USB使用Socket协议,向PC客户端发送文件
  • APC220无线数模块为业内目前体积最小,且非常方便客户嵌入系统之内。APC220无线数模块发射功率高达20 mW,具有较低的功耗,为新一代的多通道嵌入式无线数模块,其可...APC220数模块配置软件,见相关文件下载:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,713
精华内容 6,685
关键字:

usb传文件怎么传