fixed broken timeout in usb transport and added basic test of 1wire
This commit is contained in:
@@ -15,6 +15,7 @@ from gex.units.Neopixel import Neopixel
|
|||||||
from gex.units.I2C import I2C
|
from gex.units.I2C import I2C
|
||||||
from gex.units.SPI import SPI
|
from gex.units.SPI import SPI
|
||||||
from gex.units.USART import USART
|
from gex.units.USART import USART
|
||||||
|
from gex.units.OneWire import OneWire
|
||||||
|
|
||||||
|
|
||||||
# General, low level
|
# General, low level
|
||||||
|
|||||||
+2
-2
@@ -193,8 +193,8 @@ class TrxRawUSB (BaseGexTransport):
|
|||||||
# Using time.sleep() would block for too long. Instead we release the semaphore on each Rx chunk of data
|
# Using time.sleep() would block for too long. Instead we release the semaphore on each Rx chunk of data
|
||||||
# and then check if it's what we wanted (let TF handle it and call the listener)
|
# and then check if it's what we wanted (let TF handle it and call the listener)
|
||||||
start = time.time()
|
start = time.time()
|
||||||
while time.time() - start < timeout:
|
while (time.time() - start) < timeout:
|
||||||
self.dataSem.acquire()
|
self.dataSem.acquire(True, 0.1)
|
||||||
if testfunc is None or testfunc():
|
if testfunc is None or testfunc():
|
||||||
break
|
break
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import gex
|
||||||
|
|
||||||
|
class OneWire(gex.Unit):
|
||||||
|
"""
|
||||||
|
Dallas 1-Wire master
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _type(self):
|
||||||
|
return '1WIRE'
|
||||||
|
|
||||||
|
def test(self):
|
||||||
|
return self._query(0x00)
|
||||||
@@ -12,6 +12,16 @@ with gex.Client(transport) as client:
|
|||||||
print(s)
|
print(s)
|
||||||
client.ini_write(s)
|
client.ini_write(s)
|
||||||
|
|
||||||
|
if True:
|
||||||
|
ow = gex.OneWire(client, 'ow')
|
||||||
|
resp = ow.test()
|
||||||
|
print(resp)
|
||||||
|
|
||||||
|
pp = gex.PayloadParser(resp.data)
|
||||||
|
print("Temperature %f" % (pp.i16()/2))
|
||||||
|
print("Count_remain %d" % pp.u8())
|
||||||
|
print("Count_per_deg %d" % pp.u8())
|
||||||
|
|
||||||
if False:
|
if False:
|
||||||
buf = client.bulk_read(gex.MSG_INI_READ)
|
buf = client.bulk_read(gex.MSG_INI_READ)
|
||||||
print(buf.decode('utf-8'))
|
print(buf.decode('utf-8'))
|
||||||
@@ -105,7 +115,7 @@ with gex.Client(transport) as client:
|
|||||||
while True:
|
while True:
|
||||||
client.poll()
|
client.poll()
|
||||||
|
|
||||||
if True:
|
if False:
|
||||||
print(client.ini_read())
|
print(client.ini_read())
|
||||||
|
|
||||||
trig = gex.DIn(client, 'trig')
|
trig = gex.DIn(client, 'trig')
|
||||||
|
|||||||
Reference in New Issue
Block a user