Lecture ecriture port com 55 VBA excel

Signaler
Messages postés
12
Date d'inscription
jeudi 5 juillet 2007
Statut
Membre
Dernière intervention
5 janvier 2009
-
Messages postés
12
Date d'inscription
jeudi 5 juillet 2007
Statut
Membre
Dernière intervention
5 janvier 2009
-
Bonjour,
je cherche a lire ecrire sur un port com virtuel (55)  par excel
(liaison en port serie avec un télephone via USB (cable, IRDA ou dongle USB BT)
avez vous un script a copier coller sous excel d'une dizaine de ligne, car mscomm est limitée et j'ai l'erreur 8002
mon but
envoyer sur le port com 55 la chaine ATZ
en echange je dois recevoir un OK
autrement, il y a t'il un moyen d'avoir acces a des commande de type my.computer.contolkey.down de VB sous excel ?
merci d'avance

4 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Effectivement, si tu utilise le composant MSComm tu ne peux utiliser que les 16 premiers n° de port série (COM1 à COM16)

Je ne sais s'il existe d'autres solutions en VBA. Fait peut-etre une recherche dans les sources ou même sur le forum à ce sujet.

Perso, j'ai recontrer ce problème en VB5 une fois, je ne m'étais pas embéter, j'avais développer ma propre gestion du port série dans une Dll en C. Mais bon, tout ça ne va pas t'aider.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
12
Date d'inscription
jeudi 5 juillet 2007
Statut
Membre
Dernière intervention
5 janvier 2009

Bonjour,
merci pour la réponse, en fait une réponse est fournié par le support microsoft, acheter le composant PDQCOM d'une société :)
sinon, peux t'on intégrer les références VB sous VBA car j'ai un exemple de gestion sur le port série  par  une fonction IO.Ports.serial.Port issu du guide de survie du VB acheté hier soir
est ce que cela marcherait pour un port > 9 (erreur 8002)
je recherche les composants IOserial port et my computerkey pour traiter les les touches type Controle+Z
derniere question : les thread existent sous VB et peuvent permettent de palier un mauvais
une boulette dans une boucle (type infinie) peux t'on les porter dans VBA ?
example

Dim Com1 As IO.Ports.SerialPort
Com1 = my.computer.Ports.openSerialPort("com1", 19200)
'ecriture
' Com1.write ("chaine1" & vbCrLf)
Dim st As String
'lecture
'Com1 = My.Computer.Ports.OpenSerialPort("com1", 19200)
'Do
'st = Com1.Readline()
'label1.Text = st
'Loop

Dim st As String
Dim Portserie As String
st = "les ports series sont:" + vbCrLf
For Each Portserie In my.computer.port.serialPortNames
    st = st + " -" + Portserie + vbCrLf
Next
textBox1.Text = st

merci
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Attention à ne pas confondre VB6/VBA avec VB.Net.
Le code que tu donne semble etre du code VB.Net.

Effectivement la classe .Net SerialPort n'est pas limitée dans le n° de port. Par contre elle n'est pas utilisable directement en VBA.

Je ne sais pas si c'est possible avec VBA, mais avec VB6, il est possible d'aller utiliser des classes du framework .Net mais cela necessite des faire quelques manipulations auparavent. Ce n'est pas aussi simple que d'integer la référence.
J'avais trouvé un tutorial sur l'utilisation des classes .Net dans VB6, mais je n'arrive pas à y remettre la main dessus. Il me semblait pourtant que c'était sur le site Developpez.com.

Pour ce qui est des threads, que ce soit en VB6 ou en VBA, oublie tout simplement. Ces langages ne sont pas capables de gerer le multithreading. La seule garantie que tu pourras obtenir en faisant du multithreading en VB6/VBA, c'est de planter à coup sûr, non seulement le logiciel, mais aussi la machine (le celebre Ecran bleu, BSOD pour les intimes).

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
12
Date d'inscription
jeudi 5 juillet 2007
Statut
Membre
Dernière intervention
5 janvier 2009

bonjour,
j'ai resolu mon pb, a savoir lecture ecriture sur le port com avec  MSCOMM
sous VBA, on est bien limité a quelque port , et ne prenant un COM3 cela marche sinon erreur 8002
pour aider a la résolution ,j'ai télécharger un freeware pour espionner les port com (serial port) et cela permet de voir si on envoie/recoit les données correctement (HDD free serial port monitor ou autre de démo)
voici ce que j'avais écrit
Dim tampon$
Dim MSComm1 As New MSComm

MSComm1.CommPort = 3 ' Com Port 3
    ' Set for 9600 baud, no parity, 8 data, and 1 stop bit.
MSComm1.Settings = "115200,N,8,1"
    ' Tell the control to read entire buffer when Input is used
MSComm1.InputLen = 0
    ' Open the port
MSComm1.PortOpen = True
    ' Send an 'AT' command to the phone
MSComm1.Output = "ATZ" & Chr$(13) & Chr(10)
    
Do
  DoEvents
  tampon$ = tampon$ & MSComm1.Input
Range("A3").Select
ActiveCell.FormulaR1C1 = tampon$
'voici la reponse dans le input  fournit par le sniffer et tampon$
41 54 64 74 30 32 35 33 30 34 36 37 30 33 0D 0D   ATdt0253046703..
 0A 4E 4F 20 44 49 41 4C 54 4F 4E 45 0D 0A         .NO DIALTONE..
 Loop Until InStr(tampon$, "ok" & vbCrLf) => boucle infinie dans ce code,
normal vu la réponse ci dessous
'voici la reponse dans le input  fournit par le sniffer et tampon$
cellule A3 = ATZ..OK
41 54 5A 0D 0D 0A <st1:metricconverter productid="4F" w:st="on">4F</st1:metricconverter> 4B 0D 0A                     ATZ...OK..

Commande ATdt 0253046703

41 54 64 74 30 32 35 33 30 34 36 37 30 33 0D 0D   ATdt0253046703..


 0A 4E 4F 20 44 49 41 4C 54 4F 4E 45 0D 0A         .NO DIALTONE..

cordialement