Bonjour !
J'aurai aimer savoir si il est possible de piloter le port // sous dos avec les fonctions open read write et close ?
Version imprimable
Bonjour !
J'aurai aimer savoir si il est possible de piloter le port // sous dos avec les fonctions open read write et close ?
Piloter ? Non.Citation:
Envoyé par yodaime
Sous DOS, il faut attaquer directement le bazar à coup de inp() / outp() (le nom exact dépend du compilateur).
http://www.beyondlogic.org/
oK
il n'est donc pas possible de faire un:?:Code:lp1 = _open("LPT3", O_RDWR) ;
Peut être, mais, à ma connaissance, il n'y a pas d'[_]ioctl() sous DOS... Tu ne vas pas aller loin... Mais si ton compilateur à ce qu'il faut, pourquoi pas... C'est quoi l'application sans être indiscret ?Citation:
Envoyé par yodaime
Est ce que se serai possible d'avoir une source pour voir comment on fait parce que la je voit pas du tout !
Comme on ne sait pas ce que tu veux faire, on tourne en rond.Citation:
Envoyé par yodaime
- Descritpion de l'application ?
- Plateforme ?
- Compilateur ?
Ok excuse moi c vrai que c pas très précis !
Alors je develloppe sous visual c++ 6 sous windws xp 2
voila le code que j'ai
J'aimerais savoir si il peut passer sous dos et quel serai les modifications a faireCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 #include <stdio.h> #include <io.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int main (void) { /********************DECLARATION DES VARIABLES************************************/ /*********************************************************************************/ int cmdRelais = 0 ; int lp1 ; /********************PARTIE EXECUTIVE*********************************************/ /*********************************************************************************/ printf("%s", "\t\tBienvenue dans la console de commande des relais\n\n") ; lp1 = _open("LPT3", O_RDWR) ; if(lp1 != 3) { printf("%s", "\nImpossible d'ouvrir le port !\n") ; return 0 ; } printf("%s", "Veuillez saisir le relais a commander :\n") ; printf("%s", "\t0 - Aucun relais\n") ; printf("%s", "\t1 - Relais 1\n") ; printf("%s", "\t2 - Relais 2\n") ; printf("%s", "\t4 - Relais 3\n") ; printf("%s", "\t8 - Relais 4\n") ; printf("%s", "\t16 - Relais 5\n") ; printf("%s", "\t32 - Relais 6\n") ; printf("%s", "\t64 - Relais 7\n") ; printf("%s", "\t128 - Relais 8\n") ; scanf("%i", &cmdRelais) ; _write(lp1, &cmdRelais, 1) ; close(lp1) ; return 0 ; }
Merci d'avance
Argh, j'ai pas révé, tu m'as parlé de DOS ? XP, c'est un NT. Rien à voir avec DOS. Il faut des fonctions bas niveau de l'API Win32. MSDN est ton ami.Citation:
Envoyé par yodaime
Je ne comprends rien. L'application, elle doit tourner sous DOS ou sous XP ?Citation:
J'aimerais savoir si il peut passer sous dos et quel serai les modifications a faire
Ben je developpe sous xp mais il faut qu'elle tourne sous dos
Ah... Ben ça va pas être simple. Pourquoi tu ne développes pas sous DOS ? Quelle est la plateforme DOS ?Citation:
Envoyé par yodaime
Deja est-ce que tu ne confonds pas DOS et l'invite de commande???
Non je suis sur dos 6 mais le truc c'est que mon système sous dos est un système embarqué donc pas question de developper dessus.Citation:
Envoyé par Skyrunner
Il va falloir te tirer les vers du nez un par un ? Tu ne peux pas expliquer la situation dès le départ qu'on sache quoi répondre ? Tu ne veux pas qu'on t'aide ou quoi ?Citation:
Envoyé par yodaime
Oublie VC++6 pour développer du code 16-bit.
Il faut du Borland C 2.x ou 3.x, ou du vieux Microsoft (C 5.x) ou peut être du Watcom...
Et c'est là qu'on va apprendre que tu as un DPMI et que tu travailles en 32-bit, c'est bien ça ? Si c'est le cas, voir DJGPP. Mais pour les accès aux I/O, j'ai un doute...
Euh a la base ma question c'etait juste de savoir si on pouvait utiliser open et tou le toutim avec le port parallèle en dos !
Ensuite on m'a dit d'utiliser outportb ou inportb pour piloter le port parrallèle. Je veut juste savoir comment on fait, si quelqu'un a des exemples a me fournir c tout.
Je voit pas trop en quoi je m'exprime mal !
Heink ? Port série ? Je cite :Citation:
Envoyé par yodaime
Alors comme ça, // signifie série ? On me cache tout, on ne me dit rien ?Citation:
J'aurai aimer savoir si il est possible de piloter le port // sous dos avec les fonctions open read write et close ?
Dois-je vraiment répondre à ça ?Citation:
Je voit pas trop en quoi je m'exprime mal !
Ecoute si tu veut pa m'aider tu m'aide pas y pis c tout !
Je demande juste deux trois truc et toi tu en fait toute une montagne. Je te remercie de te soucier de mon problème mais pour l'instant a par des reproches g pas eu trop de solution a mon problème
Bon pour être clair tu travaille sur un port // (parallèle) ou un port série, car dans le sujet du topic tu parles du port parallèle et la tu te met à parler du port série.
Alors c'est lequel des 2???
comme l'indique le sujet du topic port parallèle
Ok. Je repose la question, quelles manips veux-tu faire sur le port // ?Citation:
Envoyé par yodaime
- Ecriture des données ?
- Lecture des données ?
- Ecriture des contrôles ?
- Lecture des contrôles ?
D'autre part, tu as vraiment un lpt3 sur ta plateforme DOS (c'est assez rare?...)
Enfin, le problème du compilateur sur XP devant générer du code 16-bit est-il reglé ?
Je veux bien t'aider, mais je te pose un tas de questions précises pour essayer d'avancer auxquelles tu ne réponds pas. Que dois-je faire ?Citation:
Envoyé par yodaime
je veut juste ecrire des données
Le lpt3 vient du fait que c'est une carte additionelle. Les profs on mit sa pour eviter que l'on grille la carte mère si on "joue" avec le lpt1 ( l'embarqué etant pour l'instant un simple pc sous dos avant d'avoir qqch de plus petit )
Le problème du compilateur est resolu se sera borland c++ 5 j'ai laisser tomber vc++ du fait que effectivement il ne permet pas de réaliser des aplications 16 bits
Donc, tu n'utilises que les 8 bits de données du port //, on est bien d'accord ?Citation:
Envoyé par yodaime
Ah, on va pouvoir avancer un peu alors.Citation:
Le lpt3 vient du fait que c'est une carte additionelle. Les profs on mit sa pour eviter que l'on grille la carte mère si on "joue" avec le lpt1 ( l'embarqué etant pour l'instant un simple pc sous dos avant d'avoir qqch de plus petit )
Le problème du compilateur est resolu se sera borland c++ 5 j'ai laisser tomber vc++ du fait que effectivement il ne permet pas de réaliser des aplications 16 bits
Tu sais comment vérifier si la carte a été prise en compte par le DOS ?
Sinon, pour écrire dans LPT3, c'est simple :
NON TESTE.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <stdio.h> #define fport "LPT3" int main (void) { FILE *fp = fopen (fport, "rb"); if (fp != NULL) { /* envoyer un code 01010101 */ fputc (0x55, fp); fflush (fp); /* ... */ fclose (fp), fp = NULL; } else { perror (fport); } return 0; }
Bon alors, ça s'allume ?
Merci pour le code !
J'ai tester mais sa ne marche pas ! Tout se compile nickel mais cela n'a aucun résultat.
En fait le truc c que je code sur borland c++ 5 je peut donc creer une apli 16 bit . Mais puis je la tester sous Xp ? bien que l'apli finale devra tourner sur dos sa m'arrangerai de pouvoir la tester directement sous XP.
Aurai tu un exemple avec outporb ? Merci d'avance.
Tu as testé sur la machine DOS ? Aucun résultat, c'est plutôt bon signe. Ca voudrait dire que LPT3 est reconnu...Citation:
Envoyé par yodaime
Les données que j'ai mis dans le port //, cétait au pif. Je ne saiis pas ce que ton montage éléctronique attend...
Tu as un LPT3 sur XP ? De toutes façon, même si tu utilise LPT1, il ne faut pas s'attendre à du spectaculaire. Si tu as une imprimante, tu peux essayer d'envoyer de l'imprimable, suivit de '\n' (imprimate à la ligne) ou '\f' (imprimante à la feuille).Citation:
En fait le truc c que je code sur borland c++ 5 je peut donc creer une apli 16 bit .
Mais puis je la tester sous Xp ?
C'est pour ça que j'essaye la voie 'standard'...Citation:
bien que l'apli finale devra tourner sur dos sa m'arrangerai de pouvoir la tester directement sous XP.
Marchera pas en XP. Avant d'en arriver là, on va épuiser les voies standards...Citation:
Aurais tu un exemple avec outporb ?
bon finalement j'ai reussi sous dos avec les commande suivante :
Merci a tous pour votre aide et desolé pour mes imprécision successive !Code:
1
2
3 outportb( 0x37A, 0x00) ; outportb( 0x378, valeur_a_ecrire ) ;
Huh ! LPT3 en 0x378 ? T'es sûr ?Citation:
Envoyé par yodaime