Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » BASIC » ouverture du port série en fonction du cablage PC->Machine

diemaker form
ProgBoarder
Citer Windows XP Firefox 2 - Posté le 26/05/2008 à 15:03
Bonjour à tous,

La fonction "shell" permet d'accéder au commandes dos temporairement, mais il y a un problème avec le port série :

SHELL "mode com2 baud=9600 parity=n data=8 stop=1"
SHELL "copy fichier.txt COM2"


le port série se comporte exactement comme si je voulais copier un fichier sur le lecteur disquette sans avoir inséré de disquette en me mettant le message :

Write fault error writing device com2
abord, retry, ignore,fail ?


Je pense que les paramètres supplémentaires possibles dans "mode com2" :
to=on ou off (temporisation)
xon=on ou off (XON/XOFF)
octs=on ou off (protocole CTS)
osdr=on ou off (protocole DSR)
isdr=on ou off (sensibilité DSR)
dtr=on ou off (circuit DTR)
rts=on ou off ou hs ou tg (circuit RTS)
doivent avoir un lien avec le cablage entre le PC et la Machine
Si quelqu'un a une idée de paramètre à me donner suivant le cable :

côté PC (flèche) 9 broches
N°2 blanc - RD (entrée)
N°3 Marron - TD (sortie)
N°5 jaune - SG (masse)

côté machine (flèche) 25 broches
N°2 blanc - TD (sortie)
N°3 Marron - RD (entrée)
N°7 jaune - SG (masse)
N°4 et N°5 reliés - RTS+CTS
N°6 et N°8 reliés - DSR+CD

D'avance merci,
Amicalement,
DMF

Edité par diemaker form ( 26/05/2008 15:24:43 )
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 26/05/2008 à 18:44
Re bonjour,
je viens de m'apercevoir qu'avec la fonction "SHELL" les commandes msdos ne fonctionnent pas toujours soit :
si je met : SHELL "mode com2 ......." pas de problème
si je met : SHELL "copy fichier.txt com2" erreur Abord, Retry, ...
si je fait un batch MonCom2.bat avec :
"mode com2 ....." ok
"copy fichier.txt com2" ok
Mon soucis c'est que je fais mon programme en QB45 et je ne veux pas ressortir
de mon programme pour lancer un batch.
Même la commande : SHELL "MonCom2.bat" met la même erreur ! (question)
Pourquoi ??
(désapprouve)
amicalement,
DMF.
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 26/05/2008 à 19:09
hmm, peut-etre est-ce du à un problème de... mémoire !
Car QBasic à tendance à occuper toute la mémoire disponible, ne laissant quasiment rien de libre.

Normalement, pas de problème, puisque QBasic est censé être le seul programme à tourner (haaa, l'époque du bon vieux DOS !). Mais lorsqu'un programme lancé via un shell depuis Qbasic demande de la mémoire, il l'a demande au DOS, pas à QBasic. Donc, le problème peut venir de là...

Une solution, à tester, est d'utiliser la fonction "SETMEM" pour diminuer la quantité de mémoire utiliser par QBasic. Je ne peux que chaudement te recommander la lecture de l'aide de QBasic,même si, de mémoire, pour désallouer de la mémoire, il faut passer une valeur négative en paramètre...
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 27/05/2008 à 12:09
merci pour tes infos Francesco,

Mais en faisant des recherches :
les fenètres dos sous windows utilisent "CMD.EXE"
alors qu'avec "SHELL" QB45 utilise "COMMAND.COM"
l'accès au port série est accessible avec CMD.EXE
et PAS avec COMMAND.COM
Pourquoi ??
Amicalement,
DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 27/05/2008 à 13:03
Je vois deux pistes envisageable :
- il me semble qu'il existe une variable pour désigner le SHELL à utiliser sous DOS. De mémoire, elle s'appelle logiquement... SHELL ! Je sais qu'elle était utilisé lors du boot du dos afin de savoir quel interpréteur de commande utiliser. Mais je ne sais pas si elle est disponible une fois que l'interpréteur est ouvert. Quoiqu'il en soit, mon idée est de vérifier son existance, et si c'est le cas, modifier la valeur de la variable sous QBasic avant de lancer ta commande avec la comande SHELL de Qbasic.

- 2ème possibilité : dans ton code QBasic, faire un truc du genre :

SHELL "cmd.exe monbatch.bat"



Je ne sais pas ce que ca peut donner. Il faut essayer pour voir, je pense...
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 28/05/2008 à 15:47
Bonjour,

Ton astuce ne réagit pas, ça ne redonne pas la main au programme qb45
ça s'arrête au prompt c:\>
même en mettant "exit" dans mon batch ou dans mon prog
Dommage,
Merci pour l'astuce,
Amicalement,
DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 28/05/2008 à 19:06
Si j'ai bien compris, ca marche (le batch est lancé correctement), mais le problème est que ce qui prend la main ensuite, c'est le shell, et non qb. C'es ça ?

Si tel est le cas, essai un truc genre :


cmd.exe \C prog.exe



Si cela ne marche toujours pas, et si au niveau du prompt tu tape exit et que ton programme QBasic continue normalement, essai la commande suivante :


cmd.exe \K prog.exe&&exit

Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 02/06/2008 à 13:51
Bonjour,
Pas de chance, toujours le même problème avec les 2 commandes.
Merci pour les recherches,
Amicalement,
DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Fred
ProgBoarder
RemonterCiter Windows 2000 Msie 6 - Posté le 03/06/2008 à 10:05
Pourquoi tu ne transfert pas le fichier par l'intermédiaire
de QB et non du dos avec ta commander copy ?
Purée faut que je change d'avatar !
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 03/06/2008 à 12:04
Bonjour,
Avec qb4.5, je ne peux pas accéder au port série, même avec la commande
COM(2) ON
OPEN "com2........" FOR RANDOM AS #1
PRINT #1, variable$ + CHR$(10)
COM(2) OFF
je n'est pas de message d'erreur mais je n'ai aucune activité sur mon port com.
je regarde l'activité avec "portmon.exe"
Si je passe par un batch (cité plus haut), j'ai bien de l'activité sur mon com.
Le programme que je créé sur qb4.5 doit envoyer des valeurs sur ma CN et se mettre en attente de l'accusé réception de la machine pour envoyer les blocs suivants.
Je ne souhaite pas passer par dos, mais par qb4.5 uniquement, mais en désespoir de cause, ....
Si j'envoi avec hyperterminal, je n'ai pas de problème.
Je pense que qb4.5 ne gère pas les ports séries sans un msdos !?
Pas évident d'être clair !?
D'avance merci,
Amicalement,
DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 03/06/2008 à 14:10
Un dernier truc, relevant vraiement de la bidouille :

* renommer ton COMMAND.COM en COMMAND.COM_old
* copier CMD.EXE en COMMAND.COM

Ensuite, lance Qbasic et test

Si ca ne marche toujours pas, fait machine arrière, en supprimant le COMMAND.COM nouvellement créé et en renommant COMMAND.COM_old en COMMAND.COM

Ces fichiers (COMMAND.COM et CMD.EXE doivent être dans le dossier système de Windows (C:\WINDOWS))
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,049 s - Crédits - Stats
1 connecté