Bonjour,
je n’arrive pas à récupérer mes acquisitions dans le tableur Calc en utilisant OOoBasic.
Je me suis basé sur la documentation de la DLL, j’ai bien évidemment copié les 3 fichiers K8047D, K8047E et USBIO dasn le répertoire System32.
J’arrive à utiliser toutes les fonctions d’entrée (StartDevice, LEDon, SetGain…) tout cela focntionne parfaitement. Mais la fonction ReadData provoque un plantage de Calc.
En fait je pense qu’il s’agit d’un problème de pointeur puisque le basic ne les supporte pas directement.
Voici mon code Actuel :
[code]REM ***** BASIC *****
Declare Sub StartDevice Lib “K8047D.dll” ()
Declare Sub StopDevice Lib “K8047D.dll” ()
Declare Sub ReadData Lib “K8047D.dll” (Array_Pointer As Long)
Declare Sub SetGain Lib “K8047D.dll” (ByVal Channel_no As Long, ByVal Gain As Long)
Declare Sub LEDon Lib “K8047D.dll” ()
Declare Sub LEDoff Lib “K8047D.dll” ()
'Declare variables
Dim dataBuffer(0 To 7) As Long
Dim Ampli As Integer
Dim i As Integer
Dim scal As Long
Sub Main
MaFeuille = Thiscomponent.getCurrentController.activeSheet
rem on se connecte au module
StartDevice
rem réglage échelle sur 6V
Ampli = 5
SetGain 1, Ampli
rem on indique
LEDon
rem en B2 on placera la lecture de la voie 1
CelluleResultat = MaFeuille.getCellByPosition(1 , 1)
rem un petit commentaire en F11
CelluleEtat = MaFeuille.getCellByPosition(5 , 10)
CelluleEtat.Formula = (“Acquisition en cours”)
rem c’est partit, on passe l’adresse du buffer par l’intermédiaire de databuffer(0)
ReadData dataBuffer(0)
rem normalement databuffer contient le résultat. Et databuffer(2) le résultat de la voie 1
CelluleResultat.Value = dataBuffer(2)
Wait 2500
LEDoff
CelluleEtat.Formula = ("Acquisition Terminée")
StopDevice
End Sub[/code]
ca plante à -> CelluleResultat.Value = dataBuffer(2)…
J’ai essayé d’autres manières de déclarer (des Integer, des Longs…)
J’ai tenté plein de choses mais je me demande si le problème ne vient pas du fait qu’en OOoBasic les Long peuvent être négatifs, or un pointeur négatif…
Pourtant cette macro marche en VBA alors pourquoi pas en OOoBasic ?
Merci de vos lumières,
Séb