Erreur 380

Marko007 Messages postés 96 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 29 janvier 2009 - 15 mai 2007 à 14:50
Marko007 Messages postés 96 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 29 janvier 2009 - 22 mai 2007 à 09:29
Bonjour,

lorsque j'utilise le MSComm (COM) en lecture cela marche, mais lorsque je demande une écriture, j'ai l'erreur 380 suivante :

Exception de HRESULT : 0x800A017C CTL_E_INVALIDPROPERTYVALUE

Je suis pratiquement sûr que cela marche en VB5, VB6,...




Code :
--------

1) Form Load :

MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary

MSComm1.SThreshold = 1
MSComm1.RThreshold = 1

2) On Comm event :

Dim ArrBuffer(1500) As Byte

ArrBuffer = MSComm1.Input

3) Boutton d'envoi 1 caractère :

MSComm1.Output = Chr(6) <!--IBF.ATTACHMENT_8802486-->






Merci,
Marco

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 mai 2007 à 20:51
Si tu es en VB2005, abandonne MSComm et utilise la classe System.IO.Ports.SerialPort

Si tu es en VB.Net 2003, la gestion du port série est un vrai casse-tete car pas prévu à la base. Mais regarde ce petit article sur développez.com --> http://caron.developpez.com/dotnet/port_serie/
ATTENTION, valable que pour VB.Net 2003, pour VB2005 passer par la classe indiquer au dessus

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Marko007 Messages postés 96 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 29 janvier 2009
16 mai 2007 à 08:52
Haaa, j'ai un souci vis à vis de ça, car j'ai à 85% développé mon p'tit driver via MSComm...
J'utilise le MSComm.Output (qui génére l'erreur plus haut n°380) uniquement pour répondre avec
un ACQ - Asc(6) au partenaire récepteur..

Rem. : As-tu un exemple avec cette technique "System.IO.Ports.SerialPort" ?

SINON d'autres idées ? (Style mélanger les deux techniques, j'aime pas trop mais bon..)

Marco
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 mai 2007 à 23:07
Regarde l'aide MSDN pour l'utilisation de cette classe :
http://msdn2.microsoft.com/fr-fr/library/system.io.ports.serialport(VS.80).aspx

En gros les propriétés et methodes principales :
.PortName, pour le n° du port,
.BaudRate, .Databits, .StopBits, .Parity, pour la config
.Open, .Close, pour ouvrir ou fermer le port
.Read, .ReadByte, .ReadChar, .ReadLine, .ReadTo pour lire les données reçues
.Write, .WriteLine, pour emettre des données.

Quelques exemples de codes :
http://www.vbfrance.com/code.aspx?ID=37581
http://www.vbfrance.com/code.aspx?ID=42181

http://www.vbfrance.com/code.aspx?ID=22701 Ce dernier utilise l'ocx de VB6 sous .Net comme tu voulais faire. Je ne sais pas ce que vaut ce code, mais tu l'auras compris, personellement je te conseille plutot d'utiliser la classe .Net plutot que l'ancêtre ocx.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Marko007 Messages postés 96 Date d'inscription mardi 15 mai 2007 Statut Membre Dernière intervention 29 janvier 2009
22 mai 2007 à 09:29
Avec cette commande cela marche :

MSComm.Output = Cstr(Asc(21))

Merci de l'aide !!
Marco
0
Rejoignez-nous