i2cSendAndReceiveArray
La méthode
i2cSendAndReceiveArray()
sur le bus I2C à l'adresse spécifiée, et lit en retour le nombre d'octets spécifié du même
périphérique.
Un exemple réel
Lancez votre interpréteur Python et ouvrez le script correspondant, fourni dans le répertoire
Examples/Doc-GettingStarted-Yocto-I2C de la librairie Yoctopuce.
Vous reconnaîtrez dans cet exemple l'utilisation des fonctions expliquées ci-dessus, cette fois
utilisées avec le décorum nécessaire à en faire un petit programme d'exemple concret.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os,
sys
from
yocto_api
import
from
yocto_i2cport
def
usage():
scriptname
= os.path.basename(sys.argv[0])
print("Usage:")
print(scriptname +
print(scriptname +
print(scriptname +
sys.exit()
def
die(msg):
sys.exit(msg +
if len(sys.argv) <
usage()
target
= sys.argv[1].upper()
# Setup the API to use local USB devices. You can
# use an IP address instead of 'usb' if the device
# is connected to a network.
errmsg
= YRefParam()
if YAPI.RegisterHub("usb", errmsg) !=
sys.exit("init error"
if
target
==
'ANY':
i2cPort
= YI2cPort.FirstI2cPort()
if
i2cPort
is
sys.exit('No module connected (check
else:
i2cPort
= YI2cPort.FindI2cPort(sys.argv[1]
if not
i2cPort.isOnline():
sys.exit('Module not
# sample code reading MCP9804 temperature sensor
i2cPort.set_i2cMode("400kbps")
i2cPort.set_i2cVoltageLevel(YI2cPort.I2CVOLTAGELEVEL_3V3)
i2cPort.reset()
# do not forget to configure the powerOutput and
# of the Yocto-I2C as well if used
print("****************************")
print("* make sure voltage levels
print("* are properly configured
print("****************************")
toSend
= [0x05]
received
= i2cPort.i2cSendAndReceiveArray(0x1f, toSend, 2)
tempReg
= (received[0] << 8)
if
tempReg & 0x1000:
tempReg
-=
0x2000
else:
tempReg
&=
0x0fff
print("Ambiant temperature: "
www.yoctopuce.com
*
import
*
" <serial_number>
" <logical_name>
" any
<value>
' (check USB
cable)')
2:
YAPI.SUCCESS:
+
errmsg.value)
None:
connected')
*")
*")
+
received[1]
# perform sign extension
# clear status bits
+ str(tempReg /
envoie une commande faite d'un ou plusieurs octets
<value>")
<value>")
(use any discovered
device)")
cable)')
+
".i2cPort")
16.0))
9. Utilisation du Yocto-I2C en Python
57