• Bonjour Visiteur. Bienvenue sur les nouveaux forums de MacGeneration. La peinture est encore fraiche, quelques boulons doivent être resserrés, plus d’informations demain !

Grosse question

cassandre

Nouveau membre
20 Décembre 2003
5
0
bonjour à tous !

je suis nouvelle et j'y connais rien, mais j'aimerais savoir s'il est possible avec developer tools ou autres de convertir (même via grosse bidouille) un .exe windows en appli OSX...

vous devez sûrement savoir ça ! c'est pour un driver :-(
 

maousse

Vétéran
Club MacG
20 Avril 2002
7 224
445
39
Paris
orbl.eu
Bonjour !
heu, non, ça n'est pas aussi simple. D'une part on ne peut pas modifier un programme sous sa forme compilée (en .exe) à ce point, il faut partir de l'origine du programme (le code source) et en plus, adapter ce code source pour le système voulu. En gros, pas possible comme ça


c'est pour quel genre de driver ? il y a peut-être quand même une solution, dis toujours
 

cassandre

Nouveau membre
20 Décembre 2003
5
0
c'est pour mon lecteur mp3

mon mac comprend qu'il est connecté au port USB
mais le logiciel pour l'utiliser n'est que pour PC
je l'ai acheté pensant qu'étant USB il serait comme beaucoup de périphériques reconnu comme disque externe, et que je pourrais transférer ainsi mes fichiers.
mais c'est pas le cas

sinon, que penses-tu de développer une appli qui dirait que si le périphérique untel est connecté alors qu'il ouvre une fenêtre qui le browse...

c'est possible ça ? comment ?
je viens d'installer developer tools mais j'y comprends pas grand chose :-/
 

bluheim

Membre confirmé
29 Octobre 2003
354
16
Tiens, il n'est pas reconnu par MacOS ? C'est quoi comme marque ?

Sinon, oui c'est possible à priori (tout est possible), pas formcément simple mais possible...
 

cassandre

Nouveau membre
20 Décembre 2003
5
0
mon mac le reconnait (il sait qu'il est connecté) mais ne peut pas l'exploiter...
dans "information système apple" il voit que sur le port USB il y est, mais rien sur le bureau.
testé sur PC, c'est pareil, sauf qu'il y a une application PC qui permet de l'axploiter (transférer les fichiers dessus)

voilà pourqui je pensais refaire l'appli sur mac (mais ça a l'air impossible)...

c'est un cugig (.com !) mais apparemment il y a des utilisateurs PC qui n'arrivent pas à l'utiliser vu comme le driver est mal fichu !

alors si y'a moyen de créer une appli, je suis intéressée par toute solution
 

bluheim

Membre confirmé
29 Octobre 2003
354
16
Peux-tu nous fournir la marque de ton appareil ? J'aimerais bien aller faire un tour sur le site pour voir ce qu'ils en disent...
 

bluheim

Membre confirmé
29 Octobre 2003
354
16
Bon, la bonne nouvelle c'est que le développement de pilotes USB est encouragé par Apple et que du coup, le sujet est très bien documenté sur le site de l'ADC (Apple Developer Connection).

La mauvaise c'est que ça risque d'être un poil complexe, à fortiori pour un débutant...

Ceci étant, en t'y prenant de façon ordonnée, en commençant par le tout début, tu devrais pouvoir arriver à quelquechose.

Voici les liens utiles à ta quête :

Pour tout ce qui concerne l'USB et les HID (Human Interface Device - le nom donné par Apple aux périphériques de ton mac) :

http://developer.apple.com/hardware/usb/

Tu y trouveras en particulier des documentations essentielles sur la programmetion de pilotes qui vont de la base jusqu'au truc plus complexes. Je te conseille FORTEMENT de tout lire, même si celà peut sembler rebarbatif. Tu trouveras cette doc en suivant le lien 'Device Drivers Documentation'. En voici l'adresse directe :

http://developer.apple.com/documentation/DeviceDrivers/DeviceDrivers.html

Sur cette même page tu trouveras un lien intitulé 'Mac OS X HID Manager' qui te méneras à des exemples interessant avec leurs codes sources. Rien de tel pour entrer dans le vif du sujet. Je te conseille en particulier de télécharger le 'HID Utilities Source' puis le 'HID Explorer'. Si tu décompresses ces deux archives dans le même dossier de ton disque (sur le bureau par exemple), tu pourras compiler le 'HID Explorer' dans problème avec Xcode ou PB et ainsi pouvoir constater si oui ou non le 'HID Explorer' trouve ton Cubig. Si c'est le cas, tu seras déjà sur une excellente voie pour la suite...

Voici le lien direct vers les exemples :

http://developer.apple.com/samplecode/Sample_Code/Devices_and_Hardware/HID_Manager.htm




Voilà, c'est tout ce que je peux te dire.

Ah non, encore une chose : il existe sur le net un projet pour créer des pilotes USB pour les webcams incompatibles avec MacOS. A mon avis, celà peut être pour toi une excellente source de conseils et d'exemples (les sources sont disponibles). Va donc y faire un tour, c'est ici que ça se passe :

http://webcam-osx.sourceforge.net



Et n'hésites pas à demander des conseils, de l'aide, n'importe quoi, ici même ! On se fera un plaisir de te répondre et d'essayer de trouver des solutions !

 

gosthrider

Membre confirmé
15 Décembre 2000
253
3
38
Montargis... Misère!
Alors tiens...

Tant que l'on parle de HID explorer, existe t'il une version compilée ??? Parce que j'ai pas xcode.

Sinon existe t'il une appli qui décortique de A à Z un périphérique USB? Un peu plus poussé que les infos trouver dans "à propos de ce mac"

Voilà, merci d'avance.
 

tatouille

Vétéran
1 Juin 2004
5 174
494
Stanford CA
Bloc de code:
#include    <stdio.h>
#include    <fcntl.h>
#include    <sys/errno.h>
#include    <sys/termios.h>
#include    <sys/types.h>
#include    <sys/time.h>
#include    <unistd.h>

#include    <sys/filio.h>
#include    <sys/ioctl.h>
#include    <CoreFoundation/CoreFoundation.h>

#include    <IOKit/IOKitLib.h>
#include    <IOKit/serial/IOSerialKeys.h>
#include    <IOKit/IOBSD.h>

int main (int argc, char *argv[]) {
    struct termios  termiosA;
    struct termios  termiosB;
    struct timeval  timeout;
    fd_set          rds;
    fd_set          wds;
    fd_set          exs;
    char            *devA;
    char            *devB;
    char            strA[1024];
    char            strB[1024];
    int             modemA;
    int             modemB;
    int             baudA;
    int             baudB;
    int             fdA;
    int             fdB;
    int             ret;
    int             iA = 0;
    int             iB = 0;
    
    if (argc != 3 && argc != 5) {
        printf("Usage: %s deviceA baudA ?deviceB baudB?\n", argv[0]);
        exit(1);
    }
    
    devA = argv[1];
    baudA = atoi(argv[2]);
    printf("Interface A:\n\tDevice = %s\n\tBaud   = %i\n", devA, baudA);
    
    if (argc == 5) {
       devB = argv[3];
        baudB = atoi(argv[4]);
        printf("Interface B:\n\tDevice = %s\n\tBaud   = %i\n", devB, baudB);
    }
    
    printf("\nOpening Interface A...\n");
    fdA = open(devA, O_RDWR | O_NONBLOCK);
    memset(&termiosA, 0, sizeof(struct termios));
    cfmakeraw(&termiosA);
    cfsetspeed(&termiosA, baudA);   // Set Baud
    termiosA.c_cflag |= CS8;        // 8 Data Bits
    ret = tcsetattr(fdA, TCSANOW, &termiosA);
    if (ret) {
        printf("ioctl (A) - returned %i errno %i\n", ret, errno);
        close(fdA);
        exit(1);
    }
    ioctl(fdA, TIOCMGET, &modemA);
    modemA |= TIOCM_DTR;
    ioctl(fdA, TIOCMSET, &modemA);
    
    if (argc == 5) {
        printf("\nOpening Interface B...\n");
        fdB = open(devB, O_RDWR | O_NONBLOCK);
        memset(&termiosB, 0, sizeof(struct termios));
        cfmakeraw(&termiosB);
        cfsetspeed(&termiosB, baudB);   // Set Baud
        termiosB.c_cflag |= CS8;        // 8 Data Bits
        ret = tcsetattr(fdB, TCSANOW, &termiosB);
        if (ret) {
            printf("ioctl (B) - returned %i errno %i\n", ret, errno);
            close(fdA);
            close(fdB);
            exit(1);
        }
        ioctl(fdB, TIOCMGET, &modemB);
        modemB |= TIOCM_DTR;
        ioctl(fdB, TIOCMSET, &modemB);
    }
    
    printf("Setting up the select loop...\n");
    memset(&timeout, 0, sizeof(struct timeval));
    timeout.tv_sec = 15;
    
    printf("Starting the select loop for %i & %i.\n", fdA, fdB);
    while (1) {
        char    tmpA[1024];
        char    tmpB[1024];
        
        memset(tmpA, '\0', 1024);
        memset(tmpB, '\0', 1024);
        
        FD_ZERO(&rds);
        FD_ZERO(&wds);
        FD_ZERO(&exs);
        FD_SET(fdA, &rds);
        FD_SET(fdA, &wds);
        FD_SET(fdA, &exs);
        if (argc == 5) {
            FD_SET(fdB, &rds);
            FD_SET(fdB, &wds);
            FD_SET(fdB, &exs);
        }
        
        ret = select(5, &rds, &wds, &exs, &timeout);
        
        if (FD_ISSET(fdA, &rds)) {
            if (read(fdA, tmpA, 1) < 0) {
                printf("errno = %i\n", errno);
                break;
            }
            if (tmpA[0] == '\r' || tmpA[0] == '\n') {
                if (iA > 0) {
                    strA[iA] = '\0';
                    printf("A(%i) -> %s\n", iA, strA);
                    memset(strA, '\0', 1024);
                    iA = 0;
                }
                continue;
            } else {
                strA[iA++] = tmpA[0];
                tmpA[0] = '\0';
            }
        }
        if (argc == 5 && FD_ISSET(fdB, &rds)) {
            if (read(fdB, tmpB, 1) < 0) {
                printf("errno = %i\n", errno);
                break;
            }
            if (tmpB[0] == '\r' || tmpB[0] == '\n') {
                if (iB > 0) {
                    strB[iB] = '\0';
                    printf("B(%i) -> %s\n", iB, strB);
                    memset(strB, '\0', 1024);
                    iB = 0;
                }
                continue;
            } else {
                strB[iB++] = tmpB[0];
                tmpB[0] = '\0';
            }
        }
        if (FD_ISSET(fdA, &wds)) {
            printf("Port A ready for writing.\n");
            write(fdA, "Test from port A.\r\n", 19);
        }
        if (argc == 5 && FD_ISSET(fdB, &wds)) {
            printf("Port B ready for writing.\n");
            write(fdB, "Test from port B.\r\n", 19);
        }
        if (FD_ISSET(fdA, &exs)) {
            printf("Port A had an exception.\n");
        }
        if (argc == 5 && FD_ISSET(fdB, &exs)) {
            printf("Port B had an exception.\n");
        }
    }
}
 

gosthrider

Membre confirmé
15 Décembre 2000
253
3
38
Montargis... Misère!
:nailbiting:

Eh ben ? J'ai rien compris là... :rose:
 

titim

Membre junior
30 Septembre 2004
41
0
Ca ne serait pas le code d'un driver ?
ce type est un gentil furieux
 

gosthrider

Membre confirmé
15 Décembre 2000
253
3
38
Montargis... Misère!
:rateau: Sortez l'aspirine... :rateau:

Oui donc, une idée sinon?
 

Zeusviper

Membre confirmé
3 Novembre 2004
436
30
37
Paris
gosthrider a dit:
Alors tiens...

Tant que l'on parle de HID explorer, existe t'il une version compilée ??? Parce que j'ai pas xcode.
tu devrais l'installer, ca ne coute rien et te procure des tas d'outils dont t'as meme pas idée! (et moi non plus!!) ;)
accessoirement si g tt compris HID explorer c que du c, et gcc est déja la dans tiger sans avoir besoin d'installer xcode si je ne me trompe pas.


gosthrider a dit:
Sinon existe t'il une appli qui décortique de A à Z un périphérique USB? Un peu plus poussé que les infos trouver dans "à propos de ce mac"
Voilà, merci d'avance.
oui, une fois que tu aura installé Xcode tu auras la joie de trouver "usb prober" dans les utilitaires fournis

++

EDIT : a la rigueur si tu veux vraiment te priver d'Xcode tu as ca qui devrait te suffir : http://developer.apple.com/hardwaredrivers/download/usbdebug.html