IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Driver série PDA Windows Mobile (erreur NMAKE U1073)


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Driver série PDA Windows Mobile (erreur NMAKE U1073)
    Bonjour,
    Voilà j'ai développé un driver série pour un pda à l'aide de platform Builder (le code est mis plus bas). Le problème est que lors du "build" j'ai des erreurs. Quelqu'un peut-il m'aider?? merci d'avance et meilleures salutations

    Steve

    Voici le log et le code plus bas :

    LOG :
    --------------------Configuration: Emulator: x86_Release--------------------
    Starting Build: set WINCEREL=1&&build
    ==============
    BUILD: [Thrd:Sequence:Type ] Message
    BUILD: [00:0000000000ROGC ] Checking for \WINCE500\sdk\bin\i386\srccheck.exe.
    BUILD: [00:0000000001ROGC ] SrcCheck exit code: 0 (dec).
    BUILD: [00:0000000002ROGC ] Compile and Link for x86.
    BUILD: [00:0000000003ROGC ] Loading C:\WINCE500\PBWorkspaces\monpremierOS\my_serial_driver\Build.dat.
    BUILD: [00:0000000004ROGC ] Done.
    BUILD: [00:0000000005ROGC ] Computing include file dependencies:
    BUILD: [00:0000000006ROGC ] Checking for SDK include directory: C:\WINCE500\sdk\ce\inc.
    BUILD: [00:0000000007ROGC ] Scan \WINCE500\PBWorkspaces\monpremierOS\my_serial_driver\
    BUILD: [00:0000000010ROGC ] Linking \WINCE500\PBWorkspaces\monpremierOS\my_serial_driver\ directory.
    [#ff2a00]BUILD: [01:0000000017:ERRORE] NMAKE : U1073: don't know how to make 'C:\WINCE500\PBWorkspaces\monpremierOS\WINCE500\Emulator_x86\cesysgen\sdk\lib\x86\retail\coredll.lib;'
    BUILD: [01:0000000019:ERRORE] NMAKE.EXE -i -c BUILDMSG=Stop. LINKONLY=1 NOPASS0=1 MAKEDLL=1 failed - rc = 2[/#ff2a00]
    BUILD: [00:0000000020ROGC ] Files Warnings Errors
    BUILD: [00:0000000021ROGC ] Midl 0 0 0
    BUILD: [00:0000000022ROGC ] Resource 0 0 0
    BUILD: [00:0000000023ROGC ] Message 0 0 0
    BUILD: [00:0000000024ROGC ] Precomp Header 0 0 0
    BUILD: [00:0000000025ROGC ] C/Cpp/Cxx 0 0 0
    BUILD: [00:0000000026ROGC ] Assembler 0 0 0
    BUILD: [00:0000000027ROGC ] Static Libraries 0 0 0
    BUILD: [00:0000000028ROGC ] Dll's 0 0 0
    BUILD: [00:0000000029ROGC ] Exe's 0 0 0
    BUILD: [00:0000000030ROGC ] Resx 0 0 0
    BUILD: [00:0000000031ROGC ] Csharp Targets 0 0 0
    BUILD: [00:0000000032ROGC ] Other 0 0 2
    BUILD: [00:0000000033ROGC ]
    BUILD: [00:0000000034ROGC ] Total 0 0 2
    BUILD: [00:0000000035ROGC ]
    BUILD: [00:0000000036ROGC ] 0 Warnings, 2 Errors
    Build for Windows CE (Release) (Built on Apr 22 2004 10:38:01)
    File names: Build.log Build.wrn Build.err Build.dat

    monpremierOS - 2 error(s), 0 warning(s)




    Et voici le code :


    #include "stdafx.h"
    #include <windows.h>
    #include <wdm.h>



    // constante de récupération du code du IOCTL 'PUTC'
    #define IOCTL_PUTC CTL_CODE(FILE_DEVICE_UNKNOWN,2048, METHOD_BUFFERED, FILE_ANY_ACCESS)
    // constante de récupération du code du IOCTL 'GETC'
    #define IOCTL_GETC CTL_CODE(FILE_DEVICE_UNKNOWN,2049, METHOD_BUFFERED, FILE_ANY_ACCESS)
    // constante de récupération du code du IOCTL 'GET_RX_STATUS'
    #define IOCTL_GET_RX_STATUS CTL_CODE(FILE_DEVICE_UNKNOWN,2050,METHOD_BUFFERED, FILE_ANY_ACCESS)


    // constantes servant à initialiser les statuts du driver
    #define comLineControl 3
    #define comDivisorLow 0
    #define comDivisorHigh 1
    #define comFIFOControl 2
    #define comIntEnable 1
    #define comModemControl 4
    #define comLineStatus 5
    #define comTxBuffer 0
    #define comRxBuffer 0

    // constantes d'erreur
    #define LS_TSR_EMPTY 0x40
    #define LS_THR_EMPTY 0x20
    #define LS_RX_BREAK 0x10
    #define LS_RX_FRAMING_ERR 0x08
    #define LS_RX_PARITY_ERR 0x04
    #define LS_RX_OVERRRUN 0x02
    #define LS_RX_DATA_READY 0x01
    #define LS_RX_ERRORS (LS_RX_FRAMING_ERR | LS_RX_PARITY_ERR | LS_RX_OVERRRUN)






    // entrée de la dll
    BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
    {
    return TRUE;
    }



    // fonction d'initialisation du driver
    DWORD MSD_Init(DWORD dwContext)
    {
    // adresse du port série
    PUCHAR IoPortBase;


    // valeur de retour
    DWORD dwRet;

    switch((int)dwContext)
    {
    case 1:
    IoPortBase = ((PUCHAR)0x03F8);
    dwRet = 1;
    RETAILMSG(1,(TEXT("SERIAL: MSD_Init MSD1\n")));
    break;
    case 2:
    IoPortBase = ((PUCHAR)0x02F8);
    dwRet = 2;
    RETAILMSG(1,(TEXT("SERIAL: MSD_Init MSD2\n")));
    break;
    default:
    IoPortBase = ((PUCHAR)0x03F8);
    dwRet = 1;
    RETAILMSG(1,(TEXT("SERIAL: MSD_Init MSD1 (default)\n")));
    break;
    }


    // initialisation du statut du driver
    WRITE_PORT_UCHAR(IoPortBase+comLineControl, 0x80);
    WRITE_PORT_UCHAR(IoPortBase+comDivisorLow,0x0C);
    WRITE_PORT_UCHAR(IoPortBase+comDivisorHigh, 0x00);
    WRITE_PORT_UCHAR(IoPortBase+comFIFOControl, 0x00);
    WRITE_PORT_UCHAR(IoPortBase+comLineControl, 0x03);
    WRITE_PORT_UCHAR(IoPortBase+comIntEnable, 0x00);
    WRITE_PORT_UCHAR(IoPortBase+comModemControl,0x03);

    return dwRet;
    }


    // fonction de désinitialisation du driver
    BOOL MSD_Deinit(DWORD hDeviceContext)
    {
    // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de desinitialisation
    RETAILMSG(1,(TEXT("SERIAL: MSD_Deinit\n")));

    return TRUE;
    }


    // fonction d'ouverture de flux vers le driver
    DWORD MSD_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode)
    {
    // adresse du port série
    PUCHAR IoPortBase;

    // valeur de retour
    DWORD dwRet;

    switch((int)hDeviceContext)
    {
    case 1:
    IoPortBase = ((PUCHAR)0x03F8);
    dwRet = 100;
    RETAILMSG(1,(TEXT("SERIAL: MSD_Open MSD1\n")));
    break;
    case 2:
    IoPortBase = ((PUCHAR)0x02F8);
    dwRet = 200;
    RETAILMSG(1,(TEXT("SERIAL: MSD_Open MSD2\n")));
    break;
    default:
    IoPortBase = ((PUCHAR)0x03F8);
    dwRet = 100;
    RETAILMSG(1,(TEXT("SERIAL: MSD_Open MSD1 (default)\n")));
    break;
    }


    // vidage du buffer de reception si necessaire
    while ((READ_PORT_UCHAR(IoPortBase + comLineStatus) & LS_RX_DATA_READY) == 1)
    {
    // tant qu'il y a un caractère, on le lit
    READ_PORT_UCHAR(IoPortBase + comRxBuffer);
    }

    return dwRet;
    }


    // fonction de fermeture du flux ouvert vers le driver
    BOOL MSD_Close(DWORD hOpenContext)
    {
    // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de fermeture du driver
    RETAILMSG(1,(TEXT("SERIAL: MSD_Close\n")));

    return TRUE;
    }



    // fonction d'appel aux contrôles fournis par le driver
    BOOL MSD_IOControl(DWORD hOpenContext,
    DWORD dwCode,
    PBYTE pBufIn,
    DWORD dwLenIn,
    PBYTE pBufOut,
    DWORD dwLenOut,
    PDWORD pdwActualOut)
    {
    // adresse du port série
    PUCHAR IoPortBase;

    switch((int)hOpenContext)
    {
    case 100:
    IoPortBase = ((PUCHAR)0x03F8);
    break;
    case 200:
    IoPortBase = ((PUCHAR)0x02F8);
    break;
    default:
    IoPortBase = ((PUCHAR)0x03F8);
    break;
    }

    // en fonction de ce que l'on demande au driver
    switch(dwCode)
    {
    // si l'on veut écrire un caractère
    case IOCTL_PUTC:
    // on attend tant qu'il n'y a rien à lire
    while(!(READ_PORT_UCHAR(IoPortBase + comLineStatus)& LS_THR_EMPTY));

    // on ecrit à l'adresse pBufIn ce qui vient d'être lu
    WRITE_PORT_UCHAR(IoPortBase + comTxBuffer, *pBufIn);

    break;

    // si l'on veut lire un caractère
    case IOCTL_GETC:
    // ecriture du caractère à envoyer à l'adresse pBufOut
    *pBufOut = READ_PORT_UCHAR(IoPortBase + comRxBuffer);
    *pdwActualOut = 1;
    break;

    // si l'on veut lire le statut du driver
    case IOCTL_GET_RX_STATUS:
    // écriture du statut du driver à l'adresse pBufOut
    *pBufOut=(READ_PORT_UCHAR(IoPortBase + comLineStatus) & LS_RX_DATA_READY);
    *pdwActualOut = 1;
    break;
    } //fin du switch

    return TRUE;
    }


    // fonction de traitement d'extinction
    void MSD_PowerDown(DWORD hDeviceContext)
    {

    // affichage d'un message de deboggage montrant que l'on est entré dans la fonction d'extinction
    RETAILMSG(1,(TEXT("SERIAL: MSD_PowerDown\n")));
    }

    // fonction de traitement de demarrage
    void MSD_PowerUp(DWORD hDeviceContext)
    {
    // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de demarrage
    RETAILMSG(1,(TEXT("SERIAL: MSD_PowerUp\n")));
    }

    // fonction de traitement de lecture de message
    DWORD MSD_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
    {
    // valeur de retour
    DWORD dwRet = 0;
    // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de lecture
    RETAILMSG(1,(TEXT("SERIAL: MSD_Read\n")));
    return dwRet;
    }

    // fonction de traitement d'écriture de message
    DWORD MSD_Write(DWORD hOpenContext, LPCVOID pSourceBytes, DWORD NumberOfBytes)
    {
    // valeur de retour
    DWORD dwRet = 0;
    // affichage d'un message de deboggage montrant que l'on est entré dans la fonction d'écriture
    RETAILMSG(1,(TEXT("SERIAL: MSD_Write\n")));
    return dwRet;
    }


    // fonction de position
    DWORD MSD_Seek(DWORD hOpenContext, long Amount, DWORD Type)
    {
    // valeur de retour
    DWORD dwRet = 0;
    // affichage d'un message de deboggage montrant que l'on est entré dans la fonction de recherche
    RETAILMSG(1,(TEXT("SERIAL: MSD_Seek\n")));
    return dwRet;
    }

  2. #2
    Membre actif Avatar de Nyarlathotep
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 174
    Points : 217
    Points
    217
    Par défaut
    Bon je ne connait pas trop la prog de drivers série PDA, mais j'ai quand même plusieurs remarques à faire :

    D'une part,
    D'autre part, L'erreur de NMAKE signifie (je pense) soit que la lib coredll.lib est introuvable, soit qu'il n'y a pas de règles pour la créer.

Discussions similaires

  1. Driver bluetooth Wiimote Windows Mobile
    Par 1rageux dans le forum Windows Mobile
    Réponses: 0
    Dernier message: 25/12/2009, 20h50
  2. Creme pour le PDA Windows Mobile
    Par azerty_123 dans le forum Développement Mobile en Java
    Réponses: 2
    Dernier message: 07/10/2009, 11h17
  3. Réponses: 1
    Dernier message: 01/08/2008, 16h08
  4. [Windows Mobile 5] Erreur sur Vista
    Par eraim dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 21/04/2008, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo