Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 从win64到win32的pnet通信_Matlab_Mex_Win64_Psychtoolbox - Fatal编程技术网

Matlab 从win64到win32的pnet通信

Matlab 从win64到win32的pnet通信,matlab,mex,win64,psychtoolbox,Matlab,Mex,Win64,Psychtoolbox,我使用)以及在不同机器中的两个matlab实例之间进行通信。我的一台机器是运行Matlab2010b的32位win7。另一个是运行Matlab2012a的64位Win7。我在将数据从一台计算机传输到另一台计算机时遇到问题 实验1:从64位计算机运行udp\u发送\u演示,同时从32位计算机运行udp\u绘图仪\u演示。预期结果:32位计算机打印数据,等待键盘输入。如果输入Kb,请关闭图形并结束演示。64位完成发送并停止演示。实际结果:64位正常工作。32位计算机绘图,但挂起并拒绝关闭演示。它不响

我使用)以及在不同机器中的两个matlab实例之间进行通信。我的一台机器是运行Matlab2010b的32位win7。另一个是运行Matlab2012a的64位Win7。我在将数据从一台计算机传输到另一台计算机时遇到问题

实验1:从64位计算机运行udp\u发送\u演示,同时从32位计算机运行udp\u绘图仪\u演示。预期结果:32位计算机打印数据,等待键盘输入。如果输入Kb,请关闭图形并结束演示。64位完成发送并停止演示。实际结果:64位正常工作。32位计算机绘图,但挂起并拒绝关闭演示。它不响应任何键盘输入,必须强制关闭

实验2:以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)
客户端:

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)

操作系统:Microsoft Windows 7

处理器ID:x86系列6型号58 Stepping 9,GenuineIntel

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

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

故障计数:1

异常终止: 分段冲突

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

RCX=00000000 5D0DF7D7 RDX=000000000000000 1

RSP=000000000 40671B0 RBP=000000000 4067289

RSI=00000000000000 3D RDI=00000000000000 3D

R8=00000000 5D0DF7D6 R9=000050490ee40167

R10=00000000000000 3D 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\u udp\u 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_文件::dispatch_fh+000486)

……更多的东西

在运行MEX文件时检测到此错误。如果MEX文件不是正式的MathWorks函数,请检查其源代码是否存在错误。有关调试MEX文件的信息,请参阅《外部接口指南》

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

技术支持工程师可能会向您提供更多信息

谢谢你的帮助


谢谢


-b

我在psychtoolbox给那些乐于助人的人写信。显然,该漏洞是在psychtoolbox的“beta”版本中发现并解决的。如果你有最新最棒的psychtoolbox,那就运行UpdateSpychtoolbox来睡个好觉。请参见

您是否自己编译了.mexw64文件?我在pnet发行版中没有看到,只有.mexw32。最新的psychtoolbox附带了一个预编译的.mexw64。然而,我确实尝试自己重新编译它。它没有任何区别您是否也尝试过在两台32位或两台x64计算机之间运行此功能,以确保位差异是问题所在,而不是始终是读卡器出了问题?我认为您对读者的预期行为可能有点不正常:
udp\u plotter\u demo
code循环调用pnet('readpacket'),我认为默认情况下会无限期地阻止它。由于它在mex文件中被阻止,因此在等待另一个数据包时,它可能不会响应键盘输入。请注意,注释中说“使用timeout来避免永远阻塞”,但实际的函数调用没有传递超时值。我是说,segfault肯定很糟糕。但是64->32案例的行为可能与所写的一样。要测试它,请尝试使用不同的输入对它运行多次
udp\u send\u demo
,查看是否得到多个绘图。如果你这样做了,它会被写在
pnet(udp,'readpacket')
中,实验2中的x64崩溃是另一个问题。x64版本什么时候崩溃?第一次运行
udp\u绘图仪\u演示
时,还是在使用
udp\u发送\u演示
发送数据后?