python libusb_libusb介绍和使用示例

sudo insmod /lib/modules/2.6.22-14-generic/kernel/drivers/usb/serial/usbserial.ko vendor=0x8086 product=0xd001

同时插上ttyUSB0和ttyUSB1(ch341),obm可以将dkb下载下去,但是自动重起之后,就不能下载接下来的东西了,所以应该,需要close(ttyUSB0_handle);

然后进行接下来的下载,分别调用两次不过应该自动关闭了,所以可能还是不能同时插上ttyUSB0和ttyUSB1

lsusb 显示usb设备的vendor和product

比如:

b074@gliethttp:~$ lsusb

Bus 002 Device 001: ID 0000:0000

Bus 001 Device 116: ID 8086:d001 Intel Corp.

Bus 001 Device 003: ID 413c:2105 Dell Computer Corp.

Bus 001 Device 002: ID 0461:4d15 Primax Electronics, Ltd

Bus 001 Device 001: ID 0000:0000

其中Bus 001 Device 116: ID 8086:d001 Intel Corp. 就是vendor=0x8086和product=0xd001

可以使用dmesg来查看具体的是ttyUSB0还是ttyUSB1了

pidof hello.exe

pidof bash

显示进程的pid值

波特率:

#define  B0    0000000        /* hang up */

#define  B50    0000001

#define  B75    0000002

#define  B110    0000003

#define  B134    0000004

#define  B150    0000005

#define  B200    0000006

#define  B300    0000007

#define  B600    0000010

#define  B1200    0000011

#define  B1800    0000012

#define  B2400    0000013

#define  B4800    0000014

#define  B9600    0000015

#define  B19200    0000016

#define  B38400    0000017

#define EXTA B19200

#define EXTB B38400

#define CSIZE    0000060

#define   CS5    0000000

#define   CS6    0000020

#define   CS7    0000040

#define   CS8    0000060

#define CSTOPB    0000100

#define CREAD    0000200

#define PARENB    0000400

#define PARODD    0001000

#define HUPCL    0002000

#define CLOCAL    0004000

#define CBAUDEX 0010000

#define    BOTHER 0010000

#define    B57600 0010001

#define   B115200 0010002

#define   B230400 0010003

#define   B460800 0010004 //有些CDMA使用该波特率

#define   B500000 0010005

#define   B576000 0010006

#define   B921600 0010007

#define  B1000000 0010010

#define  B1152000 0010011

#define  B1500000 0010012

#define  B2000000 0010013

#define  B2500000 0010014

#define  B3000000 0010015

#define  B3500000 0010016

#define  B4000000 0010017

Developing Linux Device Drivers using Libusb API

Written by vikram_cvk - 2004-07-16 18:05

Introduction

We often come across a situation where a USB device which runs perfectly on Windows platform does not even get detected on Linux. Lack of support for USB devices is one of the reason why some people don't embrace Linux. Now there is a new API by name Libusb which helps the developers to develop USB device drivers on the fly!

What is Libusb

Libusb is a high-level language API which conceals low-level kernel interactions with the USB modules. It provides a set of function which are adequate to develop a device driver for a USB device from the Userspace.

Libusb is not complex

For any wannabe Linux Kernel programmers developing device driver as a Kernel module is a herculean task. Developing kernel modules requires fair degree of proficiency in 'C' language and also good idea of kernel subsystems, data structures etc. All these are enough to put-off a developer from venturing into Device Driver programming.Libusb has been designed to address this shortcoming. Simplified interface allows developers to develop USB drivers from the userspace . Libusb library functions provide high level abstraction to the Kernel structures and allows the developers to have access to these structures through the USBFS(USBfilesystem).

Its Cross-platform

Beauty of Libusb lies in its cross platform functionality. Driver written for one platform could be easily ported onto another platform with little or no changes, currently following operating systems are supported by Libusb.

Linux

FreeBSD

Darwin

OS X

This HOWTO focuses on how Libusb can be used on Linux platform. For information about other platforms goto http://http://libusb.sourceforge.net/.

LIBUSB ON LINUX

Linux is the most popular platform for the Libusb API,the reason being growing popularity of Linux as a stable OS. On Linux Libusb makes of the USBFS file system. by default USBFS is automatically mounted when the system is booted.

What is USBFS

USBFS is a filesystem specifically designed for USB devices, by default this filesystem gets mounted when the system is booted and it can be found at /proc/bus/usb/. This filesystem consists of information about all the USB devices that are connected to the computer.Libusb makes use of this filesystem to interact with the USB devices.

Following C program can be a stepping stone into the world of Libusb.This program can be used to gather all the technical/hardware details of a USB device connected to the computer ,ensure that some USB device is connected into the USB port.

Details like Vendor-Id , Product-Id ,Endpoint addresses of a USB device is of paramount importance for a device driver developer.

/* testlibusb.c */

#include

#include

void print_endpoint(struct usb_endpoint_descriptor *endpoint)

{

printf(" bEndpointAddress: %02xh\n", endpoint->bEndpointAddress);

printf(" bmAttributes: %02xh\n", endpoint->bmAttributes);

printf(" wMaxPacketSize: %d\n", endpoint->wMaxPacketSize);

printf(" bInterval: %d\n", endpoint->bInterval);

printf(" bRefresh: %d\n", endpoint->bRefresh);

printf(" bSynchAddress: %d\n", endpoint->bSynchAddress);

}

void print_altsetting(struct usb_interface_descriptor *interface)

{

int i;

printf(" bInterfaceNumber: %d\n", interface->bInterfaceNumber);

printf(" bAlternateSetting: %d\n", interface->bAlternateSetting);

printf(" bNumEndpoints: %d\n", interface->bNumEndpoints);

printf(" bInterfaceClass: %d\n", interface->bInterfaceClass);

printf(" bInterfaceSubClas

你可能感兴趣的:(python,libusb)