Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB.Net] Gestire porta usb

    Salve, ancora una volta vi chiedo aiuto per un mio progetto...

    Vorrei poter disattivare ed attivare (togliendo la corrente) una porta usb utilizzando vb.net.
    ho cercato in giro, ma non ho trovato nulla di soddisfacente...
    ho comunque letto che tramite prompt dei comandi è possibile disattivare una seriale identificandola in debug (nell'esempio credo era "-04" o simile, non lo ricordo bene..) e decidere di accenderla o spegnerla premendo e confermando con invio i tasto 1 (acceso) /0 (spento)..

    vorrei fare una cosa del genere premendo un button da un programma scritto in vb.net..

    potete aiutarmi?

    grazie in anticipo a tutti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non puoi gestire direttamente da VB.NET l'alimentazione di una porta USB (la gestione di una USB non è banale).

    L'alimentazione viene gestita dal controller USB (hardware) e dai driver con cui devi comunicare (sapendo esattamente come fare) per gestire le porte.

    Ti può essere d'aiuto (ma non ho provato) questo progetto

    http://www.libusb.org/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ho trovato l'esempio a cui mi riferivo prima:

    codice:
    1)
    Apri una finestra DOS (si, hai letto bene, DOS) nel tuo Windows.
    Se non ce l'hai non so che farci.
    
    2)
    nella finestra DOS scrivi 'debug' (senza apici) e premi invio.
    Se non ce l'hai non so che farci.
    
    3)
    Al prompt (il trattino è il prompt del debug) scrivi:
    -d 40:0 e premi invio (il trattino non lo scrivere che già c'è)
    
    Esempio:
    <PASTE>
    C:\WINDOWS>debug
    -d 40:0
    0040:0000  F8 03 F8 02 00 00 00 00-78 03 00 00 00 00 17 02  ... 
    -
    </PASTE>
    
    Le righe sono di più ma ci interessa solo la prima...
    A partire da sinistra ci sono gli indirizzi delle porte seriali; si leggono 
    al contrario di come sono scritti. Dall'8^ byte ci sono le parallele ed in 
    fondo la porta mouse PS2, se attivata.
    
    Il mio piccì ha due seriali (h03F8 e h02F8), una parallela (h0378) ed una 
    porta mouse (h0217). Ci interessa l'indirizzo fisico della parallela. Tutta 
    sta' storia perché con i BIOS moderni è l'indirizzo è personalizzabile e 
    non sono certo che tu l'abbia a h0378, che è il valore standard (secondo 
    tradizione) della prima parallela.
    
    Allora... Siamo nel debug (-) e sappiamo qual'è l'indirizzo della porta che 
    ci interessa (la parallela). Il tester dovrebbe segnare 0 volt.
    
    Scrivi:
    -o 378,0 e premi invio (o=out: scrivi 0 su 378)...
    Il tester rimane a 0
    
    Scrivi:
    -o 378,1 e premi invio (o=out: scrivi 1 su 378)...
    Il tester segna 5 volt (potrebbero essere anche un po' meno... dovrebbero 
    essere 5).
    
    Scrivi:
    -o 378,0 e premi invio (o=out: scrivi 0 su 378)...
    Il tester torna a 0
    
    Quindi, scrivendo un 1 sulla porta corrispondente alla porta parallela 
    attiviamo 5 volt sul pin 2 della parallela, scrivendo 0 quei 5 volt non ci 
    sono più.
    
    Il nostro aggeggio funziona.
    Siamo contenti e ci prendiamo un caffè.
    posso fare questo procedimento in automatico?

    ad es.
    apro promt dei comandi
    scrivi debug
    scrivi -d 40:0 e premi invio
    ....ecc...

    è possibile?

    ps non ricordo il sito da dove ho preso l'esempio...

  4. #4
    Originariamente inviato da inviasubito
    ho trovato l'esempio a cui mi riferivo prima:
    ...
    Questa roba non c'entra niente, parla di accedere direttamente alle porte IO della seriale, nulla che ti possa essere utile (e tra l'altro l'esempio funziona solo su Windows 9x, tutti i Windows della famiglia NT non concedono l'accesso diretto alle porte IO da fuori dal kernel).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Confermo quanto scritto da MItaly (a parte il fatto che si tratta di gestione della vecchia porta parallela e non della seriale) ma forse non mi sono spiegato bene prima.

    La gestione delle USB è *complessa* e non avviene da un programma utente senza che ci sia uno strato (una libreria, un driver) che permetta di comunicare con il sistema e l'hardware.

    Quella libreria che ti ho suggerito, anche se non l'ho provata a fondo, mi sembra l'unica soluzione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Originariamente inviato da oregon
    Confermo quanto scritto da MItaly (a parte il fatto che si tratta di gestione della vecchia porta parallela e non della seriale)
    Giusto, porta 378, quando bastava un niente per pilotare otto transistor... bei tempi...
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.