def build_array(btag, eom, chunk): size = len(chunk) return (struct.pack('BBBx', MsgID.dev_dep_msg_out, btag, ~btag & 0xFF) + struct.pack("<LBxxx", size, eom) + chunk + b'\0' * ((4 - size) % 4))
def build_array(btag, transfer_size, term_char=None): """ :param transfer_size: :param btag: :param term_char: :return: """ if term_char is None: transfer_attributes = 0 term_char = 0 else: transfer_attributes = 2 return struct.pack('BBBx', MsgID.request_dev_dep_msg_in, btag, ~btag & 0xFF) + \ struct.pack("<LBBxx", transfer_size, transfer_attributes, term_char)
def _sendrecord(sock, record, fragsize=None, timeout=None): logger.debug('Sending record through %s: %r', sock, record) if timeout is not None: r, w, x = select.select([], [sock], [], timeout) if sock not in w: msg = ("socket.timeout: The instrument seems to have stopped " "responding.") raise socket.timeout(msg) last = False if not fragsize: fragsize = 0x7fffffff while not last: record_len = len(record) if record_len <= fragsize: fragsize = record_len last = True if last: fragsize = fragsize | 0x80000000 header = struct.pack(">I", fragsize) sock.send(header + record[:fragsize]) record = record[fragsize:]
def sendfrag(sock, last, frag): x = len(frag) if last: x = x | 0x80000000 header = struct.pack(">I", x) sock.send(header + frag)