tcpip connection with pnet

1 min read

We use TCP/UDP/IP Toolbox 2.0.5 to read and write data from/to a TCPIP port. It’s fast and reliable. The version we use is 2.0.5. Below is a matlab sample script showing how to connect to another computer (called ETG-4000) with TCPIP :

%Connect LAN Port
fid=pnet('tcpconnect','172.17.101.1',51027);

if pnet(fid,'status')==-1
  disp('Connection Failed.');
  return;
end;

%Write to port (i.e. Send Command for ETG-4000)
pnet(fid,'printf','++Hello ETG-4000\r\n');

%Read from port (i.e. Receive Command from ETG-4000)
welcomeMessage = pnet(fid,'read',74); 

disp('Press ETG-4000 START Button!');

%//////////////////////// Get ETG-4000 Data ////////////////////////////////
while(1);
            buff1=pnet(fid,'read',4, 'uint8');
            hsize=bread(buff1,'int32');

            if hsize==12;%Data is comming!
                %disp('hsize is 12');
                %///////////////////////// Data Number ///////////////////////////////
                buff2=pnet(fid,'read',4, 'uint8');
                num=bread(buff2,'int32');%Number of Data
                %disp(['num: ' num]);

                %disp(['num of buff2 ' num2str(num)]);
                %//////////////////////////// Data Size:428 ////////////////////////////
                buff3=pnet(fid,'read',4, 'uint8');
                dsize=bread(buff3,'int32');
                %disp(['dsize ' dsize]);
                %/////////////////////////// Hb Data ////////////////////////////////
                for ch=1:52;%Oxy
                    buff4=pnet(fid,'read',4, 'uint8');
                    oxy(ch,num)=bread(buff4,'single');
                %    disp(oxy(ch,num));
                end;
                for ch=1:52;%Deoxy
                    buff5=pnet(fid,'read',4, 'uint8');
                    deo(ch,num)=bread(buff5,'single');
                end;

                %//////////////////////////// Mark ///////////////////////////////
                buff6=pnet(fid,'read',2, 'uint8');
                mark(num)=bread(buff6,'int16');

                %/////////////////////////// Time ////////////////////////////////
                buff7=pnet(fid,'read',10);
                time(num,:)=char(buff7);
                %disp(time(num,:))

          end;
          %(check status) Push ETG-4000 Stop Button
          stat=pnet(fid,'status');
          if(stat == 0)
            break;
          end
end;

pnet('closeall');
clear fid;

bread is a function to convert binary data to a certain data type:

function y = bread(x, type)
y = typecast(x, type); % work for pnet

One important thing is you need specify the 4th parameter (datatype) when you read data in pnet(‘read’). The default value is ‘char’ and if your incoming data is float, you will find any value in a byte which is bigger than 127 is reset to 255. Specifying the 4th parameter to ‘uint8’ solves this problem. I spend a day to find this.




写作助手,把中式英语变成专业英文


AI writing papers with real references


Want to receive new post notification? 有新文章通知我

第七十六期fNIRS Journal Club通知2026/11/14, 10am 周思远博士

文化经验会影响个体如何理解和解释世界,但短暂跨文化交流能否改变思维?这种变化又体现在哪些认知加工层面?来自四川师范大学的周思远博士将分享一项结合fNIRS超扫描、眼动追踪与自然语言处理的研究,其通过比
Wanling Zhu
10 sec read

第七十五期fNIRS Journal Club视频 张浩云团队

Youtube: https://youtu.be/MB3nIDg4fMo 优酷:https://v.youku.com/v_show/id_XNjU3Nzk4MDA0OA==.html 语言学习本质
Wanling Zhu
19 sec read

第七十五期fNIRS Journal Club通知2026/10/10, 10am 张浩云团队

语言学习本质上是社会性、交互性的过程,但现有对其神经机制的研究大多仅从学习者个体层面开展。来自澳门大学的张浩云团队将分享一项fNIRS超扫描研究,探讨语言学习中师生互动的神经机制,包括师生神经同步如何
Wanling Zhu
14 sec read

4 Replies to “tcpip connection with pnet”

  1. Hi Xu!

    Thanks for the nice script! Works very well 🙂

    Do you know if it is possible to start and stop the ETG-4000 by using TCP/IP? I want my stimulus program to trigger the start, instead of having someone pressing the ETG-4000 START button…

  2. Dear Xu Cui,
    Tnank you for your script.But I have some trouble here.
    Can it work on the win32 system? Does it need to mix matlab and C plus programming, since my error is : Invalid MEX-file ‘F:\program_BCI\2011-3\tcp_udp_ip\pnet.mexw32’.
    My matlab version is 7.1. win32 system
    Do you have any suggestion?
    Thank you very much!!

  3. I’m not sure. You don’t need C programming though. MEX file is always a nightmare – it is so system dependent. You may want to contact the original author of pnet.

Leave a Reply

Your email address will not be published. Required fields are marked *