Page 1 sur 1

[..] Communication USB pour bp1048

Posté : ven. 19 avr. 2024 05:23
par Anthony
Bonjour à tous,

Je cherche à communiquer en USB avec un DAC audio BP1048 b2 dans une GUI AutoIt afin de pouvoir monter les gains "DAC0 et DAC1 Digital".
J'ai dû vraiment creuser pour trouver un Dev Kit que j'ai trouvé ici
https://github.com/leadercxn/bp1048_sdk_v0.1.12

Auriez-vous un point de départ pour m'aiguiller, merci :mrgreen:

Voici le log lorsque je passe le gain de DAC1 de -6 à -5,7
[2024.04.19 05:10:41.156 ven.] [USB TX] -- DAC1: Control Word = 0x0A, Data Length = 0x03
A5 5A 0A 03 03 4D 08 16

[2024.04.19 05:10:41.158 ven.] [USB RX] -- Response:
0A

[2024.04.19 05:10:41.194 ven.] [USB TX] -- DAC1: Control Word = 0x0A, Data Length = 0x00
A5 5A 0A 00 16

[2024.04.19 05:10:41.196 ven.] [USB RX] -- DAC1: Control Word = 0x0A, Data Length = 0x1D
A5 5A 0A 1D FF 01 00 07 00 01 00 4D 08 05 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16
Sans titre.png
Log complet
► Afficher le texte

Re: [..] Communication USB pour bp1048

Posté : mar. 23 avr. 2024 18:49
par TommyDDR
J'avais utilisé il y a fort longtemps la lib ComUDF pour dialoguer en USB avec un arduino, c'est peut être une piste pour vous :
https://www.autoitscript.com/forum/topi ... -port-udf/

Re: [..] Communication USB pour bp1048

Posté : ven. 26 avr. 2024 11:58
par Anthony
Bonjour TommyDDR,

Oui avec arduino je me suis fais un petit soft a l'époque pour contrôler ma CNC et là je l'avait bien de listé en port COM CH430 ;).

Par contre dans ce cas précis l'appareil est reconnu comme un périférique USB générique et je le le vois pas comme port COM
Sans titre.png
Sans titre.png (8.32 Kio) Vu 7524 fois
MV Silicon.png
Voici le détail du périférique.
► Afficher le texte
Pour être plus pécis c'est ce type de carte qui utilise un logiciel propriétaire sous license et je souhaite faire ma propre interface
Sans titre.png
Logiciel (Sous license) ACP Workbench
ACP Workbench.png

Re: [..] Communication USB pour bp1048

Posté : mar. 07 mai 2024 11:15
par Numeric
Salut, pour faire simple et éviter tout tâtonnement, il te faudra tout simplement développer un UDF pour implémenter les fonctions de la dll Winusb.dll . C'est le moyen le plus facile.

Re: [..] Communication USB pour bp1048

Posté : ven. 28 juin 2024 02:49
par Anthony
Bonjour Numeric,

Merci pour ta suggestion et m'excuse de n'avoir répondu plus tôt.
Peut-être un début de réponse ici : https://www.autoitscript.com/forum/topi ... tructures/
Je n'ai pas trouvé quelqe chose de fonctionnel avec "Winusb.dll" mais je fais peut-être fausse route avec "libusb0.DLL" ?
Le but étant d'identifier le Vendor ID 0x8888 et Product ID 0x1719 pour dialoguer avec "mvsilicon B1 usb audio" (Ma carte)
Info.png
Description du bus signalée
Info2.png
DLL
libusb0.zip
(18.59 Kio) Téléchargé 77 fois

Code : Tout sélectionner

[spoiler=]$libusb0Path = "libusb0.DLL"
$libusb0 = DllOpen( $libusb0Path)

hotkeyset("{Esc}","Terminate")

#include <Array.au3>


usb_init()

$findbus = usb_find_busses()
;_ArrayDisplay( $findbus, "$findbus")

$busses = usb_get_busses()
;_ArrayDisplay( $busses, "$busses")

$find = usb_find_devices()
;_ArrayDisplay( $find, "$find")


$usb_bus = DllStructCreate("ptr;ptr;char[512];ptr;ulong;ptr", $busses[0])
_ArrayDisplay( $usb_bus, "$usb_bus")

;MsgBox(0, "ugb", IsDllStruct($usb_bus))
For $i = 0 To 100
   $Ret = DllStructGetData($usb_bus, $i)
   If $Ret Then MsgBox(0, "ugb", $Ret)
   ;MsgBox(0, "ugb", $Ret)
Next

;Exit

;*******************find busses*********************************************



$usb_find_busses = DllStructCreate("Int", $findbus[0])
$fbus= DllStructGetptr($usb_find_busses,1)
If($fbus=0x00000001) then
   ConsoleWrite("Busses found  "& $fbus & @CRLF)
Else
   ConsoleWrite("Busses Not found ...  "& $fbus & @CRLF)
EndIf


;*******************get busses*********************************************


$usb_get_busses = DllStructCreate("ptr;ptr;char[512];ptr;ULONG;ptr;", $busses[0])

$next = DllStructGetPtr($usb_get_busses, 1)
MsgBox(0, "Next Pointer", $next)

$previous = DllStructGetPtr($usb_get_busses, 2)
MsgBox(0, "Previous Pointer", $previous)
$path = DllStructGetptr($usb_get_busses, 3)
MsgBox(0, "Path", $path)
$devices = DllStructGetPtr($usb_get_busses, 4)
MsgBox(0, "Devices Pointer", $devices)
$location = DllStructGetData($usb_get_busses, 5)
MsgBox(0, "Location", $location)
$root_dev = DllStructGetPtr($usb_get_busses, 6)
MsgBox(0, "Root Device Pointer", $root_dev)

;**********************data devices*********************************************

$usb_find_devices = DllStructCreate("Int",$find[0])
$devi = DllStructGetPtr($usb_find_devices)
If($devi=0x00000001) then
ConsoleWrite("A device is connected  "& $devi & @CRLF)


; WORK ON IT :::
$id=0x00000001

$d = usb_open($id)
$usb = DllStructCreate("HWnd",$d[0])
$de = DllStructGetPtr($usb)

ConsoleWrite("data" & $usb)
;*********************************


Else
ConsoleWrite("Not device...  "& @CRLF)
EndIf



;*******************************open / close*****************************************




DllClose("libusb0.DLL")





Func Terminate()
    Exit 0
EndFunc   ;==>Terminate


Func usb_init()
   DllCall ($libusb0, "none", "usb_init")
EndFunc

Func usb_find_busses()
   $retval = DllCall ($libusb0, "int", "usb_find_busses")
   Return $retval
EndFunc

Func usb_device()
   $retval = DllCall ($libusb0, "Ptr", "usb_device")
   Return $retval
EndFunc

Func usb_find_devices()
   $retval = DllCall ($libusb0, "Ptr", "usb_find_devices")
   Return $retval
EndFunc

Func usb_get_busses()
   $retval = DllCall ($libusb0, "ptr", "usb_get_busses")
   Return $retval
EndFunc


Func usb_open($devicePointer)
   $retval = DllCall ($libusb0, "HWnd", "usb_open", "Ptr", $devicePointer)
   Return $retval
EndFunc


Func usb_close($devicePointer)
   $retval = DllCall ($libusb0, "int", "usb_close", "ptr", $devicePointer)
   Return $retval
EndFunc[/spoiler]