Sending data via TCP from Matlab to c
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi all I am trying to send data from matlab to c. In order to do so I am using the function fwrite.
My question is : how to send it as an struct ? for example
Msg.Size = int32(8);
Msg.Data = '12345678';
t = tcpip('10.1.4.34');
set(t, 'RemotePort', 55555)
set(t, 'InputBufferSize', 30000)
fopen(t)
It works OK When I execute the following
fwrite(t,Msg.Size,'int32');
fwrite(t,Msg.Data,'char');
How can I send the whole struct Msg ?
Any help will be appreciated.
0 Commenti
Risposta accettata
Walter Roberson
il 16 Feb 2011
Instead of writing the data directly to tcp, save it in a uint8 variable (use typecast() as necessary.) Once you have put together a block to send, the size of the uint8 variable is the message length and the uint8 array is the data. (Sometimes the message length has to include the size of the bytes used to represent the length.)
If you are working on the same system, you may find using memory mapping to be easier than tcp. See here
Più risposte (2)
Walter Roberson
il 16 Feb 2011
You could loop through the fieldnames of the structure, detecting the type of the field and writing in the appropriate format, along with enough meta-information to be able to reconstruct it on the other side.
There are, however, some things that this cannot be applied to, such as certain kinds of objects. And sending a cell array of mixed data types gets you in to a mess.
Sometimes the easiest thing to do is to save() your data to a .mat file, transmit the .mat file as binary, write it out to disk, and load() it on the other side.
My understanding is that there are "serialize" methods for a number of objects, but it is not well documented as to how to access them.
0 Commenti
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!