Я хочу общаться между сценарием Matlab и приложением Qt (C ++) на одном компьютере. В Qt вы создаете QLocalServer
объект и направить его на прослушивание соединений с определенным дескриптором, таким как ‘my_server’ (может быть любым).
В Matlab я посмотрел на то, что похоже на соответствующие списки MatlabCentral, такие как этот а также этот, но ни в том, ни в другом случае я не могу заставить их работать, и я даже не вижу, как это сделать — нет возможности указать дескриптор. Если я просто скажу им слушать локальный хост, они не подключаются.
Так что я могу сделать здесь? Делать это через MEX-файл, возможно, возможно, но я оставляю это как последнее средство. Также я застрял с R2009b, поэтому у меня нет udp
Команда в Matlab.
Попробуйте набор инструментов от Peter Rydesäter: http://www.mathworks.com/matlabcentral/fileexchange/345-tcpudpip-toolbox-2-0-6 довольно старый, но все еще работает.
Пример с двумя экземплярами Matlab:
Отправитель:
function sendudp(host, port, data)
udp=pnet('udpsocket',1111); % open local socket on port 1111
pnet(udp,'write',data); % write data to buffer
pnet(udp,'writepacket',host,port); % send udp-packet
pnet(udp,'close'); % close connection
end
Получатель:
sock = pnet('udpsocket', 950) % open socket on port 950
Отправитель:
sendudp('127.0.0.1', 950, 'Hello World') % Call function defined above, send Hello World to localhost, port 950
Получатель:
size = pnet(sock, 'readpacket'); % Get Data from sock, and load to buffer
data = pnet(sock, 'read'); % Read Data from buffer
Так что получается, что Qt’s QLocalServer
/QLocalSocket
не подходящие классы для этого, несмотря на их имена. Скорее, файлы MatlabCentral, на которые я ссылался (и, вероятно, также упомянутый @Frederik, хотя я не мог сразу заставить это работать), прекрасно работают, если вы создаете QTcpServer
и соответствующий QTcpSocket
и установите на обоих концах хост localhost и порт 4444 (или что-то еще). Мне было очень легко построить то, что мне нужно, после Qt Петлевой пример.