精华内容
下载资源
问答
  • 继续写usb gadget驱动

    2019-09-25 21:24:49
    继续写usb gadget驱动... 枚举都没过... (只添加设备描述符, 配置描述符和接口描述符时可以完成枚举..., 一添加端点描述符后枚举就不过了... win10报错获取配置描述符失败...) 先贴代码吧, 换台ubuntu主机试...

    继续写usb gadget驱动...

    枚举都没过...

    (只添加设备描述符, 配置描述符和接口描述符时可以完成枚举..., 一添加端点描述符后枚举就不过了...

    win10报错获取配置描述符失败...)

     

    先贴代码吧, 换台ubuntu主机试着枚举看看......

    #include <linux/module.h>
    #include <linux/kernel.h>  /* min() */
    #include <linux/printk.h>
    #include <linux/usb/gadget.h>
    #include <linux/stacktrace.h>
    #include <linux/string.h>
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("River");
    
    #define USB_BUFSIZE 256
    
    struct g_loop_dev {
        struct usb_gadget *gadget;      // gadget device
        struct usb_request *req;       // for ep0 request
        struct usb_ep *out_ep;          // TBD: for ep out transfer
        // struct cdev cdev;               // TBD: char dev
    };
    
    #define STR_ID_MANUFACTURER 25
    #define STR_ID_PRODUCT 42
    #define STR_ID_SERIAL 101
    #define STR_ID_LOOPBACK 251
    
    /* my specific vid&pid */
    // #define DRIVER_VENDOR_NUM 0x1234
    // #define DRIVER_PRODUCT_NUM 0x5678
    
    #define DRIVER_VENDOR_NUM	0x0525		/* NetChip */
    #define DRIVER_PRODUCT_NUM	0xa4a0		/* Linux-USB "Gadget Zero" */
    
    static struct usb_device_descriptor device_desc = {
        .bLength = sizeof (device_desc),
        .bDescriptorType = USB_DT_DEVICE,
    
        .bcdUSB = __constant_cpu_to_le16(0x0320),
        // .bcdUSB = __constant_cpu_to_le16(0x0110),
        .bDeviceClass = USB_CLASS_VENDOR_SPEC,
        .bMaxPacketSize0 = 9,
        .idVendor = __constant_cpu_to_le16(DRIVER_VENDOR_NUM),
        .idProduct = __constant_cpu_to_le16(DRIVER_PRODUCT_NUM),
        .iManufacturer = STR_ID_MANUFACTURER,
        .iProduct = STR_ID_PRODUCT,
        .iSerialNumber = STR_ID_SERIAL,
        .bNumConfigurations = 1,
    };
    
    static struct usb_config_descriptor g_loop_config = {
        .bLength = sizeof g_loop_config,
        .bDescriptorType = USB_DT_CONFIG,
    
        .bNumInterfaces = 1,
        .bConfigurationValue = 1,
        .bmAttributes = USB_CONFIG_ATT_ONE | USB_CONFIG_ATT_SELFPOWER,
        .bMaxPower = 1, /* self-powered */
    };
    
    /* interface descriptor */
    static struct usb_interface_descriptor g_loop_interface = {
        .bLength = sizeof(g_loop_interface),
        .bDescriptorType = USB_DT_INTERFACE,
    
        .bNumEndpoints = 1,
        .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
        .iInterface = STR_ID_LOOPBACK,
    };
    
    /* endpoint descriptor */
    static struct usb_endpoint_descriptor fs_sink_desc = {
        .bLength = USB_DT_ENDPOINT_SIZE,
        .bDescriptorType= USB_DT_ENDPOINT,
    
        .bEndpointAddress = USB_DIR_OUT,    // for pc host, it is out ep.
        .bmAttributes = USB_ENDPOINT_XFER_BULK,
        // .wMaxPacketSize = __constant_cpu_to_le16(1024),
    };
    
    /* function/interface description... */
    static const struct usb_descriptor_header *fs_g_loop_function[] = {
        (struct usb_descriptor_header *) &g_loop_interface,
        (struct usb_descriptor_header *) &fs_sink_desc,
        NULL,
    };
    
    static struct usb_string strings[] = {
        {STR_ID_MANUFACTURER, "river run", },
        {STR_ID_PRODUCT,      "river loop", },
        {STR_ID_SERIAL,       "1234567890", },
        {STR_ID_LOOPBACK,       "loop in to out", },
        {  },
    };
    
    static struct usb_gadget_strings string_table = {
        .language = 0x0409,     /* en-us */
        .strings = strings,
    };
    
    static void g_loop_setup_complete(struct usb_ep *ep,
            struct usb_request *req) {
    
        printk(KERN_INFO "g_loop_setup complete --> %d, %d, %d\n",
                        req->status, req->actual, req->length);
    
        return;
    }
    
    static void free_ep_req(struct usb_ep *ep, struct usb_request *req)
    {
        kfree(req->buf);
        usb_ep_free_request(ep, req);
    }
    
    static int g_loop_dev_prepare(struct g_loop_dev *dev) {
    	struct usb_gadget *gadget = dev->gadget;
    	int ret;
    
        /* reset ep autoconfig state */
    	usb_ep_autoconfig_reset(gadget);
    
        /* config & prepare an endpoint */
        dev->out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc);
    
        if (!dev->out_ep) {
            printk(KERN_ERR "usb_ep_autoconfig failed\n");
            ret = - ENOMEM;
            goto config_fail;
        }
    
        printk(KERN_INFO "ep_desc = %p\n", dev->out_ep->desc);
        printk(KERN_INFO "fs_sink_desc = %p\n", &fs_sink_desc);
        printk(KERN_INFO "ep->addr = %d\n", dev->out_ep->address);
        printk(KERN_INFO "ep->claimed = %d\n", dev->out_ep->claimed);
        printk(KERN_INFO "ep->enabled = %d\n", dev->out_ep->enabled);
    
        printk(KERN_INFO "usb_ep_autoconfig succeed\n");
    
    	/* preallocate control response and buffer */
    	dev->req = usb_ep_alloc_request(gadget->ep0, GFP_KERNEL);
    	if (!dev->req) {
    		ret = -ENOMEM;
            goto ep_fail;
        }
    
    	dev->req->buf = kmalloc(USB_BUFSIZE, GFP_KERNEL);
    	if (!dev->req->buf)
    		goto malloc_fail;
    
    	dev->req->complete = g_loop_setup_complete;
    	dev->req->context = dev;
    	gadget->ep0->driver_data = dev;
    
    	usb_gadget_set_selfpowered(gadget);
    
    	return 0;
    
    malloc_fail:
    	usb_ep_free_request(gadget->ep0, dev->req);
    	dev->req = NULL;
    
    ep_fail:
    
    config_fail:
    
    
        return ret;
    }
    
    static int g_loop_bind(struct usb_gadget *gadget,
            struct usb_gadget_driver *driver) {
        int ret = 0;
        struct g_loop_dev *dev;
    
        if (!gadget ||!driver) {
            ret = -EINVAL;
            goto invalid_param;
        }
    
        printk(KERN_INFO "gadget info: speed(%d), max_speed(%d)",
                    gadget->speed, gadget->max_speed);
    
        printk(KERN_INFO "gadget info: maxpacket(%d), claimed(%d), enabled(%d)",
                    gadget->ep0->maxpacket, gadget->ep0->claimed?1:0,
                    gadget->ep0->enabled?1:0);
    
    
        dev = kzalloc(sizeof(struct g_loop_dev), GFP_KERNEL);
        if (!dev) {
            printk(KERN_ERR "malloc failed for g_loop_dev\n");
            ret = -ENOMEM;
            goto malloc_fail;
        }
    
    	dev->gadget = gadget;
    	set_gadget_data(gadget, dev);
    
        /* bMaxPacketSize format is 2^bMaxPacketSize0, eg, 2^9 = 512 */
        // device_desc.bMaxPacketSize0 = gadget->ep0->maxpacket;
    
        ret = g_loop_dev_prepare(dev);
        if (ret < 0) {
            printk(KERN_ERR "g_loop_dev_prepare failed...\n");
            goto prepare_fail;
        }
    
        printk(KERN_INFO "simple composite ready...\n");
    
        return ret;
    
    prepare_fail:
        if (dev) {
            kfree(dev);
            dev = NULL;
        }
    
    malloc_fail:
    invalid_param:
    
        return ret;
    }
    
    static void g_loop_unbind(struct usb_gadget *gadget) {
        struct g_loop_dev *dev = get_gadget_data(gadget);
    
        if (dev->req) {
            dev->req->length= USB_BUFSIZE;
            free_ep_req(gadget->ep0, dev->req);
        }
    
        kfree(dev);
    
        set_gadget_data(gadget, NULL);
    
        printk(KERN_INFO "g_loop_unbind callback complete\n");
    
        return;
    }
    
    static int config_buf(struct usb_gadget *gadget,
                          u8 *buf, u8 type, unsigned index)
    {
        //int is_source_sink;
        int len;
        const struct usb_descriptor_header **function;
    
        printk(KERN_INFO "config_buf, type = %d, index = %d\n",
                    type, index);
    
        function = fs_g_loop_function;
    
        len = usb_gadget_config_buf(&g_loop_config,
                          buf, USB_BUFSIZE, function);
        if (len < 0)
            return len;
    
        ((struct usb_config_descriptor *) buf)->bDescriptorType = type;
        return len;
    }
    
    /*
     * ep0 setup callback, we need to tell what kind of
     * device we are...
     * according to ch9, we need to response to get_descriptor
     * control command...
     */
    static int g_loop_setup(struct usb_gadget *gadget,
                        const struct usb_ctrlrequest *ctl_req) {
        struct g_loop_dev *loop_dev = get_gadget_data(gadget);
        struct usb_request *req = NULL;
        int value = 0;
        // u16 w_index = le16_to_cpu(ctl_req->wIndex);
        u16 w_value = le16_to_cpu(ctl_req->wValue);
        u16 w_length = le16_to_cpu(ctl_req->wLength);
        int ret = 0;
        int i = 0;
        unsigned char *buf;
    
        printk(KERN_INFO "g_loop_setup callback\n");
    
        if (!loop_dev) {
            ret = -EFAULT;
            goto unknown;
        }
    
        req = loop_dev->req;
        buf = req->buf;
    
        // dump_stack();
    
        printk(KERN_INFO "setup request: %d, desc_type: 0x%x, "
                "w_lenght:%d\n",
                ctl_req->bRequest, w_value>>8, w_length);
    
        switch (ctl_req->bRequest) {
    
        /* handle some standard request... */
        case USB_REQ_GET_DESCRIPTOR: {
            if (ctl_req->bRequestType != USB_DIR_IN ) {
                printk(KERN_ERR "error request type(0x%x)\n",
                        ctl_req->bRequestType);
                ret = -EFAULT;
                goto unknown;
            }
    
            /* high byte means descriptor type,
             * descriptor index in low byte...
             */
            switch (w_value>>8) {
    
            case USB_DT_DEVICE:
                value = min(w_length, (u16) sizeof device_desc);
                memcpy(req->buf, &device_desc,
                        value);
    
                break;
            case USB_DT_CONFIG:
                /* use some help function fill config descriptor... */
                value = config_buf(gadget, req->buf,
                            w_value >> 8,
                            w_value & 0xff);
                if (value >= 0)
                    value = min(w_length, (u16) value);
    
                break;
            case USB_DT_STRING:
                value = usb_gadget_get_string(&string_table, w_value&0xff,
                                        req->buf);
                if (value >= 0)
                    value = min(w_length, (u16) value);
                break;
    
            default:
                printk(KERN_INFO "descriptor type: %d, do nothing\n",
                        w_value>>8);
                break;
            }
        }
    
        break;
    
        case USB_REQ_SET_DESCRIPTOR:
            printk(KERN_INFO "set descriptor request, do nothing...\n");
            break;
    
        case USB_REQ_GET_CONFIGURATION:
            printk(KERN_INFO "get configuration request, do nothing...\n");
            break;
    
        case USB_REQ_SET_CONFIGURATION:
            printk(KERN_INFO "set configuration request, do nothing...\n");
            break;
    
        case USB_REQ_GET_INTERFACE:
            printk(KERN_INFO "get interfafe request, do nothing...\n");
            break;
    
        case USB_REQ_SET_INTERFACE:
            printk(KERN_INFO "set interfafe request, do nothing...\n");
            break;
    
        default:
            printk(KERN_INFO "bRequestType - %d, no handler...\n",
                        ctl_req->bRequestType);
            break;
        }
    
        if (value <= 0) {
            printk(KERN_ERR "no data needs to be sent\n");
            goto do_nothing;
        }
    
        printk(KERN_INFO "buf:\n");
        for (i=0; i<value; i++) {
            printk(KERN_CONT "0x%x ", buf[i]);
            if ((i+1)%9 == 0) {
                printk(KERN_CONT "\n");
            }
        }
        printk(KERN_CONT "\n");
    
        req->length = value;
        req->zero = value < w_length;
        printk(KERN_INFO "value: %d, w_length: %d\n",
                value, w_length);
        printk(KERN_INFO "req->zero: %d\n", req->zero);
    
        ret = usb_ep_queue(gadget->ep0, req, GFP_ATOMIC);
        if (ret < 0) {
            printk(KERN_ERR "usb_ep_queue failed, ret(%d)\n", ret);
            req->status = 0;
            g_loop_setup_complete(gadget->ep0, req);
        }
    
        return ret;
    
    do_nothing:
    unknown:
        return ret;
    }
    
    static void g_loop_reset(struct usb_gadget *gadget) {
        printk(KERN_INFO "g_loop_reset callback\n");
    
        usb_ep_autoconfig_reset(gadget);
    
        return;
    }
    
    static void g_loop_disconnect(struct usb_gadget *gadget) {
        printk(KERN_INFO "g_loop_disconnect callback\n");
    
        return;
    }
    
    static struct usb_gadget_driver g_loop_driver = {
        .function = "gadget_g_loop",
        .max_speed = USB_SPEED_SUPER,
        // .max_speed = USB_SPEED_HIGH,
        .bind = g_loop_bind,
        .unbind = g_loop_unbind,
        .setup = g_loop_setup,
        .reset = g_loop_reset,
        .disconnect = g_loop_disconnect,
    };
    
    static int __init g_loop_init(void) {
        int ret = 0;
    
        printk(KERN_INFO "g_loop_init in\n");
    
        ret = usb_gadget_probe_driver(&g_loop_driver);
    
        if (ret < 0) {
            printk(KERN_ERR "usb gaget driver register failed, "
                    "ret(%d)\n", ret);
            goto probe_failed;
        }
    
        printk(KERN_INFO "g_loop_init succeed\n");
    
        return 0;
    
    probe_failed:
    
        return ret;
    }
    
    static void __exit g_loop_exit(void) {
        printk(KERN_INFO "g_loop_exit in\n");
    
        usb_gadget_unregister_driver(&g_loop_driver);
    
        printk(KERN_INFO "g_loop_exit succeed\n");
    
        return;
    }
    
    module_init(g_loop_init);
    module_exit(g_loop_exit);
    

     

    展开全文
  • 以我的PL2303为例,背面由上至下写着3.3V、5.0V、TXD、RXD、GND。连接的时候,5.0V(或者标有VCC)接P2,GND接P6,RXD接P8,TXD接P10,其它针脚置空。示意图如下 连接完毕后,将SD卡插进树莓派,刷机线的USB口插...
  • 说明书折腾了一下这个调音台,意外发现功能还是不少的,最重要的是发现可以直接录音,所以就了这么一篇教程基于固件版本1.90.4537上电等待启动完成后,QU32的触屏应该是这个界面在这个界面下,在面板右侧USB...

    对着说明书折腾了一下这个调音台,意外发现功能还是不少的,最重要的是发现可以直接录音,所以就写了这么一篇教程

    基于固件版本1.90.4537

    上电等待启动完成后,QU32的触屏应该是这个界面

    ffa7e0be27c3220b5ace2233b250914c.png

    在这个界面下,在面板右侧USB接口上插入U盘(QU32只能wav录音,必须使用高速U盘,低速盘会出错,建议写入速度10m+的U盘)

    bc2fe1f7bd0a52699553e20c4387b15b.png

    插入的U盘请确保没有任何有价值数据,如果有数据请先备份。

    如果该U盘是首次插入QU32,必须先初始化(不可使用电脑格式化!!!)

    在触摸屏右侧一排按钮上按下最底下的Setup键,选择Utility-QU Drive

    如果你的U盘已经被识别了,应该能看到U盘的最大空间和可用空间

    43fe6c3b222dfd0bb8efebd90eccee3f.png

    在触摸屏上点击Format按钮并确认,U盘就会被初始化(所有数据均会被抹除)

    初始化完成后,QU32会再一次检测U盘,检测完成后会显示最大空间和已使用空间(应该为0mb)

    这个U盘此时已经成为QU32专用了,不要再用于存储其他数据,否则下次需要重新初始化

    接下来我们需要配置录音通道

    首先连接好一切话筒和音频输入(输出怎么连和录音无关)

    调试好音频,记录下所有使用的通道

    比如此时我们使用通道1-4,10,25-26

    a2fbb0fe7e97f64b4ef923f482246f8e.png

    按下触摸屏右侧Setup按钮,选择I/O Patch-USB Audio

    dbed9f10ebce1e3453186b681ac4e336.png

    先把右下角模式切换为insert sends

    首先触摸选择录制编号,然后用Setup按钮右侧的旋钮选择声音通道

    设置完成后,一定记得点一下Apply

    按下Home按钮,选择Qu-Drive-Multitrack进入录音界面

    开始录制时,先点红圆按钮,会进行准备写入,准备完成后三角按钮就会可用,点下去就能开始录音了

    录制中的界面是这样的

    26f3684b7029b8cd533c467445b902c2.png

    录制完成,点击方块按钮,等待处理文件(一小时音频大约需要处理三分钟)

    bcd5282b985a410e2de96852cdb1ca53.png

    等录制按钮再次可用后,就可以拔下U盘了

    连接电脑,就能找每个通道的录音文件了

    869374ba1b52a3778e53a70a0239b3cf.png
    展开全文
  • 今天闲的有些过头就对说明书折腾...在面板右侧USB接口上插入U盘(QU32只能wav录音,必须使用高速U盘,低速盘会出错,建议写入速度10m+的U盘)插入的U盘请确保没有任何有价值数据,如果有数据请先备份。如果该U盘是...

    今天闲的有些过头就对着说明书折腾了一下这个调音台,意外发现功能还是不少的,最重要的是发现可以直接录音,所以就写了这么一篇教程

    基于固件版本1.90.4537

    上电等待启动完成后,QU32的触屏应该是这个界面

    1908439b54a9ed6020f3e8f2e7a4aa73.png

    在这个界面下,在面板右侧USB接口上插入U盘(QU32只能wav录音,必须使用高速U盘,低速盘会出错,建议写入速度10m+的U盘)

    fe879e1ac3982c378daaa9d1e7d9c1ea.png

    插入的U盘请确保没有任何有价值数据,如果有数据请先备份。

    如果该U盘是首次插入QU32,必须先初始化(不可使用电脑格式化!!!)

    在触摸屏右侧一排按钮上按下最底下的Setup键,选择Utility-QU Drive

    如果你的U盘已经被识别了,应该能看到U盘的最大空间和可用空间

    5b5e4f2346a04114632a9991b0b47858.png

    在触摸屏上点击Format按钮并确认,U盘就会被初始化(所有数据均会被抹除)

    初始化完成后,QU32会再一次检测U盘,检测完成后会显示最大空间和已使用空间(应该为0mb)

    这个U盘此时已经成为QU32专用了,不要再用于存储其他数据,否则下次需要重新初始化

    接下来我们需要配置录音通道

    首先连接好一切话筒和音频输入(输出怎么连和录音无关)

    调试好音频,记录下所有使用的通道

    比如此时我们使用通道1-4,10,25-26

    cb7d3272cede6f729d9b309b671f4a96.png

    按下触摸屏右侧Setup按钮,选择I/O Patch-USB Audio

    cb7d3272cede6f729d9b309b671f4a96.png

    a0a172bdbed7b6b3cbbe10d32ae27938.png

    先把右下角模式切换为insert sends

    首先触摸选择录制编号,然后用Setup按钮右侧的旋钮选择声音通道

    设置完成后,一定记得点一下Apply

    按下Home按钮,选择Qu-Drive-Multitrack进入录音界面

    开始录制时,先点红圆按钮,会进行准备写入,准备完成后三角按钮就会可用,点下去就能开始录音了

    录制中的界面是这样的

    3ba23addf98080588cd16caeb6440270.png

    录制完成,点击方块按钮,等待处理文件(一小时音频大约需要处理三分钟)

    2629f19add8270b24d65b2e97b79f4fe.png

    等录制按钮再次可用后,就可以拔下U盘了

    连接电脑,就能找每个通道的录音文件了

    ef086fecd322c0477b85ba7171bb3d74.png
    展开全文
  • USBgps驱动&测试软件

    2013-01-24 13:02:58
    XP系统下把USB GPS插到电脑的USB接口。 电脑会识别出新的硬件设备并要求安装驱动。 把安装目录指向光盘的《xp驱动》文件夹。 按确认就可以安装好驱动了。 win7下直接运行驱动安装的程序。安装完成后插入GPS就会自己...
  • libusb-1.0.9

    热门讨论 2012-10-25 15:52:15
    这意味如果你在设备上请求多个接口,你必须同样多次打开设备来接受一个libusb_dev_handle,对应每个你想进行通讯的接口。不要忘记调用libusb_dev_handle。 这些意味什么?这意味你在设备上操作以前,可以完成...
  •  6.2.4 文件的操作  6.2.5 文件的读操作  6.3 内核模式下的注册表操作  6.3.1 创建关闭注册表  6.3.2 打开注册表  6.3.3 添加、修改注册表键值  6.3.4 查询注册表  6.3.5 枚举子项  6.3.6 枚举子...
  •  6.2.4 文件的操作  6.2.5 文件的读操作  6.3 内核模式下的注册表操作  6.3.1 创建关闭注册表  6.3.2 打开注册表  6.3.3 添加、修改注册表键值  6.3.4 查询注册表  6.3.5 枚举子项  6.3.6 枚举子...
  • 一、在前面的话: DOS对从Windows时代开始接触计算机的人来说,有点难懂、有点神秘,也遥远了一点,但这不能成为大家掌握DOS的绊脚石。学会些DOS知识会让你在电脑世界里玩的更痛快,面对棘手问题的时候更加...
  • 7.7调试接口 75 7.832 KHZ XOSO输入 75 7.9无线测试输出信号 75 7.10掉电信号MUX(PMUX).,,,,,,…,,,,, 75 7.11I/O引脚. 75 8DMA控制器 ■■■■■■■■■■ ■■■■■■1■Ⅱ■■■■■1■ ■■1■■■■1 ∴∴83 ...
  • USB接口的游戏控制器的才是高手,我曾经也想做USB接口的,但是这个太复杂,我没有那么多的时间和精力。还是先总结一下优点吧。最大的优点是简单,只需要一点电子的基础甚至没有什么基础照连线就行了,非常适合...
  • vc源代码合集0951.rar

    热门讨论 2012-06-13 10:25:18
    2012-06-12 13:05 41,472 用VC++实现USB接口读写数据的程序.doc 2012-06-12 12:22 3,939 用邻接矩阵表示的图的深度优先搜索和广度优先搜索.txt 2012-06-12 11:43 1,845,250 界面美化Prof-UIS.rar 2012-06-12 ...
  • Android UI组件实例集合

    热门讨论 2012-09-11 11:31:29
    仿照Path应用首页左下角的Button动画效果了个简单的Demo,由于数学不好,坐标总是和理想有出入,只是大致实现了动画效果,若果有人能把坐标算对,那么修改我的demo就能做成类似Path的那种动画效果!希望大家出点力...
  • 11.如果您有多个硬盘,请将您引导MaxDOS系统的硬盘挂接在IDE1接口上,并设置为第一启动 设备,SATA硬盘如不能启动,请在BIOS中将硬盘的工作模式设置为: Compatible Mode. 12.安装MaxDOS后请勿使用NTFS磁盘压缩功能,...
  • IDE 1号接口检测到光驱,IDE 2号接口检测到希捷硬盘为80GB,其它为NONE表示检测没有设备连接到接口上。 Warning!! Now system is in safe mode. Please re-setting CPU frequency in CMOS setup. 警告:现在系统处在...
  • 升级MaxDOS71

    2009-05-30 11:28:00
    10.支持DOS驱动SATA.SCSI.1394.USB.PCMCIA等设置,可直接在DOS下访问. 11.首家独创全面支持nVIDIA全系列网卡网刻,更多精采内容请查阅“说明文件”. ===============================================================...
  • 若干源程序资料12.rar

    热门讨论 2012-06-11 22:11:26
    2012-06-11 21:06 78,719 C++USB接口的鼠标驱动源程序.rar 2012-06-11 21:07 50,067 C++VC编写的退火算法.rar 2012-06-11 21:06 67,891 C++一示所有点阵字库内容的工具源代码.rar 2012-06-11 21:11 60,547 C++工会...
  • MaxDOS_71PXE_G115.rar

    2009-03-02 19:12:34
    重要5: GHOST11依然存在不会自动分卷问题,这将导致GHOSTSRV上出现不是有效镜像问题 如果你使用手动备份镜像时请加上 -split=2000 参数,格式如 Ghost -split=2000 . 重要6: 如果您的机器运行GHOST时出现进入不了,...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    因为Linux与Windows不同,其后台运行许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...
  • bigsur跟catalina需要对号入座,不可串用 20200916: 精简了很多kext跟ssdt,应该资源消耗会更少了,然后规范了一下config,并升级oc至官方0.6.1 20200905: 更新了一个小彩蛋进去,加了自动亮度的传感器驱动 ...
  • 让我们带您走进高端多媒体手机开发者的行列把,你只需要花费300人民币,购买一张含有MTK平台的完整SDK的 光盘,您将成为手机产业一员,享受最新的技术,最好的职业待遇,干最有挑战性的技术活。。。。。。。呵呵 ...
  • #define NFSTAT __REGb(NF_BASE + 0x10) #define BUSY 1 inline void wait_idle(void) { int i; while(!(NFSTAT & BUSY)) for(i=0; i<10; i++); } /* low level nand read function */ int nand_read_...
  • ELDK使用与开发手册

    2018-03-07 10:53:39
    把数据烧入flash中的一个简单而又快速的办法是通过BDM或者JTAG接口的调试器或者flash烧器。当flash中没有任何数据(比如说一块新的开发板),这种方法是唯一的选择。 我们(强烈推荐)使用Abatron公司的BDI2000...
  • Ghost 8.3 系统备份软件

    2009-11-13 10:29:50
     Ghost 支持的存储介质超出了我们的想象,它支持对等 LPT 接口、对等 USB 接口、对等 TCP/IP 接口、SCSI磁带机、便携式设备(JAZ、ZIP、MO等)、光盘刻录机(CDR、CDRW)等。而这些特性不需要任何外带的驱动程序和...
  • Ghost 8.3 Enterprise

    2009-04-15 13:32:08
     Ghost 支持的存储介质超出了我们的想象,它支持对等 LPT 接口、对等 USB 接口、对等 TCP/IP 接口、SCSI磁带机、便携式设备(JAZ、ZIP、MO等)、光盘刻录机(CDR、CDRW)等。而这些特性不需要任何外带的驱动程序和...
  • If this environment variable is empty, uiautomator will fall back to connect_usb and you need to make sure that there is only one device connected to the computer. Command line 其中的$device_ip代表...
  • CGI:公共网关接口脚本文件 CGM:计算机图形元文件 CH:OS/2配置文件 CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片 CHM:编译过的HTML文件 CHP:Ventura Publisher章节文件 CHR:字符集(字体文件)...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

usb接口写着10