zhang..yb 发表于 2012-11-19 20:36:01

LIBUSB+BCB6.0 很奇怪的问题

下位机以 2 MS 间隔向上位机通过 USB 发数据, 上位机以 1MS 的间隔读下位机的数据, 但传输成功的间隔时间竟有 30MS 之多,并且不稳定的, 请教哪里出了问题?

bbs2009 发表于 2012-11-19 21:08:21

zhang..yb 发表于 2012-11-19 21:32:16

CDC 协议, 每次传 64 字节. 上位机用 1 MS 的定时器来保证 1MS 读一次, 如果上位机连续读,那么传输成功的间隔是 2 MS, 但是上位机还要处理其它,不可能连续读的

bbs2009 发表于 2012-11-19 22:20:05

zhang..yb 发表于 2012-11-19 22:39:38

下位机的数据是实时的,没法集中传输

bbs2009 发表于 2012-11-19 22:56:54

zhang..yb 发表于 2012-11-20 08:44:21

问题不在下位机, 上位机是不区分传输类型的

eriks626 发表于 2012-11-20 09:09:38

libusb在上位机呼叫 Read 时才会做一次传输,上位机是在 User Mode, 很难每 1mSec 完成一次传输!

zhang..yb 发表于 2012-11-20 09:13:40

是很难1MS 传一次, 但不至于几十毫秒吧

bbs2009 发表于 2012-11-20 10:24:52

bbs2009 发表于 2012-11-20 10:26:34

zhang..yb 发表于 2012-11-20 10:43:14

我把 VID 改了, 用 LIBUSB 生成的驱动, 能够通讯,就是速度提不到 MS 级

zhang..yb 发表于 2012-11-20 10:46:57

用异步接收,程序编译通过,但运行出错
char data;
void *request;
int read;
if(usb_bulk_setup_async(dev, &request, 0x81) < 0) {
   // error handling
}
if(usb_submit_async(request, data, sizeof(data)) < 0) {                                    <------这里运行出错
   // error handling
}
read =usb_reap_async(request, 1000);
if(read >= 0)
printf("read %d bytes\n", read);
else
   // error handling
usb_free_async(&request);

bbs2009 发表于 2012-11-23 08:39:42

NemoGu 发表于 2012-11-23 10:32:59

zhang..yb 发表于 2012-11-20 10:46 static/image/common/back.gif
用异步接收,程序编译通过,但运行出错
char data;
void *request;


libusb返回的error code是多少?
页: [1]
查看完整版本: LIBUSB+BCB6.0 很奇怪的问题