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

Turbo Pascal Discussion :

[TP] Port parallèle [Archives]


Sujet :

Turbo Pascal

  1. #1
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut [TP] Port parallèle
    Voila j'utilise DEV-PAS et je veut programmer mon port paralelle donc je fait ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    program port;
     
    begin
      Port[$378]:=$01;
    end.
    Et j'ai l'erreur suivante teste.pas(4,3) Error: Identifier not found PORT
    Alors si vous pouvez m'aider merci d'avance.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Dev-Pascal te permet de faire des programmes en mode protégé 32 bits. Or sous ce mode, il est hors de question d'aller titiller les ports de la sorte. Ils sont bien entendu protégés, et tu risques de provoquer des erreurs de protection en pratiquant de la sorte.
    Néanmoins, si tu tiens à t'amuser, tu peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    asm
      mov ax, Valeur
      mov dx, Port
      out dx, ax
    end;
    Si jamais Dev-Pascal utilise la syntaxe AT&T pour l'assembleur, alors ça devrait ressembler à quelque chose de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    asm
      movw Valeur, %ax
      movw Port, %dx
      outw %ax, %dx
    end;
    A tes risques et périls bien sûr...

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  3. #3
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    ok merci mais alors pourquoi quand je fait la meme chose avec turbo pascal 7 ca ne marche pas quand meme enfin la valeur du port ne change pas!! pourquoi?
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Ca ne marche pas, ou ça retourne une erreur ?

    Fais attention lorsque tu spécifie "program port;", le compilateur peut mal interpréter les identifiant, et il peut y avoir conflit.

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Tu es au courant que le port 378h correspond à LPT2, autrement dit le second port parallèle, disparu de tous les PC standards depuis des lustres ?
    Pour LPT1, c'est sur le 278h qu'il faut écrire.

    Et il est possible que Windows XP pose problème, si jamais tu utilises cet OS.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben sur le net il est marque partout qu'il faut utiliser le port 378 et meme avec 278 ca ne fait rien!! Et oui j'utilise xp. En faite je met une valeur sur le port et je regarde avec une led si cette valeur est bien 0 ou pas. Sauf que sur les bus de données D0 a D7 j'ai toujour $FF. Cbien comme ca qu'on attribut?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    program port; 
     
    begin 
      Port[$378]:=$01; 
    end.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  7. #7
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Citation Envoyé par Hdd34
    Tu es au courant que le port 378h correspond à LPT2, autrement dit le second port parallèle, disparu de tous les PC standards depuis des lustres ?
    Pour LPT1, c'est sur le 278h qu'il faut écrire.
    Si on suppose que les constructeurs de cartes mère ont bien fait leur boulot, et qu'il se sont soucier le compatibilité ascendante, on peut penser qu'ils ont affecté le même emploi au port 278h et 378h, lorsque LPT2 a disparu... (Voilà c'était juste ma réflexion en passant )

    Citation Envoyé par cerede2000
    Et oui j'utilise xp.
    Boote sous DOS (le vrai, l'unique) et reteste ton programme compilé

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  8. #8
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Je pense très fortement que Windows XP bloque l'accès aux ports, car ça représente une faille de stabilité importante. De fait, avec un programme Windows, pour accéder comme on le souhaite au port parallèle, il faut passer par un driver.
    Tu peux toujours passer une sous-couche Windows pour accéder au port parallèle, mais là, tu te lances dans un domaine assez ardu. SI tu veux, j'ai créé une unité pour accéder au presse-papier Windows depuis une fenêtre Dos, qui se sert justement de cette sous-couche (les VDD, Virtual Dos Devices). Mais si jamais tu débutes, mieux vaut passer sous Dos et oublier cette éventualité.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Je confirme, LPT1 = 378h. Tu peux éventuellement te servir de mes programmes (sources en Delphi) pour visualiser l'accès direct au port parrallèle avec le pilote ZLPortIO... Extrait les fichiers du programme dans le dossier de ton choix. N'éxécute pas les programmes directement à partir de l'archive... On ne peut aussi éxécuter qu'une seule session du pilote à la fois.

    Scanner les sorties du port parrallèle...
    http://sub0.developpez.com/delphi/LPT_1b.zip

    Scanner les entrées du port parrallèle...
    http://sub0.developpez.com/delphi/LPT_1.zip

    Il doit-être possible de traduire le code de l'unité ZLPortIO pour Dev-Pascal...
    http://www.specosoft.com/en/zlportio.html
    à+
    De retour parmis vous après 10 ans!!

  10. #10
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben meme avec ces logs la la valeur du port ne change pas!!
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  11. #11
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Pas normal!
    Citation Envoyé par Sub0
    Extrait les fichiers du programme dans le dossier de ton choix
    Tous les fichiers, en particulier l'éxé et le .sys

    Vérifie dans le gestionnaire de périphériques que ton port // est bien dispo et ok.
    Sinon, vérifie dans le Bios qu'il est bien en mode SPP ou EPP sur le port $378h...
    Vérifie qu'il fonctionne avec une imprimante ou un autre périphérique...
    Sinon, j'espère pour toi que tu n'as pas bidouillé le port car il est très fragile et crame assez vite si on fait de mauvais branchements!
    http://www.leguide.com/cartes_port_parallele.htm
    De retour parmis vous après 10 ans!!

  12. #12
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    avec le log de specocoft ca marche!! Mais c'est quand je prog en turbo pascal que ca marche pas!!! Meme avec turbo pacal 7!! pourquoi?
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  13. #13
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Parceque ce sont des compilateurs 16bits, et que le pilote nécessaire est en 32bits (système d'exploitation multi-taches)... Malgré tout, je pense qu'il est possible de faire du code 32bits avec ces compilateurs en utilisant une unité spéciale. Sinon, tu peux éventuellement développer une DLL 32bits (avec Delphi) compatible avec un compilateur 16bits... Il ya des topics à ce sujet dans le forum. Quoiqu'il en soit, Delphi est beaucoups mieux que ces vieux compilateurs. Il reste possible de réaliser des programmes Dos avec Delphi (programmes console). Si tu as la possibilité de passer à Delphi, fait-le! Le 64bits est déjà là!

    Si ça t'intérresse, j'ai réalisé un programme Delphi dont la fonction unique est l'accès direct aux ports. Via les messages Windows, on peut l'utiliser pour accéder aux ports du pc avec n'importe quel programme. Si tu veux utiliser cette méthode, je pourrais adapter ce programme à tes besoins...

    http://www.developpez.net/forums/vie...481798#1481798

    à+
    De retour parmis vous après 10 ans!!

  14. #14
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben je comprend parcque une foit vous me dites qu'il faut utiliser un compilateur 16 et une autre foit un 32. Car j'ai essayer avec DEV-PASCAL et il ne reconnait pas port!! Et pour le delphi ben non je peut pas car en faite c'est pour un pojet au lycée et on programmen en pascal!! Alors sinon quel compilateur utiliser merci!
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  15. #15
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    On t'a jamais dit qu'il fallait utiliser un compilateur 16 bits... Personnellement, je t'ai ditqu'avec un compilateur 32 bits, tu ne pouvais pas te permettre d'attaquer le port parallèle de manière sauvage comme tu le fait.

    A partir du moment où tu es sous Dos de toute manière, Windows XP va te causer de nombreux soucis : aucun accès matériel direct, et aucune possibilité d'accéder de manière simple aux API Windows.
    Par contre, avec Dev-Pascal, tu dois pouvoir créer une application Console, donc le même principe qu'une application Dos, mais cette fois avec des accès aux API de Windows, et donc une manière simplifiée d'accéder au port parallèle, en utilisant par exemple la librairie proposée par Sub0.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  16. #16
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    ouai merci mais je sait pas faire d'appli console? ya un tuto quelque par? Merci
    Et aussi quand je veut utiliser la lib zlportio j'ai un probleme il ne trouve pas la lib winsvc???? Alors que c'est censer etre un lib windows!!
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  17. #17
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Un programme console est une application qui s'ouvre dans une fenêtre Dos sous Windows. Soit tu programmes en Dos pur (avec Windows95/98 par exemple) et dans ce cas, tu peux travailler directement en 16bits, soit tu travailles avec WinXP/2000/NT et dans ce cas, tu seras obligé d'accéder aux ports avec un pilote. Quoiqu'il en soit, il n'existe pas de Dos "pur" avec WinXP, donc ton appli sera forcément un programme console (Dos dans une fenêtre Windows). Pour voir ce qu'est une console, il suffit de faire menu éxécuter, taper "command" et valider. Tu as alors une fenêtre Dos qui s'affiche sur l'écran. Il sagit d'une console. Un programme console est un programme qui s'éxécute dans ce genre de fenêtre tout simplement.


    Si tu dois travailler avec un compilateur 16bits, et avec un système d'exploitation 32bits, tu n'auras pas d'autres choix que d'utiliser un pilote d'accès direct aux ports. Ce que je te propose dans ce cas, c'est d'utiliser un programme externe, une interface... C'est ce que réalise le programme Init_ZL.exe. Il permet l'accés direct aux ports via les messages Windows...

    Télécharge cette démo, elle contient aussi le code source. Le programme Init_ZL est déjà compilé, tu n'as donc pas besoin des sources, il suffira simplement de l'éxécuter. Evidemment, il faudra probablement l'adapter un peu mieux à ton projet parce que là, il est à l'état de démo... Nous verrons ça par la suite... Ce qui est plus important pour l'instant, est de pouvoir communiquer avec Init_ZL en utilisant ton programme 16bits. Ouvre le fichier Unit1.pas du dossier Test. Tu trouveras dans ce code toutes les informations nécessaires pour communiquer avec mon pilote. Il sagit d'envoyer et de recevoir des messages... Recherche donc comment envoyer et recevoir un message Windows avec Dev-Pascal (les unités nécessaires sont peut-être bien différentes de celles de Delphi, je ne sais pas).


    En résumé, si tu es obligé de travailler avec un système d'exploitation 32bits, tu dois trouver comment envoyer et recevoir un message Windows avec ton compilateur. Ainsi tu pourras utiliser mon interface d'accès aux ports.

    à+
    De retour parmis vous après 10 ans!!

  18. #18
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Les fonctions PostMessage et GetMessage se trouvent dans l'unité WinProcs normalement...

    As-tu accès à cette unité avec ton compilateur ?
    De retour parmis vous après 10 ans!!

  19. #19
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben j'ai tester deja ton programme Test.exe et quand on fait write pas de probleme mais quand on fait read il plante!!
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  20. #20
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Si j'ai lut et je comprend je vai voir avec le fichier unit1.pas sinon une question il utilise le service d'affichage des message c'est ca?? Car ce service je le descative moi pour pas me taper les messages du net tou pourri!!
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/06/2010, 08h08
  2. port serie 232
    Par amrou dans le forum Développement
    Réponses: 1
    Dernier message: 07/01/2010, 23h40
  3. Port RS-232, activer en lecture - écriture
    Par snoopy69 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 09/07/2008, 08h51
  4. Réponses: 6
    Dernier message: 05/06/2008, 23h04
  5. Sortie TX à 1 ou 0 sur port RS-232
    Par tibo7 dans le forum C++
    Réponses: 0
    Dernier message: 02/06/2008, 14h39

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