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.



文献鸟 618 活动


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


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

第六十五期fNIRS Journal Club通知2025/8/30, 10am 兰月教授 陈嘉琳

该文章的声音简介(中文版): 该文章的声音简介(英文版): 在运动想象型脑机接口 (MI-BCI)训练中,不少使用者表现出控制效果不佳,即使经过训练也难以达到理想水平的“BCI 无效性”现象。RDLP
Wanling Zhu
15 sec read

第六十四期fNIRS Journal Club视频 黄润玉

Youtube: https://youtu.be/8lyoR_K2BYA 优酷:https://v.youku.com/v_show/id_XNjQ4MjU2Mzk3Mg==.html 随着全球老龄
Wanling Zhu
14 sec read

第六十四期fNIRS Journal Club通知2025/7/12, 10am 黄润玉

该文章的声音简介(中文版): 该文章的声音简介(英文版): 随着全球老龄化加剧,越来越多老年人面临数字化适应、子女异地独居适应等问题。在青年志愿者人数明显不足以覆盖老龄人口的现实情况下,让老年同龄人进
Wanling Zhu
9 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 to Xu Cui Cancel reply

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