« Multicomp PRO MP730027 » : différence entre les versions
mAucun résumé des modifications |
mAucun résumé des modifications |
||
Ligne 80 : | Ligne 80 : | ||
|Apparemment on ne peut pas se connecter à plusieurs sur le port 3000 (ca forke pas ?) | |Apparemment on ne peut pas se connecter à plusieurs sur le port 3000 (ca forke pas ?) | ||
|} | |} | ||
== Programmation == | |||
On prendra comme exemple l'accès par le réseau car c'est le plus standard. Aucune libraires n'est nécessaires. | |||
<syntaxhighlight lang="python3"> | |||
#!/usr/bin/python3 | |||
import socket | |||
HOST = "192.168.2.231" | |||
PORT = 3000 | |||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: | |||
s.connect((HOST, PORT)) | |||
s.sendall(b"*IDN?") | |||
data = s.recv(1024) | |||
print(data.decode("utf-8")) | |||
</syntaxhighlight> |
Version actuelle datée du 4 mars 2024 à 11:30
Voila un joli multimètre vendu pas trop cher sur le site de Farnell.
Présentation
Ce n'est pas un périférique SCPI uart Il ne communique pas par une interface USB Serial. Mais comment communique t-il. Le logiciel fournit sur le site Farnel NL ne fonctionne pas chez moi (Windows 10).
Dans ce cas, comme d'habitude, on utilise Linux et... un raspberry PI !
On le branche et on regarde ce que dis linux dans les messages (dmesg -w)
[ 307.832249] usb 1-1.3: new high-speed USB device number 6 using xhci_hcd
[ 307.933059] usb 1-1.3: New USB device found, idVendor=5345, idProduct=1234, bcdDevice= 1.00
[ 307.933089] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 307.933101] usb 1-1.3: Product: AGBIOS
[ 307.933110] usb 1-1.3: Manufacturer: OWON
[ 307.933119] usb 1-1.3: SerialNumber: AG0000
[ 315.032916] usb 1-1.3: USB disconnect, device number 6
[ 315.264329] usb 1-1.3: new high-speed USB device number 7 using xhci_hcd
[ 315.365046] usb 1-1.3: New USB device found, idVendor=5345, idProduct=1234, bcdDevice= 1.00
[ 315.365067] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 315.365074] usb 1-1.3: Product: MP730027
[ 315.365080] usb 1-1.3: Manufacturer: multicomp pro
[ 315.365086] usb 1-1.3: SerialNumber: 2210101
Et on lit, tout est dit!
Ligne 1 : On a un périférique "high-speed" qui utilise xhci_hcd (c'est quoi?) sur le slot USB n° 6
Ligne 3 : Le produit s'appelle AGBIOS ? Bizare
Ligne 4 : le fabricant est OWON
La ça deviens bizare moi j'ai acheté un MP730027 chez Multicomp pro
Ligne 7 : le Device sur le slot N°6 se déconnecte tout seul...
Ligne 8 : Ho! un nouveau périférique xhci_hcd sur le slot 7
Ligne 11 : le produit est.. MP730027
Ligne 12 : De chez Multicomp pro
Là je retrouves mes petits!
Tout ceci est tres mystérieux.
En réalité Farnell vends un multimètre OWON 4 1/2 Bench-Type XDM3041 Digital Multimeter rebrandé aux couleurs de multicomp PRO.
Sur le site on trouve plus de matière. En particulier un guide de programation.
Si on est attentif on voit aussi que, dans /dev, un nouveau device apparait:
usbtmc0
USB TMC
Maintenant qu'on a vu que notre modèle était un multimètre supportant l'USBTMC de quoi s'agit-il? Une page USBTMC décrit ce protocole.
Installation
La méthode d'installation dépends beaucoup de l'OS. Sous Raspbian (Raspberry OS) on fait :
sudo pip3 install PyUSB
sudo pip3 install usb
Utilisation par le réseau
Configuration
Sur le multimètre appuyez sur le bouton puis sur NET type choisir DHCP.
Puis dans "LAN Setting" on choisit le port : Moi j'ai 3000 et on note l'IP qui lui a été attribuée (192.168.1.xxx dans la plupart des cas)
Sur le PC (Le raspberry PI ....)
nc 192.168.1.xxx 3000
Bien sur il faut utiliser l'IP relevée sur le multimetre. Ensuite on tape des commandes SCPI :
*IDN?
multicomp pro,MP730027,2303425,V3.5.0,1
*RST
Ca marche !
Apparemment on ne peut pas se connecter à plusieurs sur le port 3000 (ca forke pas ?) |
Programmation
On prendra comme exemple l'accès par le réseau car c'est le plus standard. Aucune libraires n'est nécessaires.
#!/usr/bin/python3
import socket
HOST = "192.168.2.231"
PORT = 3000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b"*IDN?")
data = s.recv(1024)
print(data.decode("utf-8"))