阅读:1527回复:6
各位大侠,usb bulk端口写数据时机器重启,急寻答案,20分
usb外设,三个端口,控制端口0,bulk In,bulk Out。利用DriverStudio2.6 编写的驱动程序,基本为wizard自动生成的代码,控制端口0(即缺省端口)的读写操作均好用,但往bulk Out写数据时,计算机重启,偶尔也会不重启,请各位大侠赐教。
|
|
|
沙发#
发布于:2003-10-17 10:45
各位大侠,有遇到过类似情况的吗,请指教。
|
|
|
板凳#
发布于:2003-10-16 15:24
为什么固件里的中断函数会导致计算机重启动?是不是电源超负荷了?
|
|
地板#
发布于:2003-10-16 14:33
和我的情况一样,你看一下是不是你的固件里的中断函数的原因,我已经解决了,是我加的一个中断函数在作怪,改了后就好了,我的
QQ 107947912 |
|
地下室#
发布于:2003-10-16 14:18
在driverstudio中定义的bulk in ,out端口的包大小均为64,和外设一致,发送的包大小为31 bytes。
源代码如下: void doWrite(int n) { UCHAR *buf; ULONG nWritten; int i; // int j; ///////////// //n=31; buf = (UCHAR *) malloc(n); if (buf == NULL) { printf(\"Failed to allocate buffer for write\"); Exit(1); } // start with the mod26 letter of the number of bytes to write // j = (n % 26); // load buffer with dummy data (abcdefg...) // for (i=0; i<n; i++, j=(j + 1)%26) // { // buf = \'a\' + j; // } buf[0] = 0x55; buf[1] = 0x53; buf[2] = 0x42; buf[3] = 0x43; buf[4] = 0xc8; buf[5] = 0xdc; buf[6] = 0x6a; buf[7] = 0x81; buf[8] = 0x24; buf[9] = 0; buf[10] = 0; buf[11] = 0; buf[12] = 0x80; buf[13] = 0; buf[14] = 0x06; buf[15] = 0x12; buf[16] = 0; buf[17] = 0; buf[18] = 0; buf[19] = 0x24; buf[20] = 0; buf[21] = 0; buf[22] = 0; buf[23] = 0; buf[24] = 0; buf[25] = 0; buf[26] = 0; buf[27] = 0; buf[28] = 0; buf[29] = 0; buf[30] = 0; // Write data to driver printf(\"Writing to device - \"); WriteFile(hDevice, buf, n, &nWritten, NULL); printf(\"%d bytes written to device (%d attempted).\\n\", nWritten, n); // Print what was written i = 0; // while(i < n) // { // j = min((i+26),n); for(i=0 ; i < n; i++) { printf(\"%x, \", buf); } printf(\"\\n\"); // } free(buf); } |
|
|
5楼#
发布于:2003-10-16 10:27
usb外设,三个端口,控制端口0,bulk In,bulk Out。利用DriverStudio2.6 编写的驱动程序,基本为wizard自动生成的代码,控制端口0(即缺省端口)的读写操作均好用,但往bulk Out写数据时,计算机重启,偶尔也会不重启,请各位大侠赐教。 和我的情况几乎一样。 你看看你定义的包的大小是否吻合。 :D |
|
6楼#
发布于:2003-10-16 09:39
给出源码来啊:)
给我看看:yux008@hotmail.com |
|