Skip to content

Commit 773f11f

Browse files
authored
Merge pull request #8 from scientisst/dev_kiko
API update: Conversion of ext adc to mV and bug fix
2 parents b5be8d4 + 82c4672 commit 773f11f

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

scientisst/scientisst.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
# if sys.platform == "linux":
55
import socket
6+
import select
67

78
# else:
89
import serial
@@ -64,6 +65,14 @@ def __init__(
6465
self.address = address
6566
self.serial_speed = serial_speed
6667
self.__log = log
68+
69+
self.__serial = None
70+
self.__socket = None
71+
self.__num_chs = 0
72+
self.__api_mode = 1
73+
self.__sample_rate = None
74+
self.__chs = [None] * 8
75+
self.__log = False
6776

6877
# Setup socket in function of com_mode argument
6978
self.__setupSocket()
@@ -284,6 +293,9 @@ def read(self, convert=True, matrix=False):
284293
& 0xFFFFFF
285294
)
286295
byte_it += 3
296+
if convert:
297+
f.mv[index] = ((f.a[index]) * (3.3*2) / (pow(2, 24) - 1))*1000
298+
f.mv[index] = round(f.mv[index], 3)
287299

288300
# If it's an AI channel
289301
else:
@@ -631,12 +643,22 @@ def __recv(self, nrOfBytes, waitall_flag=True):
631643
"""
632644
Receive data
633645
"""
634-
result = None
646+
result = b""
635647
if self.__socket:
636-
if waitall_flag:
637-
result = self.__socket.recv(nrOfBytes, socket.MSG_WAITALL)
638-
else:
639-
result = self.__socket.recv(nrOfBytes)
648+
# We have to use a select here with a single socket because we can't apply a timeout in any other way
649+
ready = select.select([self.__socket], [], [], 5) # 10 seconds timeout
650+
if ready[0]:
651+
if waitall_flag:
652+
remaining = nrOfBytes
653+
while remaining > 0:
654+
ready = select.select([self.__socket], [], [], 10)
655+
if not ready[0]:
656+
raise ContactingDeviceError()
657+
temp = self.__socket.recv(remaining)
658+
result += temp
659+
remaining = nrOfBytes - len(result)
660+
else:
661+
result = self.__socket.recv(nrOfBytes)
640662
elif self.__serial:
641663
result = self.__serial.read(nrOfBytes)
642664
else:

0 commit comments

Comments
 (0)