halli hallo...
also, wenn ich es richtig im kopf hab, gibts bei der EasyLase 2 varianten dmx zu senden.
entwedern einen ganzen block (alle 512 kanäle auf einmal)... das verwende ich... man schreib sich die werte alle in ein Array.. und übergibt quasi nur den Zeiger auf das Array an den Aufruf.
Result is nur die "Antwort" der Dll... je nach dem ob alles okay oder n fehler drinn war, ändert sich der wert.. ich glaub (müsste nachlesen) ne NULL sagt... OK... kein Fehler
Die andere Variante ist die, "nur bestimmte kanäle" an die EasyLase zu schicken. dazu gibts nen extra dll aufruf.
das is dann dieser Aufruf:
Code: Select all
Declare Function EasyLaseDMXOut Lib "EasyLase.dll" (ByRef CardNumber As Long, ByRef DmxBuffer As Byte, ByVal Baseaddress As Long, ByVal ChannelCount As Long) As Boolean
Den hab ich aber noch nie ausprobiert. weis nicht ob und wie der mit VB klappt.
sollte wohl so sein:
DMXBuffer is wohl wieder ein Zeiger auf ein Array mit den Wert(en) der Kanäle
Baseaddress ist wohl der erste Kanal, ab dem der/die Werte rein geschrieben werden sollen
ChannelCount ist wohl die Zahl der Werte die geschrieben werden sollen.
Also vermute ich zB folgendes.
Wert(1) = 100
Wert(2) = 200
Wert(3) = 29
Kartennummer=0
EasyLaseDMXOut(KartenNummer,Wert(1),20,2)
Würde folgendes machen
An Karte 1 (nummer null) wird der kanal 20 auf 100 gestellt, und der Kanal 21 auf 200
OK?
Wie gesagt, dies hab ich noch nie Ausprobiert!!!!!
ich schreib IMMER gleich 512 Kanäle, auch wenn sich nur einer geändert hat. GRUND HIERFÜR: Bei USB1.1 is es so, dass das Herstellen einer Übertragung eigentlich die meiste Zeit in Anspruch nimmt. ob du dann 1 byte oder 512 bytes überträgst, is beinahe egal...
Daher macht dies kaum einen Unterschied.
Im gegenteil.. es würde wohl mehr zeit kosten ständig immer wieder einzele DMX Werte zu senden
bei HE.LS mach ich es so, dass ich IMMER nach dem übertragen eines Frames die DMX Werte übertrage (sofern sich überhaupt was geänder hat)... denn dann is ja eh kurz zeit, bis der nächste frame kommt
gruß derweil
Erich