自学内容网 自学内容网

树莓派 发那科 Fanuc Linux跨平台CNC数控数据采集协议,TCP协议包

市面上的数控基本都支持了跨平台通讯,下面以发那科为列讲解跨平台协议如何通讯,无需任何DLL,适配任何开发语言,纯Socket通讯

先上采集图 

握手包:a0 a0 a0 a0 00 01 01 01 00 02 00 02

释放包:a0 a0 a0 a0 00 01 02 01 00 00

部分读取信息代码如下

  public static Socket TcpSocket;
  public Form1()
  {
      InitializeComponent();
  }
  public byte[] ReceiveData()
  {
      byte[] b = new byte[1024];
      int n = TcpSocket.Receive(b);
      byte[] DATA = b.Take(n).ToArray();

      textBox1.Text = BitConverter.ToString(DATA).Replace("-", ""); ;
      return DATA;



  }
  private void button2_Click(object sender, EventArgs e)
  {
      try
      {
          TcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
          TcpSocket.ReceiveTimeout = 1000;
          TcpSocket.Connect(txt_ip.Text, int.Parse(txt_port.Text));
          if (TcpSocket.Connected)
          {

              TcpSocket.Send(SendCommand.HexStringToBytes(SendCommand.握手));
              byte[] Data = ReceiveData();



              MessageBox.Show("ok");
          }

      }
      catch (Exception ex)
      {

      }
  }

  private void button1_Click(object sender, EventArgs e)
  {
      TcpSocket.Send(SendCommand.HexStringToBytes(SendCommand.系统信息));
      byte[] Data = ReceiveData();
      系统信息.Text = FanucSysInfo(Data);
  }
   private void button3_Click(object sender, EventArgs e)
   {
       TcpSocket.Send(SendCommand.HexStringToBytes(SendCommand.断开));
       TcpSocket.Disconnect(false);
   }
    private void button4_Click(object sender, EventArgs e)
   {
       TcpSocket.Send(SendCommand.HexStringToBytes(SendCommand.状态模式));
       byte[] Data = ReceiveData();

       byte[] Datanew = Data.Skip(14).ToArray();
   
       状态模式.Text="模式"+ ((WorkMode)(BitConverter.ToInt16(Datanew, 15))).ToString();



       状态模式.Text+="   状态"+ ((RunStatus)(BitConverter.ToInt16(Datanew, 17))).ToString();


   }


原文地址:https://blog.csdn.net/kuoji0302/article/details/144282671

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!