PowerAnt: Apprenez à votre Ordinateur à Piloter le Monde Réel
PowerAnt peut commander 14 appareils externes et plus, ceci depuis votre ordianteur, via le port RS232. Le protocole de communication est simple à mettre en oeuvre et vous trouverez une description complète dans le manuel de programmation. Les équipements électriques à piloter peuvent aller jusqu'à 200W. Possible de piloter des appareils à partir de MS Excel ?
 PowerAnt
Description
Applications
Caractéristiques
Documentation
Photos
 Modèles de PowerAnt
SwSe
SwSw
SeSe
 Programmation
Exemples en Perl
Exemples en C/C++
MS Access 2000
MS Excel 2000
 Achat
Contenu du paquet
Tarifs
 Nouvelles RSS
 Contacts
 ë  ListTop.Ru Rambler's Top100

Programmation d'un PowerAnt dans MS Excel 2000

PowerAnt peut être programmer en utilisant les composants standard mscomm32.ocx. Ces composants sont créés par la société Microsoft mais ne sont pas inclus dans chaque version de Windows. Cela doit être la raison pour laquelle il y'a a quelques problèmes. (Les bug officiellement connu: Fuite mémoire à l'ouverture/fermeture du port RS-232 port). Typiquement, le port RS-232 est ouvert au démarrage du programme et fermé à la fin du programme. Ce qui fait que ce bug n'est pas si dangereux.

Téléchargez mscomm32.ocx (mscomm.zip, 51KB) dézippez le composant et copiez le dans le répertoire C:\Windows\System.

Pour rendre accessible ce composant, vous devez mettre quelques clés dans le registre Windows (Dans le monde Windows nous n'aimons pas les voies faciles;-)):

REGEDIT4

[HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905]
@ = "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"
Pour ce faire, cliquez sur le fichier mscomm.reg (présente dans le l'archive mscomm.zip). Une fenêtre vous demande si souhaitez mettre à jour votre base de registre, vous devez répondre "Oui".

Excecutez MS Excel. Ouvrez la barre d'outils de l'éditeur Visual Basic (Affichage/Barre d'outils/Visual Basic) et la barre d'outils des "Controles" (Affichage/Barre d'outils/Boîte à outils Controles). Passer en mode "Création" (en utilisant la barre d'outils Visual Basic). Créez le bouton CommandButton1. Cliquez sur le bouton droit de la souris sur CommandButton1 et cliquez sur "Visualiser le code". L'éditeur Visual Basic est ouvert.

Right this you need to do somesing magical in Microsoft Visual Basic editor. Allez dans le menu Outils/References. Cliquez maintenant sur le bouton Parcourir.... Chercher le fichier mscomm32.ocx (repertoire C:\Windows\System). Dans la fenêtre "References" dans la partie "References disponibles" vous pouvez voir la ligne "Microsoft Comm Control 6.0" cochée, cliquez sur ok.

Copiez le programme suivant dans l'éditeur:

Dim PwrAntComm As New MSComm

' When the button is pressed, the command 08?? is executed 
'	the device answer puts to cell C12
Private Sub CommandButton1_Click()
    ' 2 - COM port number (COM1 = 1, COM2 = 2, ... )
    PwrAntOpen (2)
    ' Ask device with address 08 "Who are you, and what you can do?"
    ' Put device answer to cell C12
    Sheet1.[C12] = PwrAntCmd("08", "??")
    Call PwrAntClose
End Sub

' Open RS-232 port, if this port is not be opened
' PortNumber - Number of COM port (COM1 = 1, COM2 = 2, ... )
Sub PwrAntOpen(PortNumber As Integer)
    If Not PwrAntComm.PortOpen = True Then
        PwrAntComm.CommPort = PortNumber
        PwrAntComm.Settings = "9600,N,8,1"
        PwrAntComm.Handshaking = comNone
        PwrAntComm.InputLen = 0
        PwrAntComm.InBufferSize = 40
        PwrAntComm.OutBufferSize = 40
        PwrAntComm.PortOpen = True
        PwrAntComm.RThreshold = 0
        PwrAntComm.Output = Chr(27)     ' Clear the receive buffer in all devices
    End If
End Sub

' Close RS-232 port, if this port be opened
Sub PwrAntClose()
  If PwrAntComm.PortOpen = True Then
    PwrAntComm.PortOpen = False
  End If
End Sub


' This function execute the given command and return the device answer.
'	If something wrong (you talk with nonexisting device) then 
'	function is return the empty string. Maximum command execution
'	time is limited to 2 sec.
Function PwrAntCmd(AntName As String, AntCmd As String) As String
    Dim AntInStr As String
    Dim TimeOut As Date
    ' Send command to device
    PwrAntComm.Output = AntName & AntCmd & Chr(13)
    ' Read string by bytes from device and wait byte with code 0x0D
    AntInStr = ""
    TimeOut = Time
    Do
        dummy = DoEvents()      ' Let system do something, we do not need freeze the system
        If PwrAntComm.InBufferCount > 0 Then
            AntInStr = AntInStr & PwrAntComm.Input
        End If
    Loop Until (Right(AntInStr, 1) = Chr(13)) Or (Time - TimeOut > 1)
    ' Remove 0x0D at the end of string
    AntInStr = Left(AntInStr, Len(AntInStr) - 1)
    PwrAntCmd = AntInStr
End Function
	

Sauvegarder le programme et fermer l'éditeur Visual Basic

Désactivez le mode "Création" (en utilisant la barre d'outils Visual Basic).

Si vous cliquez sur le bouton, la commande 08?? est excecutée, et la réponse du module est inscrite dans la cellule C12.

Attention, lorsque vous cliquez sur le bouton, le programme ouvre et ferme le port RS-232 et des peties fuites mémoire peuvent se produire.

PowerAnt peut commander 14 appareils externes et plus, ceci depuis votre ordianteur, via le port RS232. Le protocole de communication est simple à mettre en oeuvre et vous trouverez une description complète dans le manuel de programmation. Les équipements électriques à piloter peuvent aller jusqu'à 200W. Possible de piloter des appareils à partir de MS Excel ?
Traduit par/Translate by Nicolas LE FEVRE -   © 2004-2014 by  www.anthillsolutions.com