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.




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


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

第六十七期fNIRS Journal Club通知2025/11/1, 10am 肖雅琼教授团队

近年来,越来越多的研究关注自闭症谱系障碍 (ASD)儿童的大脑功能连接异常。但这些异常连接在时间维度上如何变化?又是否与儿童的症状严重程度和认知能力有关?深圳理工大学的肖雅琼教授使用功能性近红外光谱
Wanling Zhu
13 sec read

第六十六期fNIRS Journal Club视频 李洪博士 牛海晶教授

Youtube: https://youtu.be/gkXdJkOalNY 优酷:https://v.youku.com/v_show/id_XNjUwMzg3MzQ2MA==.html 随着老龄化加
Wanling Zhu
13 sec read

fNIRS Frontier Weekly Report (free service)

Subscription Link: https://www.storkapp.me/readingguide/ If you are interested in the fNIRS (Functional Near-Infrared Spectroscopy) field, Stork is now offering a free service: every week, we will collect and summarize the fNIRS-related literature pu
Xu Cui
3 min 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 *