OVH Cloud OVH Cloud

opencomm et createfile ?

1 réponse
Avatar
Eric
bonjour à tous

j'ai migré un programme vb3 en vb6

ce programme utilisait la fonction opencomm pour l'ouverture du port com

j'ai lu qu' il fallait en vb6 utiliser createfile.

jusque là c'est ok, mais je ne sais vraiment pas comment l'utiliser ( et oui
je suis un véritable ignorant ;)

Voici comment est utilisée la fonction opencom dans le programme vb3 :

----------
Declare Function OpenComm Lib "User" (ByVal ComName As String, ByVal
RBuffer%, ByVal TBuffer%) As Integer

OpenComm(Com1:, 32000, 32000)
----------

en vb 6, j'ai déclarer la fonction et le type suivant :

----------
Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal
lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As
Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal
hTemplateFile As Long) As Long

Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type

------------

ma question est finalement : que quoi je met dans createfile pour avoir le
même résultat que dans la fonction opencomm de vb3 ?

CreateFile(Com1:?, ?, ? , ?, ?, ?, ?)

Si quelqu'un peut m'aider, son aide me sera d'un grand secours.

d'avance merci

PS j'aurai surement le même problème avec les autres fonctions suivantes :

buildcommdcb
setcommstate
closehandle
clearcommerror
readfile
writefile
purgecomm

je vous remercie de votre attention et vous souhaite à tous un joyeux noël
(vu mon niveau d'ignorance, j'aurais certainement l'occasion de vous
souhaitez une bonne année la semaine prochaine ! ;)

meilleures salutations

Eric

1 réponse

Avatar
François Picalausa
Eric wrote:
ce programme utilisait la fonction opencomm pour l'ouverture du port com

j'ai lu qu' il fallait en vb6 utiliser createfile.

jusque là c'est ok, mais je ne sais vraiment pas comment l'utiliser ( e t oui
je suis un véritable ignorant ;)



Hello,

Je te conseille vivement de lire la documentation de CreateFile et en
articluier les remarques s'y rapportant:
<quote
src="http://msdn.microsoft.com/library/en-us/fileio/fs/createfile.asp">
The CreateFile function can create a handle to a communications
resource, such as the serial port COM1. For communications resources,
the dwCreationDisposition parameter must be OPEN_EXISTING, and the
template parameter must be NULL. Read, write, or read/write access can
be specified, and the handle can be opened for overlapped I/O. For more
information about communications, see Communications.
</quote>

ainsi que l'article Communications Resource Handles:
http://msdn2.microsoft.com/en-gb/library/aa363198.aspx

En d'autre termes, cet appel se traduira par quelquechose comme:

Dim hCom as Long
hCom = CreateFile( "COM1:", 0, 0, ByVal 0&, OPEN_EXISTING, 0, 0)

en utilisant les déclaration suivante:
Declare Function CreateFile _
Lib "kernel32.dll" _
Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
lpSecurityAttributes As Any, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long _
) As Long
Const OPEN_EXISTING = 3

A noter que de la litérature existe sur le sujet, à commencer par de
la littérature sur le contrôle MSComm fourni avec VB6:
http://www.microsoft.com/france/msdn/windows/ctlmscommtech.mspx
http://msdn.microsoft.com/library/en-us/comm98/html/vbobjComm.asp

Mais aussi sur l'API CreateFile dans ce contexte:
http://vbnet.mvps.org/index.html?code/system/comtestapi.htm
http://support.microsoft.com/kb/600789/ko (l'article n'existe
apparement ni en anglais ni en français, mais le code reste
applicable)
http://www.bitwisemag.com/copy/vb/vb2.html

François