Цитата(mospf @ Mar 20 2007, 18:38)

Спасибо большое! =), только первая ссылка не работает, а вторая подошла!Очень признателен!
Цитата(Demeny @ Mar 20 2007, 09:27)

Хм, а зачем его делать-то? Комплект драйверов для работы с USB-портами есть в Windows. Открываем "Диспетчер устройств", смотрим ... у меня вот они видны
Код
C:\WINDOWS\system32\drivers\usbhub.sys
C:\WINDOWS\system32\drivers\usbport.sys
C:\WINDOWS\system32\drivers\usbuhci.sys
C:\WINDOWS\system32\usbui.dll
Судя по той задаче, что Вы описали ...
Ну вот примерный драйвер только это для COM porta, а мне его нужно переделать для USB:
Цитата
//---------------------------------------
#include <vcl.h> #pragma hdrstop
#include "Unitl.h"
//
#pragma package(smart_init) #pragma resource "*.dfm"
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <process.h>
#include <stdlib.h> #include <winbase.h>
void a() {
}
TForml *Form1;
COMMTIMEOUTS ct;
DWORD mask;
OVERLAPPED ovr={0};
DWORD bc;
BOOL s;
//------------------------------------------------
fastcall TForml::TForml(TComponent* Owner)
: TForm(Owner)
{
double *sd=new double[12];
char *buf_out=new char[7];
buf_out[0]=0x01;
buf_out[1]=0x55;
buf_out[2]=0x4D;
buf_out[3]=0xFF;
buf_out[4]=0xFF;
buf_out[5]=0x00;
buf_out[6]=0x00;
unsigned char *buf=new unsigned char[50];
DCB *dcb;
HANDLE port=*new HANDLE;
char *buf_in;
FILE *F=new FILE;
//------------------------------------
z=0; dcb=(DCB*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(DCB));
dcb->DCBIength=sizeof(DCB);
BuildCommDCB("baud=9600 parity=N data=8 stop=l",dcb);
dcb->fNull=TRUE;
ct. ReadlntervalTimeout=10;
ct.ReadTotarnmeoutMultiplier=ct.ReadTotalTimeoutConstant=0;
ct.WriteTotan"imeoutMultiplier=ct.WriteTotalTimeoutConstant=0;
port=CreateFile("COMl",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISnNG,FILE_FLAG_OVERLAPPE D,NULL);
if(port==INVALID_HANDLE_VALUE) { zz=1;
Timerl-> Enabled=true;
}
s=SetCommState(port,dcb); if(s==0){
Timer1-> Enabled=true;
}
SetCommTimeouts(port,&ct); HeapFree(GetProcessHeap(),0,dcb);
memset(&ovr,0,sizeof(ovr)); ovr.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
WriteFile(port/buf_out,7,&bc,&ovr);
if(WaitForSingleObject(ovr.hEvent,10000)==WAIT_OBJECT_0){ GetOverlappedResult(port,&ovr,&bc,FALSE);
} else {
/* Обработка ошибки */ Timer1l-> Enabled=true;
}
ovr.hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);
buf_in=(char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,51);
s=ReadFile(port,buf_in,50,&bc,&ovr); if(WaitForSingleObject(ovr.hEvent, 1000)==WAIT_OBJECT_0) {
GetOverlappedResult(port,&ovr,&bc,FALSE);
} else {
/* Обработка ошибки */
Timer1-> Enabled=true; }
for(i=0;i<50;i++)
{ buf[i]=buf_in[i];
} if((F=fopen('Test.dat","wb"))==NULL)
{
ShowMessage("Файл не удается создать");
}
fwrite(&buf,sizeof(char),50,F);
CloseHandle(port);
CloseHandle(ovr.hEvent);
HeapFree(GetProcessHeap(),0,buf_in);
delete [] buf;
buf=NULL;
delete [] buf_out;
buf_out=NULL;
delete F;
x10=x10+1;
delete [] sd;
buf NULL;
}
//------------------------------------
Посмотрите вдруг что у меня неправильно, так подскажите!