реклама на сайте
подробности

 
 
> Написание драйвера под USB порт
BlooDi
сообщение Mar 16 2007, 20:27
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 16-03-07
Пользователь №: 26 236



Люди помогите пожалуйста у меня проблема вышла....
Мне порекомендовали сделать драйвер USB порта. У меня скоро конференция, а на ней мне надо показать как работает этот драйвер. Мне подсказали что лучше всего работать в C++Builder6.
У меня такая цель сделать драйвер, который будет выполнять такую функцию НАПРИМЕР:
С определенное устройство поступает сигнал на компьютер. В свою очередь компьютер обрабатывает эту информацию и отправляет сигнал на много компьютеров(в виде хаба). И с этих компьютеров почтупает информация если какая-то проблема есть то ПРОИСХОДИТ сигнал что случилась ошибка. И эта программа должна работать постоянна примерно чтобы запрос поступал через каждые 2-5 сек.
Я не знаю как это сделать помогите пожалуйста.... За ранее благодарен! smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mospf
сообщение Mar 20 2007, 18:38
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-02-07
Пользователь №: 25 101



Посмотри http://www.education.pcports.ru/AT89.php а также http://www.pcports.ru/Library.php
Наверняка одна из этих ссылок тебе поможет.
Go to the top of the page
 
+Quote Post
BlooDi
сообщение Mar 20 2007, 19:37
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 16-03-07
Пользователь №: 26 236



Цитата(mospf @ Mar 20 2007, 18:38) *
Посмотри http://www.education.pcports.ru/AT89.php а также http://www.pcports.ru/Library.php
Наверняка одна из этих ссылок тебе поможет.


Спасибо большое! =), только первая ссылка не работает, а вторая подошла!Очень признателен!

Цитата(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;
}
//------------------------------------

Посмотрите вдруг что у меня неправильно, так подскажите! biggrin.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 03:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016