Демонстрация клиента ПЛК Python TCP / IP на языке Java

У меня есть демонстрация клиента TCP / IP Siemens s1200 plc, сделанная с помощью Python. Я нашел его на Youtube: https://www.youtube.com/watch?v=5KLLeQeB2EY

У меня вопрос, как перевести этот код в Java-программу. В настоящее время я работаю над проектом по чтению данных с plc на клиент java (а затем с java на plc), и в настоящее время я немного застрял в этом проекте.

Эта демонстрация python записывает строку testi1 на консоли при запуске, и я ищу дополнительные данные из блока данных output1. Изображение прилагаемого блока данных.

Любезно прошу о помощи.

Ваше здоровье


import socket

HOST = '192.168.0.1' #plc ip
PORT = 2000 # plc port

if __name__ == "__main__":
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as conn:
        conn.connect((HOST, PORT))
        print(conn.recv(1024).decode('UTF-8', errors='ignore')) #.decode('UTF-8', errors='ignore') erases some nonsense output


вывод блока данных1


person Znile    schedule 29.06.2020    source источник


Ответы (1)


Простая модель Ping

Клиентский класс

import java.io.OutputStream;
import java.io.InputStream
import java.net.InetSocketAddress;
import java.net.Socket;


class Client 
{
 public static void main(String args[])
 {
  try(Socket client=new Socket())
  {
   client.connect(new InetSocketAddress("localhost",8000));

   Scanner scanner=new Scanner(System.in);
   String input;

 
   try(OutputStream out=client.getOutputStream();
        InputStream in=client.getInputStream())
   {
    while(!(input=scanner.nextLine()).equals("Bye"))
    { 
     out.write(input.getBytes());

     System.out.println("Server said "+new String(in.readAllBytes()));
    }
   }
   catch(IOException ex){ex.printStackTrace();}     
  }
  catch(IOException ex){ex.printStackTrace();}
 }
}

Класс сервера

import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;


class Server 
{
 public static void main(String args[])
 {
  try(ServerSocket server=new ServerSocket())
  {
   server.bind(new InetSocketAddress("localhost",8000));
   System.out.println("Server Online");
   
   try(Socket client=server.accept())
   {
     try(InputStream in=client.getInputStream();
         OutputStream out=client.getOutputStream())
     {         
      while(true)
      { 
       String response=new String(in.readAllBytes());
       if(response.equals("Bye")){break;}
       else{out.write(("Echo "+response).getBytes());}
      }
     }
   catch(IOException ex){ex.printStackTrace();}
  }
  catch(IOException ex){ex.printStackTrace();}
 }
}

Вы можете смоделировать это для своей цели

person Sync it    schedule 29.06.2020