ebal609
Messages postés2Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention 5 octobre 2007
-
4 oct. 2007 à 20:29
ebal609
Messages postés2Date d'inscriptionjeudi 4 octobre 2007StatutMembreDernière intervention 5 octobre 2007
-
5 oct. 2007 à 18:11
VOIC UN BOUT DE PROG EN QB45 QUE JE SOUHAITE INTREGRER A UN PROG EN VB6
LE BUT: communiquer par requètes à un API TSX serie 7
On COM(port%) GoSub trafic
Open "COM" + port$ + ":300,n,8,1,ds,cs,cd" For Random As #1 Len = 256
COM(port%) ON
If port% = 1 Then
x% = INP(&H21)
x% = x% Or 16
OUT &H21, x%
OUT &H3FB, &H80
OUT &H3F8, &H80
OUT &H3F9, &H1
OUT &H3FB, &HB
x% = INP(&H21)
x% = x% And 239
OUT &H21, x%
Else
x% = INP(&H21)
x% = x% Or 8
OUT &H2FB, &H80
OUT &H2F8, &H80
OUT &H2F9, &H1
OUT &H2FB, &HB
x% = INP(&H21)
x% = x% And 247
OUT &H21, x%
End If
poll = 0
While xt <> 4 And poll < 20 And i$ <> Chr$(27)
i$ = INKEY$
If t0 + 1 < Timer Then GoSub polling
Wend
If i$ = Chr$(27) Then End
If poll >= 20 Then
If port$ "1" Then port$ "2": port% = 2: GoTo debut
If port$ "2" Then port$ "1": port% = 1: GoTo debut
End If
Print #1, Chr$(16); Chr$(2); Chr$(6); Chr$(48); Chr$(254); Chr$(1); Chr$(254); Chr$(0);
Print #1, Chr$(5); Chr$(74); ' for communication at 9600 bps )
vitesse:
If xt = 6 Then
Print "COM OK 9600 bps"
If port% = 1 Then
x% = INP(&H21)
x% = x% Or 16
OUT &H21, x%
OUT &H3FB, &H80
OUT &H3F8, &HC
OUT &H3F9, &H0
OUT &H3FB, &HB
x% = INP(&H21)
x% = x% And 239
OUT &H21, x%
Else
x% = INP(&H21)
x% = x% Or 8
OUT &H21, x%
OUT &H2FB, &H80
OUT &H2F8, &HC
OUT &H2F9, &H0
OUT &H2FB, &HB
x% = INP(&H21)
x% = x% And 247
OUT &H21, x%
End If
xt = 0
Else
GoTo vitesse
End If
xt = 0
poll = 0
While xt <> 4
If t0 + 1 < Timer Then GoSub polling
Wen4
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 oct. 2007 à 21:03
Salut
(il y avait longtemps que je n'avais ressorti les archives !)
En VB6, la comm avec un port série se fait avec le composant MSComm32.OCX
Tu pourras y définir les caractéristiques de ta com (vitesse, parité ...)
Dans ce programme en QB, les données étaient écrites (OUT) ou lues (INP) directement dans le matériel grâce aux adresses d'interruption système.
En glanant des infos sur internet : http://support.microsoft.com/kb/39255/fr x% = INP(&H21) ' Stoppe le COM1
x% = x% Or 16
OUT &H21, x%
OUT &H3FB, &H80 ' Redéfinition des vitesses and Co
OUT &H3F8, &HC '
OUT &H3F9, &H0
OUT &H3FB, &HB
x% = INP(&H21) ' Réouvre le COM1
x% = x% And 239
OUT &H21, x% ' Validation
Else
x% = INP(&H21) ' Idem pour le COM2
x% = x% Or 8
OUT &H21, x%
OUT &H2FB, &H80
OUT &H2F8, &HC
OUT &H2F9, &H0
OUT &H2FB, &HB
x% = INP(&H21)
x% = x% And 247
OUT &H21, x%
Donc ceci n'est pas utile en VB6 puisque la partie configuration du port est faite dans le composant.
En VB6, les données sont buffurisées par l'OS (Windows).
Il faudra donc lire et écrire le buffer. (voir l'aide autour de l'évènement OnComm lié à la réception + l'exemple fourni dans l'aide)
Voir aussi les source du site qui parlent de COMM
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)