Commande kit k8090 avec langage Windev

bonjour ,

JE programme AVEC WinDev .
programme JE voudrais commandant les différents relais avec un programme
Ecrit sous WinDev

VOICI les «déclarations» d’ Ouverture de ma fenetre

hinst EST un entier
hinst = ChargeDLL ( "c: \ windows \ system32 k8090D.dll \ " )
nCode est un ENTIER AppelDLL32 ( " k8090D.ddl “,” OpenDevice ", 0)
SI nCode =- 1 ALORS
Info ( " la carte n’est Pas branchée " )
RETOUR
SINON
Info ( " cliquez sur bouton " )
FIN

: Jusque là » Tout fonctionne .

J’Ai Lu Toutes les pages pdf ,
MAIS JE n’arrive Pas à Trouver Le Moyen de commandant les diodes des allumages
1, 2 , …
Le code devrait être de clichés de la …

AppelDLL32 ( " k8090D.ddl “,” sendcommand ",…)

Pourriez -vous m’aider

Merci

Michel

J’aimerais bien vous aider mais je ne connais rien de WinDev… Est-ce que vous comprenez les paramètres de SendCommand? Votre code pour faire une connection me semble OK (OpenDevice <> -1 = connected).

Bonjour,

je reviens sur lepilotage de la carte k8090

j’ai légèrement modifié le code ci dessous qui fonctionne tres bien:


HndlLib est un entier
// Chargement de la librairie
HndlLib=ChargeDLL(“K8090D.dll”)
SI HndlLib=0 ALORS
// Aucun panneau windows n’a encore été affiché pour signaler
// l’absence de la librairie, vous pouvez donc effectuer ici
// votre propre gestion d’erreur
Info(“La Librairie n’est pas chargée”)
SINON
//Info(“La Librairie est chargée”)
// Vous pouvez utiliser la librairie
// Placez ici vos traitements concernant la librairie

 :arrow_right: API("K8090D.dll", "SendCommand",x,x,x,x,x.....)
// Décharge la librairie

// DechargeDLL(HndlLib)
FIN


par contre des que je veux commander une diode par exemple je ne sais plus faire
voir la commande ci-dessus:
:arrow_right: API(“K8090D.dll”, “SendCommand”,x,x,x,x,x…)

les “x” remplacent les paramètres que je ne connais pas
les brochures sont incompréhensibles, (codes dll ou protocoles)

la commande “api” (windev) ouvre la dll, appelle la fonction “sendcommand”, et maintenant ma question est:quels qont les paramètres pour allumer la diode 1 par exemple?

si vous avez une idée, ça fait plusieurs jours que je cherche en vain

merci de votre contribution

Michel

First, connect to your device.

HANDLE = OpenDevice("COM1");

You will need to pass the return value of OpenDevice to SendCommand along with other parameters. The return value will be -1 if the connection failed.

A basic call looks like this:

SendCommand(HANDLE, CMD, MASK, PARAM1, PARAM2);

The correct values for CMD, MASK, PARAM1 and PARAM2 are explained in the K8090 Protocol Manual. In your case, you will need to look at page 4 and 5.

If you want to switch a relay to ON the K8090 Protocol Manual explains:

bonjour et merci pour ces infos…

ma commande “api” (windev) qui appelle “sendcommand”…

Api(“K8090D.dll”, “SendCommand”,ncode,cmd,mask, param1,param2)
“ncode” correspond au “HANDLE = OpenDevice(“COM5”)”

Au point ou j’en suis, si je lance cette commande windev:
Api(“K8090D.dll”, “SendCommand”,ncode,1,1,0,0) ou avec tout autre chiffre comme paramètres,
j’allume la diode “usb data” mais aucune diode des relais.

j’ai fait une boucle pour combiner les 4 derniers paramètres de la commande (cmd,mask,param1,param2)
de 0 à 100 soit 100 000 000 de combinaisons sans succès
pour ne pas mettre une erreur, ces 4 paramètres doivent être des chiffres
les param1 et param2 semblent être inutiles

d’après le protocole cmd= 12h (le “h” n’est pas accepté)
pour le mask je ne comprends pas ce qu’il faut mettre "bite 0-7:relay 1…8

ma question reste simple
que mettre comme chiffre a la place de cmd et mask (et peut être patam1 et param2) pour allumer la diode 3 par exemple ?

api(“k8090d.dll”,“sendcommand”,ncode,?,?,?,?)

Merci de votre collaboration
je dois en effet tester un programme qui sera diffusé à plusieurs dizianes d’exemplaires avec le kit (si tout fonctionne bien sûr)

Michel

CMD = Switch Relay OFF = 12h = 12 hexadécimal = 18 décimal

Autres commandes
Switch Relay OFF = 12h = 18
Switch Relay ON = 11h = 17
Toggle Relay = 14h = 20

MASK

---------------------------------
|   1 Byte = 8 bits = 8 relays  |
---------------------------------
| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
---------------------------------
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
---------------------------------

Thus, selecting relay 5

---------------------------------
|           1 Byte              |
---------------------------------
| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
---------------------------------
| 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
---------------------------------
              ^
              Relay 5

00010000 in binary = 10 hexadécimal = 16 décimal

Toggle relay 5

SendCommand(ncode, 20, 16, 0, 0)

Selecting relay 3 and 5

---------------------------------
|           1 Byte              |
---------------------------------
| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
---------------------------------
| 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
---------------------------------

00010100 in binary = 14 hexadécimal = 20 décimal

Toggle relay 3 and 5

SendCommand(ncode, 20, 20, 0, 0)

J’aimerais mieux vous aider avec WinDev, mais essayez si vous avez des résultats avec ces examples.

Bonjour,

Merci pour les derniers éléments que vous m’avez apportés
:bulb: Vous trouverez ci-dessous les codes pour le Pilotage de la carte k8090 de velleman Avec “windev”

:arrow_right: Ces éléments serviront de base pour tous ceux qui programment avec Windev
J’ai fait un mini programme qui fonctionne très bien

  • Ouvrir le programme de « demo » chargeable sur le site velleman
  • Brancher le kit sur un port USB (la led « usb power » s’allume)
  • Noter le numéro du port virtuel de la cellule « select your port » :question: du programme démo
  • Créer une fenêtre vierge sous windev
  • Dans la « déclaration globale de la fenêtre »

// Chargement de la librairie
HndlLib=ChargeDLL(“K8090D.dll”)
SI HndlLib=0 ALORS
// Aucun panneau windows n’a encore été affiché pour signaler
// l’absence de la librairie, vous pouvez donc effectuer ici
// votre propre gestion d’erreur
Info(“La Librairie n’est pas chargée”)
FIN
//–fin code généré par l’assistant –

  • Dans la « initialisation de la fenêtre »

scom est une chaîne= « numéro du port noté plus haut » :question:
SI ncode_kit_k8090<1
ncode_kit_k8090= API(“k8090D”,“OpenDevice”,scom)
FIN

  • Dans la fenêtre, créez 16 ou 8 boutons
    Vous aves 2 possibilités de commande des leds des relais

:arrow_right: 2 boutons pour chaque led ; 1 pour allumer, 1 pour éteindre (soit 16 boutons)
// allumage led 1
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,17,1,0,0)
// extinction led 1
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,18,1,0,0)

// allumage led 2
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,17,2,0,0)
// extinction led 2
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,18,2,0,0)

// allumage led 3
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,17,4,0,0)
// extinction led 3
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,18,4,0,0)
……………………………………………………………………
//Led 4 ….ncode_kit_k8090,18,8,0,0)
//Led 5 ….ncode_kit_k8090,18,16,0,0)
//Led 6 ….ncode_kit_k8090,18,32,0,0)
//Led 7 ….ncode_kit_k8090,18,64,0,0)
//Led 8 ….ncode_kit_k8090,18,128,0,0)

:arrow_right: 1 bouton pour chaque led ; 1 clic allume, 1 clic éteint (soit 8 boutons)

// allumage ou extinction de la led 1
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,20,1,0,0)
// allumage ou extinction de la led 2
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,20,2,0,0)
// allumage ou extinction de la led 3
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090,20,4,0,0)
……………………………………………………………………
//Led 4 ….ncode_kit_k8090,20,8,0,0)
//Led 5 ….ncode_kit_k8090,20,16,0,0)
//Led 6 ….ncode_kit_k8090,20,32,0,0)
//Led 7 ….ncode_kit_k8090,20,64,0,0)
//Led 8 ….ncode_kit_k8090,20,128,0,0)

Bonne prog à tous

Michel

Hi,
I made a program with windev for 2 K8090d Cards on Com3 and Com4.
No problem to activate relays with the command.
But I don’t know how to read the status of the buttons…
Somebody has an idea ?
With the Button Status 50h ?
Thank you very much.
(French or English no problem)

PROCEDURE MaFenêtre()
// Chargement de la librairie
HndlLib est un entier = ChargeDLL(“k8090d.dll”)
ncode_kit_k8090_1 est un entier
ncode_kit_k8090_2 est un entier

SI HndlLib=0 ALORS
Info(“La Librairie n’est pas chargée”)
FIN

sCom est une chaîne= “COM3”
sCom2 est une chaîne = “COM4”

SI ncode_kit_k8090_1 < 1
ncode_kit_k8090_1= API(“k8090D”,“OpenDevice”,sCom)
FIN
SI ncode_kit_k8090_2 < 1
ncode_kit_k8090_2= API(“k8090D”,“OpenDevice”,sCom2)
FIN
// Tout mettre à Off avant de commencer (All Off before starting)
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090_1,18,255,0,0)
API(“K8090D.dll”, “SendCommand”,ncode_kit_k8090_2,18,255,0,0)