Gambas France BETA


Pas de compte ? Incription

Port de jeu DB15 et codes

Ce sujet est résolu.

1
AuteurMessages
PapyBasic#1 Posté le 14/10/2010 à 12:51:00
"Parfois l'obstination est une voie !"Bonjour à toutes et à tous,
pour réaliser un sismographe à quatre voies, je souhaite utiliser comme interface d'entrée le port de jeu, la prise DB15 qui assure l'échange MIDI et la gestion des manettes de jeu sur la carte son. ( je maitrise la situation en VB mais je souhaite réaliser un projet sous GAMBAS.
Sous VB il faut une DLL avec une déclaration spécifique.
Sous GAMBAS 2, pour faire un graphique, il faut cocher une case spécifique à la création qui permet d'accéder aux fonctions graphiques. ( il me semble qu'il est question de GB Char.......:shock:

Pour accéder au port de jeu et aux entrées potentiométriques, comment faisons nous ?

D'avance merci, Papy :santa:
manu#2 Posté le 14/10/2010 à 19:49:00
Avec Gambas ca roule !Le port parallèle et série, il y a de l'info, mais celui dont tu parles je suis pas sure :

Port parallèle : http://gambasdoc.org/help/howto/parport?fr

Port serie : http://gambasdoc.org/help/comp/gb.net/serialport?fr


Et puis on a un spécialiste ici, c'est Lapenduled'argent. Il à fait une application de commande de moteur pas à pas en utilisant le port parallèle. Il fait reference au port DB25 en utilisant un connecteur speciale... (?)

Tu trouvera une partie de son travail ici sur le site Gambas basic : http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=403. Tu pourra également télécharger son application en gambas2. Mais je sais que pierre, (lapenduled'argent) à bien avancé depuis...
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
spheris#3 Posté le 14/10/2010 à 22:25:00
PapyBasic,
Ce port,s'il est reconnu par linux, fonctionne comme un port serie (exemple:/dev/tty0 et sous windaube :COM1) que tu pourras interfacer au même titre que l'exemple de lapenduledargen.
La commande lsmod dans un terminal te renverra la liste de tes peripheriques. regarde pour le port joystick ou midi(c'est la même chose)
;) ;)
lapenduledargent#4 Posté le 15/10/2010 à 20:36:00
Bonsoir papybasic,

Je viens de lire ton message.
En linux, tout est fichier, tu dois donc pouvoir écrire dans le fichier qui gère ton port.
Avec le port // j'ai pas de problème mais je suis en root.

Comme les amis t'ont indiqué, télécharge mon exemple.

Demande si tu as des Pb.

Bon weekend à tous.

Pierre
PapyBasic#5 Posté le 18/10/2010 à 20:11:00
"Parfois l'obstination est une voie !"Bonsoir à tous,
je ne comprend pas tout ! Mais je persévère! Ou plutôt je suis d'un naturel têtu !
Bref je ne comprend toujours pas comment "récupérer" les variables des axes du joystick !
En effet, il se trouve que le "manche de jeu" est équipé de 4 potentiomètres.
Il est possible par un simple subterfuge d'électronicien de contourner l'usage des ces quatre entrées et de les utiliser en mesure.
Fait sous logiciel à Big Bill de la grande fenêtre sa fonctionne !
Si sa fonctionne dans la fenêtre sa doit fonctionner sur la banquise.
Je cherche ce qui peut avoir un lien avec mon problème.
Mais sous Linux j'ai quelques difficultés!
Voici donc un ensemble de liens qui me semble plus ou moins prometteur . . . .
http://doc.ubuntu-fr.org/joystick
http://www.trustonme.net/didactels/160.html
http://www.jeuxlinux.fr/a24-Liste_des_ports_TcpIp.html
http://www.jeuxlinux.fr/forum/viewtopic.php?id=449 . . . .
http://doc.ubuntu-fr.org/joystick
http://sourceforge.net/projects/dink/files/
http://www.ibiblio.org/pub/linux/docs/howto/translations/fr/html-1page/IO-Port-Programming.html#N10418
http://library.gnome.org/devel/glib/stable/glib-IO-Channels.html
http://forum.ubuntu-fr.org/viewtopic.php?id=27786
http://www.xml.com/ldd/chapter/book/
http://www.sekiriki.jp/
http://www.digitalspirit.org/wiki/index.php/CarbooonFMS
http://uscaero77.free.fr/fms/#cable
source code (joy2key-1.6.1.tar.gz)
source code (joy2key-1.2.tar.gz)
http://interreality.org/~tetron/technology/joy2key/joy2keyconfig.html
http://www.yellis.net/docs/linux/HOWTO/Hardware-HOWTO-23.php

Je vais avoir besoin de temps pour lire et reprendre calmement chaque lien, mais si sa peu éviter des heures de recherches à d'autres, alors voilà !
Commentaires de tous poils, grincheux et autres toujours bienvenues !
Cordialement Papy :santa:
PapyBasic#6 Posté le 11/11/2010 à 21:45:00
"Parfois l'obstination est une voie !"Bonsoir Pierre

Je regarde attentivement ton utilisation de SEEK.
J'ai pas tout compris, mais je flaire une solution possible grâce à ta source.
Que veut dire travailler en root, je trouve régulièrement cette expression depuis que je tente le LINUX.
Apparemment ton programme bloque car il ne trouve pas paquet ? Fichier ? Procédure ? Noyau ? qui se nomme DEVPORT

Ton programme lit l'état de chaque entrée ou il peut aussi modifier les sorties ( D0 à D7 ) ?
Car si oui, doit je comprendre que la fonction SEEK permet via le bidule devport de lire mais aussi d'écrire sur une adresse précise ?
Qui peut, par ailleurs, être extrêmement dangereux si l'on manipule des adresses au hasard !
Mais si oui, alors établir une petite routine pour travailler avec les entrées analogiques du port de jeu me semble enfin à porté de clavier. :)
D'avance merci.
Cordialement Papy :santa:
lapenduledargent#7 Posté le 12/11/2010 à 07:29:00
Bonjour Papy,

Je vais essayer de t'expliquer, en Linux, on dit que tout est des fichiers, je veux dire les commandes sont écrites dans des fichiers texte.
Devport, c'est un fichier texte qui gère le port parallèle.

Sous linux, tu as des utilisateurs avec des droits différents, le root c'est le super utilisateur et qui peux écrire dans le fichier Devport.
Si tu te connecte habituellement tu ne pourras pas exécuter le programme, linux te refusera l'écriture dans ton fichier.
Tu dois soit te connecter au démarrage de ta machine en root ou lancer le programme en root.
Sous Ubuntu, je fais la commande suivante dans un terminal : GKSUDOnomduprogramme

J'ai fait une petite carte test avec des Leds, tu devais en faire une également ainsi tu peux visualisé l'état du port //
Essaie principalement mon programme "moniteur d'état du port //" et pas celui de pilotage.

Ton, programme, tu voulais le faire sur le port jeu ou parallèle ? Je pense que le principe est le même.

A+

Pierre
PapyBasic#8 Posté le 12/11/2010 à 10:12:00
"Parfois l'obstination est une voie !"Salut Pierre
j'ai déjà un testeur de port parallèle
Si tu vas à :
http://fusee.pagesperso-orange.fr/les_photos_des_fusees_a_eau.htm
tu remarqueras sur une des photo, à l’arrière du portable, le testeur de port.
J'en avais besoin pour la mise au point sous Visual Basic.
Mais la grande fenêtre n'a de cesse que de modifier ces versions d'éditeurs, et il faut sans cesse courir après la bonne dll.
Pour faire trivial sa me gonfle !
Le gros avantage c'est l'aspect gratuit dans le partage qui me satisfait.
Il me semble d'abord que tu autorises l’accès à la fonction devport par la ligne :
1
PUBLIC devport AS STRING = "/dev/port"



Tu me dis que dev/port est fait pour le port imprimante LPT.
Mais dans ton exemple tu sembles en utilisant SEEK passer par une adresse définie.
1
hPort = OPEN devport FOR READ WRITE SEEK #hPort, &H378 WRITE #hPort, 0 CLOSE #hPort

Sans être un spécialiste je lis:

hport prend la valeur de :
ouvrir devport pour lire écrire
rem là je ne sais pas exactement ceux que veut dire SEEK, mais je propose quand même uns solution!
Vas à l'adresse &h378
Écris à l'adresse appelée la valeur 0
ferme hport

Il doit être possible de lire et d'écrire sur une ligne quand elle est censée assurer ces deux rôles,inexact et faux pour certaines lignes du port centronic, pour l'avoir travailler en d'autres basic, certaines lignes ne doivent en aucun cas être forcées à 1 ( +5 v) crâmage garantie des micros pistes de la carte mère ).
Si dans l'avenir j'arrive à produire un programme "pour la terre entière" il faudrait donc que chaque utilisateur bidouille un truc pour utilser dev port ou existe t'il un moyen plus élégant de l'utiliser sans être le super utilisateur (root).

Je vais essayer d'écrire une routine en modifiant la tienne.
Je vais commencer à m'attaquer aux quatre contacts.
Dont les états logiques ne peuvent prendre que deux états.
Ensuite si les résultats son probants, je verrais pour extraire la variable liée à la position d'un potentiomètre.
Si j'y arrive pour une entrée, j'ya arriverai pour les quatre.

Merci de tous vos conseils.
Cordialement Papy

:santa:
lapenduledargent#9 Posté le 12/11/2010 à 10:50:00
Bonjour Papy,

Je te réponds rapidement cars j'ai des horloges à terminer...

Je pense que tu es dans le bon mais ça date de quelques mois. J'avais tester ces programmes sur différentes machines et la commande fonctionnait.

L'instruction "SEEK" m'a été donnée directement par Benoit ...

Pour le mode root, tu peux faire simplement un lanceur mais il y a une autre méthode, plus propre qui m'avait été donnée en modifiant les groupes mais je n'ai pas été plus loin.

Je te conseils de télécharger mon "moniteur d'état du port //" et de le lancer avec ta carte test en root.
Tu découvriras ainsi facilement les possibilités du port //.

Attention, certaines broches sont en entrée, sortie, ou les deux. Donc si tu veux écrire, lire, tu dois faire un choix physique de la bonne broche.

A bientôt

Pierre
PapyBasic#10 Posté le 22/6/2013 à 08:47:22
"Parfois l'obstination est une voie !"Bonjour à toutes et à tous,
Et bien le vieux barbu n'est pas mort ! Pire encore il s'accroche l'animal !
Alors, pour lire l'entrée analogique sur le port 15 points ( ocre jaune) il faut :
GAMBAS 2 et probablement une version plus évoluée !
Un joystick analogique ( pas celui avec la prise USB, l'autre, le vieux qui a une prise avec 15 picots qui dépassent!).
Un pingouin dans l'ordinateur, le mien porte le nom de "ubuntu 10.04 LTS Lynx Lucid"
Avoir télécharger les paquet JTEST : http://doc.ubuntu-fr.org/joystick
Et un bon cpain qui connais bien le monde de Linux, un grand merci à Laurent "Le Tigre".
Branchez le Joystick, mettre sous tension votre ordinateur en mode pingouin. ( Pas la grande fenetre obscure ! ....)
Lancez JTEST via Gambas 2
déclarer deux ou quatres variables avec DIM
DIM aaa AS Integer
DIM bbb AS Integer
Pour l'instant j'arrive à récupérer les valeurs des deux axes
aaa = Abs((i AND 1) > 0) + pos
bbb = Abs((i AND 1) > 2) + pos
A parir de ces lignes je rentre dans les suppositions car les essais ne sont pas faits !
pour les deux autres axe, je suppose qu'il faut modifier : primo les variables de récupérations exemple ccc & dddd et les déclarer si non le bigniou va planter!
Et ensuite modifier à (toujours une supposition )
ccc = Abs((i AND 3) > 0) + pos
ddd = Abs((i AND 4) > 0) + pos
Mais voilà, c'est un bon début et la chose évolue !
J'ai pas tout compris, mais pour que le programme fonctionne il faut absolument avoir une carte audio reconnue avec son port 15 points et le js0:
/dev/input/js0

Pour finir, il est donc possible de récupérer la position du joystick analogique !
Merci à Sphéris, Manu, le penduledargent, à Pablo et tous les autres !!!! Un GRAND GRAND MERCI !
1