Esposible o muere en el intento

Iniciado por kakinets, 30 Septiembre 2005, 02:58 AM

0 Miembros y 1 Visitante están viendo este tema.

kakinets

hola yo quiero saber si esto es posible o solo me ago ilusiones

Lo q yo quiero hacer es lo siguiente...

Manejar un puerto usb por VB....No como por librerias no tengo idea....

Lo q yo quiero hacer es cortar la energia de un usb y bolberla adtivar...

Para q es esto:

Lo que yo tengo en la mente por ahora es un ventilado q se ensiende por un programa en VB y se apaga....Este va conectado a un usb en donde corta y activa la energia....Un esjemplo simple es los parlante de sonido nuevos se alimenta de corriente por los usb pero esa corriente esta constantemente activada....


Bueno espero q me allan entendido...


gracias a Todos KakiNets

Gangrel

Je visial basic es un lenguaje de alto nivel y no tiene acceso al puerto USB, un lenguaje que te podria ayudar con eso es C++ e interrupciones ASM, con eso podrias lograrlo, ya que ensamblador es un lenguaje de muy bajo nivel.
La educacion no es un privilegio, es un derecho.

http://www.usuarios.lycos.es/protg

Kizar

En ASM se puede hacer todo!!! , pero es muy dificil de programar en comparacion con otros lenguajes como VB

NYlOn

En mi opinion,
desde VB,
cerrar los puertos USB,
es,
IMPOSIBLE
(no te quiero tirar abajo xD)



a menos que se recurra a alguna DLL u OCX, que hasta el momento no he visto

asike, a buscar :P

kakinets

Entondes el  Visual Basic lo decarto...

En q lenguaje lo podria hacer...Un amigo me recondo en Direc X

_Sergi_

#5
Si se puede hacer en VB. Aqui tienes un code, no se realmente para que es pero el caso es que usa el puerto USB y es en VB... si consigues entenderlo o adaptarlo a tu programa, habras resuelto tu problema. Este código NO es mio y tan solo es orientativo, ya que como he dicho no estoy seguro de su funcionamiento rea

En un modulo

Public Declare Function CloseHandle Lib "kernel32" ( _
     ByVal hObject As Long) As Long
   
Public Declare Function DeviceIoControl Lib "kernel32" ( _
     ByVal hDevice As Long, _
     ByVal dwIoControlCode As Long, _
     lpInBuffer As Any, _
     ByVal nInBufferSize As Long, _
     lpOutBuffer As Any, _
     ByVal nOutBufferSize As Long, _
     lpBytesReturned As Long, _
     lpOverlapped As OVERLAPPED) As Long
   
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
     ByVal lpFileName As String, _
     ByVal dwDesiredAccess As Long, _
     ByVal dwShareMode As Long, _
     lpSecurityAttributes As SECURITY_ATTRIBUTES, _
     ByVal dwCreationDisposition As Long, _
     ByVal dwFlagsAndAttributes As Long, _
     ByVal hTemplateFile As Long) As Long

' WINAPI - Typen
Public Type USBName
    USBLenght As Long
    GUID(256) As Byte
End Type

Public Type OVERLAPPED
    ternal As Long
    ternalHigh As Long
    offset As Long
    OffsetHigh As Long
    hEvent As Long
End Type

Public Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Long
End Type

' WINAPI - Valores de las constantes
Public Const OPEN_EXISTING = 3
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2


En un formulario (para probarlo)

Private Const USB_ROOT_HUB = &H220408
Private Const USB_HOSTCONTROLLER = &H220424

Private Sub Form_Load()
    Dim hFile     As Long
    Dim sHostName As String
    Dim Sa        As SECURITY_ATTRIBUTES
    Dim ov        As OVERLAPPED
    Dim i         As Long
    Dim ii        As Long
    Dim nFlags    As Long
    Dim nShare    As Long
    Dim USB       As USBName
    Dim RetByte   As Long
    Dim rVal      As Long
   
    nFlags = GENERIC_READ Or GENERIC_WRITE
    nShare = FILE_SHARE_READ Or FILE_SHARE_WRITE
   
    For i = 0 To 3
       sHostName = "\\.\HCD" & CStr(i)
       hFile = CreateFile(sHostName, nFlags, nShare, Sa, OPEN_EXISTING, 0, 0)
       If hFile > 0 Then
           sHostName = ""
           If DeviceIoControl(hFile, USB_ROOT_HUB, 0, 0, USB, Len(USB), RetByte, ov) Then
               rVal = DeviceIoControl(hFile, USB_ROOT_HUB, USB, USB.USBLenght, USB, USB.USBLenght, RetByte, ov)
               If rVal Then
                  For ii = 0 To RetByte Step 2
                     sHostName = sHostName + Chr(USB.GUID(ii))
                  Next
                  MsgBox sHostName
               End If
           End If
           CloseHandle hFile
       End If
    Next
End Sub


Proyecto de Ingeniero

programatrix

Vb no tiene limitaciones, a no ser que sea algu muy bajo a nivel sistema como parámetros de memoria, manipular exe, cluseter etc...
Para todo lo demás están las apis de widnows  ::)

kakinets

Y como saber como se llama cada api y darle un funsionamientos...És decir como se cual es la api q sirve para los USB....O demas


Espero q  me allan entendido

Thaorius

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí

Slasher-K

Cita de: reydelmundo11 en  1 Octubre 2005, 22:21 PM
Vb no tiene limitaciones, a no ser que sea algu muy bajo a nivel sistema como parámetros de memoria, manipular exe, cluseter etc...
Para todo lo demás están las apis de widnows  ::)

Eso si se puede hacer y sin mucho lío, es más fácil que usar el USB porque DeviceIoControl se comunica directamente con los controladores.

pedronets: hay formas y formas de preguntar las cosas, luego si no te responden no te quejes.



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*