matlab - 从win64到win32的pnet通信

标签 matlab mex win64 psychtoolbox

我使用 pnet tcp/udp toolbox ) 以及 psychtoolbox在不同机器上的两个 matlab 实例之间进行通信。我的一台机器是运行 matlab 2010b 的 32 位 win7。另一个是运行 matlab 2012a 的 64 位 win 7。我在将数据从一台计算机传输到另一台计算机时遇到问题。

实验一 :从 64 位计算机运行 udp_send_demo,同时从 32 位计算机运行 udp_plotter_demo。预期结果:32 位计算机绘制数据,等待键盘输入。如果输入 Kb,则关闭图形并结束演示。 64位完成发送并停止演示。实际结果:64 位的行为应如此。 32 位计算机绘图但挂起并拒绝关闭演示。它不响应任何键盘输入,必须强制关闭。

实验二 : 以 32 位发送和 64 位读取反向运行上述实验。预期结果:64 位绘图并等待键盘输入。如果找到 kb 输入,则停止演示。实际结果是 64 位 matlab 崩溃,声称 mex 文件中存在分段违规。它显示一个堆栈跟踪(我在最后附加了它的一部分)。

玩弄端口号没有区别。重新编译“pnet.c”源文件而不是使用预编译的 mex 没有区别。
问题 : 有人试过这样的吗?你让它工作了吗?你能建议一些事情来尝试让它工作而不必在我的 Win64 计算机上安装 32 位 matlab 吗?

=============

代码:

服务器端:

udp_send_demo('sin(0:0.1:6)',clientIPStr,portToListen)

客户端:
udp_plotter_demo(portToListen)

==============

堆栈跟踪

2012 年 9 月 29 日星期六 16:41:11 检测到分段违规

配置:

崩溃解码:禁用

默认编码:windows-1252

MATLAB 根目录:C:\Program Files\MATLAB\R2012a

MATLAB 版本:7.14.0.739 (R2012a)

操作系统:微软 window 7

处理器 ID : x86 Family 6 Model 58 Stepping 9, GenuineIntel

虚拟机:Java 1.6.0_17-b04 与 Sun Microsystems Inc. Java HotSpot(TM) 64 位服务器 VM 混合模式

窗口系统:版本 6.1(内部版本 7601:Service Pack 1)

故障数:1

异常终止:
分段违规

寄存器状态(来自故障):
RAX = 0000000000000000 RBX = 0000000000000000

RCX = 000000005d0df7d7 RDX = 0000000000000001

RSP = 00000000040671b0 RBP = 0000000004067289

RSI = 000000000000003d RDI = 000000000000003d

R8 = 000000005d0df7d6 R9 = 000050490ee40167

R10 = 000000000000003d R11 = 0000000000000000

R12 = 0000000000000008 R13 = 000007fefb997678

R14 = 0000000000000002 R15 = 0000000000000002

RIP = 000007fefb99238a EFL = 00010202

CS = 0033 FS = 0053 GS = 002b

堆栈跟踪(来自故障):

[0] 0x000007fefb99238a C:\Users\ephys-data\Desktop\temp\tcp_udp_ip\pnet.mexw64+00009098 (perror+004298)

[1] 0x000007fefb99389b C:\Users\ephys-data\Desktop\temp\tcp_udp_ip\pnet.mexw64+00014491 (mexFunction+001979)

[2] 0x0000000074f10f63 C:\Program Files\MATLAB\R2012a\bin\win64\libmex.dll+00069475 (mexRunMexFile+000131)

[3] 0x0000000074f0fce2 C:\Program Files\MATLAB\R2012a\bin\win64\libmex.dll+00064738 (inSwapMexfileReader+000226)

[4] 0x0000000074f0fe58 C:\Program Files\MATLAB\R2012a\bin\win64\libmex.dll+00065112 (inSwapMexfileReader+000600)

[5] 0x0000000074e4b046 C:\Program Files\MATLAB\R2012a\bin\win64\m_dispatcher.dll+00045126 (Mfh_file::dispatch_fh+000486)

....更多东西....

运行 MEX 文件时检测到此错误。如果 MEX 文件不是 MathWorks 的官方函数,请检查其源代码是否有错误。有关调试 MEX 文件的信息,请参阅外部接口(interface)指南。

如果此问题可重现,请通过以下方式提交服务请求:....

技术支持工程师可能会与您联系以提供更多信息。

感谢您的帮助。

谢谢

-b

最佳答案

我在 psychtoolbox 写了乐于助人的人。显然,该错误已在 psychtoolbox 的“测试版”中被捕获并解决。如果您拥有最新最好的 psychtoolbox,请运行 UpdatePsychtoolbox 以获得良好的 sleep 。见 here

关于matlab - 从win64到win32的pnet通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657684/

相关文章:

c++ - mex : undefined reference to ".." 错误

c - 为什么这段代码没有调用 Matlab 函数

c - 虚拟分配粒度和页面大小

manifest - msvcp90.dll 依赖于错误的 msvcr90.dll?

matlab - 在 MATLAB 的元胞数组中添加函数处理程序

java - 从 MATLAB 调用 Java

matlab - 就地编辑以防止通过写时复制重新分配

windows - 如何检索 system32 或 SysWOW64 的正确路径?

python - 在 scipy.io.savemat 中以不同的数值数据格式保存 mat 文件

arrays - 将数字数组转换为二进制数