Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Lire un port sur USB Brick avec C++ Builder



  1. #1
    Jerepain

    Lire un port sur USB Brick avec C++ Builder


    ------

    Bonjour.
    Je suis en stage en Ecosse (desole pour les accents ), et je dois programmer un USB Brick. Seulement je ne sais pas comment lire un signal pour que l'interface dise 'Oh, je vois un signal sur tel port'. Par contre, j'arrive a ecrire sur un port (allumer et eteindre une LED en somme). Voici le code qui me permet de faire ca :

    #include <vcl.h>
    #pragma hdrstop
    #include "AwusbAPI.h"
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    #include <stdio.h>

    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
    }
    HINSTANCE hDll;
    int Awusb_status;
    unsigned char data[2], data_image[2];
    //
    // function type declaration to use with pointer declaration
    //
    typedef DWORD ( * FARPROCP_AwusbOpen) (DWORD devnum);
    typedef DWORD ( * FARPROCP_AwusbClose) ();
    typedef DWORD ( * FARPROCP_AwusbEnablePort) (BYTE *data, DWORD count);
    typedef DWORD ( * FARPROCP_AwusbOutPort) (BYTE *data, DWORD count);
    typedef DWORD ( * FARPROCP_AwusbInPort) (BYTE *data, DWORD count);
    typedef char * ( * FARPROCP_AwusbErrorMessage) (DWORD ret);
    //
    // create pointer to functions in DLL to access USB parallel interface unit.
    //
    FARPROCP_AwusbOpen Dll_AwusbOpen;
    FARPROCP_AwusbClose Dll_AwusbClose;
    FARPROCP_AwusbEnablePort Dll_AwusbEnablePort;
    FARPROCP_AwusbOutPort Dll_AwusbOutPort;
    FARPROCP_AwusbInPort Dll_AwusbInPort;
    FARPROCP_AwusbErrorMessage Dll_AwusbErrorMessage;
    //
    // init_USB_DLL : function to initialise "awusb.dll" to allow access to USB I/O
    // ==========
    void init_USB_DLL(void)
    {
    hDll = LoadLibrary("awusb.dll");
    if (hDll == 0) {
    printf("ERROR : awusb.dll LoadLibrary failed");
    exit(0);
    }
    Dll_AwusbOpen = (FARPROCP_AwusbOpen) GetProcAddress (hDll, "AwusbOpen");
    Dll_AwusbClose = (FARPROCP_AwusbClose) GetProcAddress (hDll, "AwusbClose");
    Dll_AwusbEnablePort = (FARPROCP_AwusbEnablePort) GetProcAddress (hDll, "AwusbEnablePort");
    Dll_AwusbOutPort = (FARPROCP_AwusbOutPort) GetProcAddress (hDll, "AwusbOutPort");
    Dll_AwusbInPort = (FARPROCP_AwusbInPort) GetProcAddress (hDll, "AwusbInPort");
    Dll_AwusbErrorMessage = (FARPROCP_AwusbErrorMessage) GetProcAddress (hDll, "AwusbErrorMessage");

    Awusb_status = Dll_AwusbOpen(0);
    if (Awusb_status != AWUSB_OK) {
    printf("ERROR : awusb.dll Open failed");
    exit(0);
    }
    data[0] = 0x00;
    data[1] = 0x00; /* data[0] and data[1] form a 16-bit value */
    Dll_AwusbEnablePort(data,2);
    Awusb_status = Dll_AwusbClose();
    }

    void write_USB_DLL(void)
    {
    hDll = LoadLibrary("awusb.dll");
    if (hDll == 0) {
    printf("ERROR : awusb.dll LoadLibrary failed");
    exit(0);
    }
    Dll_AwusbOpen = (FARPROCP_AwusbOpen) GetProcAddress (hDll, "AwusbOpen");
    Dll_AwusbClose = (FARPROCP_AwusbClose) GetProcAddress (hDll, "AwusbClose");
    Dll_AwusbEnablePort = (FARPROCP_AwusbEnablePort) GetProcAddress (hDll, "AwusbEnablePort");
    Dll_AwusbOutPort = (FARPROCP_AwusbOutPort) GetProcAddress (hDll, "AwusbOutPort");
    Dll_AwusbInPort = (FARPROCP_AwusbInPort) GetProcAddress (hDll, "AwusbInPort");
    Dll_AwusbErrorMessage = (FARPROCP_AwusbErrorMessage) GetProcAddress (hDll, "AwusbErrorMessage");
    Awusb_status = Dll_AwusbOpen(0);
    if (Awusb_status != AWUSB_OK) {
    printf("ERROR : awusb.dll Open failed");
    exit(0);
    }
    data[0] = 0x00; //les 8 premiers ports sont en entree
    data[1] = 0x80; //la pin 15 est en out, la LED est branchee dessus.
    Dll_AwusbEnablePort(data,2);
    Dll_AwusbOutPort(data,2); //J'ecris
    Awusb_status = Dll_AwusbClose(); //Je ferme
    }

    Ce sont ces 5 dernieres lignes aui changent tout. Pour lire, il faut utiliser la fonction Dll_AwusbInPort(data,2); mais je ne sais pas comment on accede au port qu'on veut lire. Je veux faire un label qui change de couleur quand le bit est a 0 ou 1. Je veux donc faire une 3eme fonction avec Inport au lieu de outport.
    La fonction Inport est expliquee sur cette page : http://www.activewireinc.com/docs/AwUsb_SwRef.htm

    Je dois pas etre loin de la solution, please help !

    -----

  2. #2
    Jack

    Re : Lire un port sur USB Brick avec C++ Builder

    S'il n'y a toujours pas de réponse d'ici demain, je déplacerai en info

    A+

  3. #3
    Jerepain

    Re : Lire un port sur USB Brick avec C++ Builder

    c'est resolu !

  4. #4
    Jack

    Re : Lire un port sur USB Brick avec C++ Builder

    C'est noté.

Sur le même thème :

Discussions similaires

  1. Signal vidéo sur port USB
    Par Tesla dans le forum Électronique
    Réponses: 7
    Dernier message: 16/07/2009, 12h28
  2. alimentation sur port usb
    Par saba93 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/11/2007, 17h02
  3. comment lire fichiers audio sur clé USB 2.0
    Par ROM13 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 17/08/2007, 23h41
  4. Port USB sur chaîne hifi ?
    Par Iforire dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 17/12/2006, 15h30
  5. Souris/clavier PS2 sur port USB
    Par Papy Octet dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 16/06/2006, 11h17
Découvrez nos comparatifs produits sur l'informatique et les technologies.