You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:通过TCP向函数发生器发送大自定义波形失败

大波形TCP传输至函数发生器失败问题

我通过TCP连接向函数发生器发送最多50000个数据点的自定义大波形时遇到异常:小波形(≤200个数据点)可正常传输,但大波形无法完整写入EMEMory——要么仅部分数据写入成功,要么设备加载的仍是旧波形。推测问题出在socket.socket.sendall()函数处理大数据量的环节。

使用的是OWON XDG系列波形发生器的SCPI协议文档。

相关代码片段:

def load_waveform(self, waveform):
        """
        Load a custom waveform into the function generator.
        """
        waveform = np.round(waveform)
        waveform = [int(val) for val in waveform]

        data = bytearray()
        for val in waveform:
            data.extend(val.to_bytes(2, byteorder='little', signed=True))

        byte_count = len(data)
        header = f"#{len(str(byte_count))}{byte_count}".encode()

        chunk_size = 20  # Sending data in larger chunks for efficiency
        start_time = time.time()

        try:
            self._connection.sendall(b"DATA:DATA EMEMory," + header)
            for i in range(0, len(data), chunk_size):
                self._connection.sendall(data[i:i + chunk_size])
            print("--- %s seconds ---" % (time.time() - start_time))
        except Exception as e:
            print(f"Error loading waveform: {e}")

已尝试但无效的方法:

  • 调整数据块大小并在每个块发送后添加小延迟,试图避免设备缓冲区过载
  • 为部分发送或错误情况添加重试机制
  • 在发送头部数据后添加延迟,确保设备处理完头部再发送波形数据

内容的提问来源于stack exchange,提问作者stnrl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:52:27