| package com.zy.common; | 
|   | 
| import HslCommunication.Core.Net.NetHandle; | 
| import HslCommunication.Core.Transfer.DataFormat; | 
| import HslCommunication.Core.Types.ActionOperateExThree; | 
| import HslCommunication.Core.Types.ActionOperateExTwo; | 
| import HslCommunication.Core.Types.OperateResult; | 
| import HslCommunication.Core.Types.OperateResultExOne; | 
| import HslCommunication.Enthernet.ComplexNet.NetComplexClient; | 
| import HslCommunication.Enthernet.PushNet.NetPushClient; | 
| import HslCommunication.Enthernet.SimplifyNet.NetSimplifyClient; | 
| import HslCommunication.ModBus.ModbusTcpNet; | 
| import HslCommunication.Profinet.Melsec.MelsecA1ENet; | 
| import HslCommunication.Profinet.Melsec.MelsecMcAsciiNet; | 
| import HslCommunication.Profinet.Melsec.MelsecMcNet; | 
| import HslCommunication.Profinet.Siemens.SiemensPLCS; | 
| import HslCommunication.Profinet.Siemens.SiemensS7Net; | 
|   | 
| import java.util.Arrays; | 
|   | 
| public class Main { | 
|   | 
| //    public static void main(String[] args) throws InterruptedException { | 
| //        SiemesTest(); | 
| //        try { | 
| //            //Constructor[] aa = Integer.class.getDeclaredConstructors(); | 
| //            //int i = (Integer) (aa[1].newInstance("1")); | 
| //            //System.out.println(Utilities.bytes2HexString( Utilities.getBytes(String.format("%04x",100),"ASCII"))); | 
| //            //System.out.println(i); | 
| // | 
| //            //System.out.println(Arrays.toString("123".split("\\." ))); | 
| //            //ModbusTcpTets(); | 
| //            //MelsecMcNet melsec_net = new MelsecMcNet("192.168.8.12", 6001); | 
| //            //System.out.println(melsec_net.ReadInt16("D100").Content); | 
| // | 
| //            SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200,"192.168.8.12"); | 
| //            OperateResult write = siemensS7Net.Write("M200",(short)200); | 
| // | 
| //            if(!write.IsSuccess){ | 
| //                System.out.println("Write failed:"+write.Message); | 
| //            } | 
| // | 
| //            OperateResultExOne<Short> read = siemensS7Net.ReadInt16("M200"); | 
| //            if(read.IsSuccess){ | 
| //                System.out.println("Value:"+read.Content.toString()); | 
| //            } | 
| //            else { | 
| //                System.out.println("Read failed:"+read.Message); | 
| //            } | 
| //        } | 
| //        catch (Exception ex){ | 
| //            System.out.println(ex.getMessage()); | 
| //        } | 
| //        Thread.sleep(1000); | 
| //    } | 
|   | 
|   | 
|     public static void main(String[] args) { | 
|         SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S300, "192.168.6.1"); | 
|         siemens_net.setSlot((byte) 2); | 
|         siemens_net.setRack((byte) 0); | 
|         OperateResult connect = siemens_net.ConnectServer(); | 
|         if (connect.IsSuccess) { | 
|             System.out.println("connect success!"); | 
|         } else { | 
|             System.out.println("failed:" + connect.Message); | 
|         } | 
|         siemens_net.ConnectClose(); | 
|   | 
|         short[] array = new short[]{9999, 20, 31, 40, 50}; | 
|         OperateResult db100 = siemens_net.Write("DB8.18", array); | 
|         if (db100.IsSuccess) { | 
|             System.out.println("写入成功"); | 
|         } else { | 
|             System.out.println("写入失败"); | 
|         } | 
| //        OperateResultExOne<Short> shortOperateResultExOne = siemens_net.ReadInt16("DB100.2"); | 
| //        System.out.println(shortOperateResultExOne.Content); | 
|   | 
|         OperateResultExOne<byte[]> read = siemens_net.Read("DB8.18", (short) 10); | 
|         if (read.IsSuccess) { | 
| //            for (int i = 0; i<10; i=i+2) { | 
| //                System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, i)); | 
| //            } | 
|             System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 0)); | 
|             System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 2)); | 
|             System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 4)); | 
|             System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 6)); | 
|             System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 8)); | 
|         } | 
|   | 
| //        // 上面是初始化 | 
| //        System.out.println(siemens_net.ReadByte("M100").Content); | 
| // | 
| //        byte m100_byte = siemens_net.ReadByte("M100").Content; | 
| //        short m100_short = siemens_net.ReadInt16("M100").Content; | 
| //        int m100_int = siemens_net.ReadInt32("M100").Content; | 
| //        long m100_long = siemens_net.ReadInt64("M100").Content; | 
| //        float m100_float = siemens_net.ReadFloat("M100").Content; | 
| //        double m100_double = siemens_net.ReadDouble("M100").Content; | 
| //        String m100_string = siemens_net.ReadString("M100",(short) 10).Content; | 
| // | 
| //        siemens_net.Write("M100",(byte) 123); | 
| //        siemens_net.Write("M100",(short) 123); | 
| //        siemens_net.Write("M100",(int) 123); | 
| //        siemens_net.Write("M100",(long) 123); | 
| //        siemens_net.Write("M100", 123.456f); | 
| //        siemens_net.Write("M100", 123.456d); | 
| //        siemens_net.Write("M100","1234567890"); | 
| // | 
| //        OperateResultExOne<byte[]> read = siemens_net.Read( "M100", (short) 10 ); | 
| //        { | 
| //            if(read.IsSuccess) | 
| //            { | 
| //                byte m100 = read.Content[0]; | 
| //                byte m101 = read.Content[1]; | 
| //                byte m102 = read.Content[2]; | 
| //                byte m103 = read.Content[3]; | 
| //                byte m104 = read.Content[4]; | 
| //                byte m105 = read.Content[5]; | 
| //                byte m106 = read.Content[6]; | 
| //                byte m107 = read.Content[7]; | 
| //                byte m108 = read.Content[8]; | 
| //                byte m109 = read.Content[9]; | 
| //            } | 
| //            else | 
| //            { | 
| //                // 发生了异常 | 
| //            } | 
| //        } | 
|   | 
|   | 
|     } | 
|   | 
|     /** | 
|      * 简单网络客户端 | 
|      */ | 
|     public static void NetSimplifyClientTest() { | 
|         NetSimplifyClient client = new NetSimplifyClient("127.0.0.1", 12345); | 
|         OperateResultExOne<String> read = client.ReadFromServer(new NetHandle(2), "测试数据"); | 
|         if (read.IsSuccess) { | 
|             System.out.println(read.Content); | 
|         } else { | 
|             System.out.println("读取失败:" + read.Message); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 三菱   A | 
|      */ | 
|     private static void MelsecA1ETest() { | 
|         MelsecA1ENet melsec_net = new MelsecA1ENet("192.168.0.100", 5000); | 
|         melsec_net.SetPersistentConnection(); | 
|   | 
|         boolean[] M100 = melsec_net.ReadBool("M100", (short) 1).Content;           // 读取M100是否通,十进制地址 | 
|         boolean[] X20 = melsec_net.ReadBool("X20", (short) 1).Content;             // 读取X20是否通,八进制地址 | 
|         boolean[] Y20 = melsec_net.ReadBool("Y20", (short) 1).Content;             // 读取Y20是否通,八进制地址 | 
|         short short_D1000 = melsec_net.ReadInt16("D1000").Content;                 // 读取D1000的short值 | 
|         int int_D1000 = melsec_net.ReadInt32("D1000").Content;                     // 读取D1000-D1001组成的int数据 | 
|         float float_D1000 = melsec_net.ReadFloat("D1000").Content;                 // 读取D1000-D1001组成的float数据 | 
|         long long_D1000 = melsec_net.ReadInt64("D1000").Content;                   // 读取D1000-D1003组成的long数据 | 
|         double double_D1000 = melsec_net.ReadDouble("D1000").Content;              // 读取D1000-D1003组成的double数据 | 
|         String str_D1000 = melsec_net.ReadString("D1000", (short) 10).Content;     // 读取D1000-D1009组成的条码数据 | 
|   | 
|   | 
|         melsec_net.Write("M100", new boolean[]{true});                            // 写入M100为通 | 
|         melsec_net.Write("Y20", new boolean[]{true});                             // 写入Y20为通 | 
|         melsec_net.Write("X20", new boolean[]{true});                             // 写入X20为通 | 
|         melsec_net.Write("D1000", (short) 1234);                                  // 写入D1000  short值  ,W3C0,R3C0 效果是一样的 | 
|         melsec_net.Write("D1000", 1234566);                                // 写入D1000  int值 | 
|         melsec_net.Write("D1000", 123.456f);                               // 写入D1000  float值 | 
|         melsec_net.Write("D1000", 123.456d);                               // 写入D1000  double值 | 
|         melsec_net.Write("D1000", 123456661235123534L);                    // 写入D1000  long值 | 
|         melsec_net.Write("D1000", "K123456789");                           // 写入D1000  string值 | 
|   | 
|   | 
|         OperateResultExOne<boolean[]> read = melsec_net.ReadBool("M100", (short) 10); | 
|         if (read.IsSuccess) { | 
|             boolean m100 = read.Content[0]; | 
|             boolean m101 = read.Content[1]; | 
|             boolean m102 = read.Content[2]; | 
|             boolean m103 = read.Content[3]; | 
|             boolean m104 = read.Content[4]; | 
|             boolean m105 = read.Content[5]; | 
|             boolean m106 = read.Content[6]; | 
|             boolean m107 = read.Content[7]; | 
|             boolean m108 = read.Content[8]; | 
|             boolean m109 = read.Content[9]; | 
|         } else { | 
|             System.out.print("读取失败:" + read.Message); | 
|         } | 
|   | 
|   | 
|         OperateResultExOne<byte[]> read1 = melsec_net.Read("D100", (short) 5); | 
|         if (read1.IsSuccess) { | 
|             short D100 = melsec_net.getByteTransform().TransInt16(read1.Content, 0); | 
|             short D101 = melsec_net.getByteTransform().TransInt16(read1.Content, 2); | 
|             short D102 = melsec_net.getByteTransform().TransInt16(read1.Content, 4); | 
|             short D103 = melsec_net.getByteTransform().TransInt16(read1.Content, 6); | 
|             short D104 = melsec_net.getByteTransform().TransInt16(read1.Content, 8); | 
|         } else { | 
|             System.out.print("读取失败:" + read1.Message); | 
|         } | 
|   | 
|   | 
|         //解析复杂数据 | 
|         OperateResultExOne<byte[]> read3 = melsec_net.Read("D4000", (short) 10); | 
|         if (read3.IsSuccess) { | 
|             double 温度 = melsec_net.getByteTransform().TransInt16(read3.Content, 0) / 10d;//索引很重要 | 
|             double 压力 = melsec_net.getByteTransform().TransInt16(read3.Content, 2) / 100d; | 
|             boolean IsRun = melsec_net.getByteTransform().TransInt16(read3.Content, 4) == 1; | 
|             int 产量 = melsec_net.getByteTransform().TransInt32(read3.Content, 6); | 
|             String 规格 = melsec_net.getByteTransform().TransString(read3.Content, 10, 10, "ascii"); | 
|         } else { | 
|             System.out.print("读取失败:" + read3.Message); | 
|         } | 
|   | 
|         // 写入测试,M100-M104 写入测试 此处写入后M100:通 M101:断 M102:断 M103:通 M104:通 | 
|         boolean[] values = new boolean[]{true, false, false, true, true}; | 
|         OperateResult write = melsec_net.Write("M100", values); | 
|         if (write.IsSuccess) { | 
|             System.out.print("写入成功"); | 
|         } else { | 
|             System.out.print("写入失败:" + write.Message); | 
|         } | 
|   | 
|   | 
|         OperateResultExOne<Boolean> read2 = melsec_net.ReadBool("M100"); | 
|         if (read2.IsSuccess) { | 
|             System.out.println(read2.Content); | 
|         } else { | 
|             System.out.println("读取失败:" + read.Message); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 三菱   Q | 
|      */ | 
|     private static void MelsecTest() { | 
|         MelsecMcNet melsec_net = new MelsecMcNet("192.168.1.192", 6001); | 
|   | 
|   | 
|         boolean[] M100 = melsec_net.ReadBool("M100", (short) 1).Content;            // 读取M100是否通,十进制地址 | 
|         boolean[] X1A0 = melsec_net.ReadBool("X1A0", (short) 1).Content;            // 读取X1A0是否通,十六进制地址 | 
|         boolean[] Y1A0 = melsec_net.ReadBool("Y1A0", (short) 1).Content;            // 读取Y1A0是否通,十六进制地址 | 
|         boolean[] B1A0 = melsec_net.ReadBool("B1A0", (short) 1).Content;            // 读取B1A0是否通,十六进制地址 | 
|         short short_D1000 = melsec_net.ReadInt16("D1000").Content;                 // 读取D1000的short值  ,W3C0,R3C0 效果是一样的 | 
|         int int_D1000 = melsec_net.ReadInt32("D1000").Content;                     // 读取D1000-D1001组成的int数据 | 
|         float float_D1000 = melsec_net.ReadFloat("D1000").Content;                 // 读取D1000-D1001组成的float数据 | 
|         long long_D1000 = melsec_net.ReadInt64("D1000").Content;                   // 读取D1000-D1003组成的long数据 | 
|         double double_D1000 = melsec_net.ReadDouble("D1000").Content;              // 读取D1000-D1003组成的double数据 | 
|         String str_D1000 = melsec_net.ReadString("D1000", (short) 10).Content;     // 读取D1000-D1009组成的条码数据 | 
|   | 
|   | 
|         melsec_net.Write("M100", new boolean[]{true});                          // 写入M100为通 | 
|         melsec_net.Write("Y1A0", new boolean[]{true});                        // 写入Y1A0为通 | 
|         melsec_net.Write("X1A0", new boolean[]{true});                        // 写入X1A0为通 | 
|         melsec_net.Write("B1A0", new boolean[]{true});                        // 写入B1A0为通 | 
|         melsec_net.Write("D1000", (short) 1234);                                   // 写入D1000  short值  ,W3C0,R3C0 效果是一样的 | 
|         melsec_net.Write("D1000", 1234566);                                // 写入D1000  int值 | 
|         melsec_net.Write("D1000", 123.456f);                               // 写入D1000  float值 | 
|         melsec_net.Write("D1000", 123.456d);                               // 写入D1000  double值 | 
|         melsec_net.Write("D1000", 123456661235123534L);                    // 写入D1000  long值 | 
|         melsec_net.Write("D1000", "K123456789");                           // 写入D1000  string值 | 
|   | 
|   | 
|         OperateResultExOne<boolean[]> read = melsec_net.ReadBool("M100", (short) 10); | 
|         if (read.IsSuccess) { | 
|             boolean m100 = read.Content[0]; | 
|             boolean m101 = read.Content[1]; | 
|             boolean m102 = read.Content[2]; | 
|             boolean m103 = read.Content[3]; | 
|             boolean m104 = read.Content[4]; | 
|             boolean m105 = read.Content[5]; | 
|             boolean m106 = read.Content[6]; | 
|             boolean m107 = read.Content[7]; | 
|             boolean m108 = read.Content[8]; | 
|             boolean m109 = read.Content[9]; | 
|         } else { | 
|             System.out.print("读取失败:" + read.Message); | 
|         } | 
|   | 
|   | 
|         OperateResultExOne<byte[]> read1 = melsec_net.Read("D100", (short) 5); | 
|         if (read1.IsSuccess) { | 
|             short D100 = melsec_net.getByteTransform().TransByte(read1.Content, 0); | 
|             short D101 = melsec_net.getByteTransform().TransByte(read1.Content, 2); | 
|             short D102 = melsec_net.getByteTransform().TransByte(read1.Content, 4); | 
|             short D103 = melsec_net.getByteTransform().TransByte(read1.Content, 6); | 
|             short D104 = melsec_net.getByteTransform().TransByte(read1.Content, 8); | 
|         } else { | 
|             System.out.print("读取失败:" + read1.Message); | 
|         } | 
|   | 
|   | 
|         //解析复杂数据 | 
|         OperateResultExOne<byte[]> read3 = melsec_net.Read("D4000", (short) 10); | 
|         if (read3.IsSuccess) { | 
|             double 温度 = melsec_net.getByteTransform().TransInt16(read3.Content, 0) / 10d;//索引很重要 | 
|             double 压力 = melsec_net.getByteTransform().TransInt16(read3.Content, 2) / 100d; | 
|             boolean IsRun = melsec_net.getByteTransform().TransInt16(read3.Content, 4) == 1; | 
|             int 产量 = melsec_net.getByteTransform().TransInt32(read3.Content, 6); | 
|             String 规格 = melsec_net.getByteTransform().TransString(read3.Content, 10, 10, "ascii"); | 
|         } else { | 
|             System.out.print("读取失败:" + read3.Message); | 
|         } | 
|   | 
|         // 写入测试,M100-M104 写入测试 此处写入后M100:通 M101:断 M102:断 M103:通 M104:通 | 
|         boolean[] values = new boolean[]{true, false, false, true, true}; | 
|         OperateResult write = melsec_net.Write("M100", values); | 
|         if (write.IsSuccess) { | 
|             System.out.print("写入成功"); | 
|         } else { | 
|             System.out.print("写入失败:" + write.Message); | 
|         } | 
|   | 
|   | 
|         OperateResultExOne<Boolean> read2 = melsec_net.ReadBool("M100"); | 
|         if (read2.IsSuccess) { | 
|             System.out.println(read2.Content); | 
|         } else { | 
|             System.out.println("读取失败:" + read.Message); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 三菱   Q   ASCII通讯格式 | 
|      */ | 
|     private static void MelsecAsciiTest() { | 
|   | 
|         MelsecMcAsciiNet melsec = new MelsecMcAsciiNet("192.168.1.192", 6001); | 
|         OperateResultExOne<short[]> read = melsec.ReadInt16("D100", (short) 2); | 
|         if (read.IsSuccess) { | 
|             System.out.println(Arrays.toString(read.Content)); | 
|         } else { | 
|             System.out.println(read.ToMessageShowString()); | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 西门子 | 
|      */ | 
|     private static void SiemesTest() { | 
|         SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S1200, "192.168.1.195"); | 
|         OperateResult connect = siemens_net.ConnectServer(); | 
|         if (connect.IsSuccess) { | 
|             System.out.println("connect success!"); | 
|         } else { | 
|             System.out.println("failed:" + connect.Message); | 
|         } | 
|         siemens_net.ConnectClose(); | 
|   | 
|         // 上面是初始化 | 
|         System.out.println(siemens_net.ReadByte("M100").Content); | 
|   | 
|         byte m100_byte = siemens_net.ReadByte("M100").Content; | 
|         short m100_short = siemens_net.ReadInt16("M100").Content; | 
|         int m100_int = siemens_net.ReadInt32("M100").Content; | 
|         long m100_long = siemens_net.ReadInt64("M100").Content; | 
|         float m100_float = siemens_net.ReadFloat("M100").Content; | 
|         double m100_double = siemens_net.ReadDouble("M100").Content; | 
|         String m100_string = siemens_net.ReadString("M100", (short) 10).Content; | 
|   | 
|         siemens_net.Write("M100", (byte) 123); | 
|         siemens_net.Write("M100", (short) 123); | 
|         siemens_net.Write("M100", (int) 123); | 
|         siemens_net.Write("M100", (long) 123); | 
|         siemens_net.Write("M100", 123.456f); | 
|         siemens_net.Write("M100", 123.456d); | 
|         siemens_net.Write("M100", "1234567890"); | 
|   | 
|         OperateResultExOne<byte[]> read = siemens_net.Read("M100", (short) 10); | 
|         { | 
|             if (read.IsSuccess) { | 
|                 byte m100 = read.Content[0]; | 
|                 byte m101 = read.Content[1]; | 
|                 byte m102 = read.Content[2]; | 
|                 byte m103 = read.Content[3]; | 
|                 byte m104 = read.Content[4]; | 
|                 byte m105 = read.Content[5]; | 
|                 byte m106 = read.Content[6]; | 
|                 byte m107 = read.Content[7]; | 
|                 byte m108 = read.Content[8]; | 
|                 byte m109 = read.Content[9]; | 
|             } else { | 
|                 // 发生了异常 | 
|             } | 
|         } | 
|   | 
|     } | 
|   | 
|     private static void PushNetTest() { | 
|         NetPushClient client = new NetPushClient("127.0.0.1", 23467, "A"); | 
|         OperateResult connect = client.CreatePush(new ActionOperateExTwo<NetPushClient, String>() { | 
|             @Override | 
|             public void Action(NetPushClient content1, String content2) { | 
|                 System.out.println(content2); | 
|             } | 
|         }); | 
|         if (connect.IsSuccess) { | 
|             System.out.println("连接成功!"); | 
|         } else { | 
|             System.out.println("连接失败!" + connect.Message); | 
|         } | 
|     } | 
|   | 
|     private static void ModbusTcpTets() { | 
|         ModbusTcpNet modbusTcpNet = new ModbusTcpNet("127.0.0.1", 502, (byte) 0x01); | 
|         // 当你需要指定格式的数据解析时,就需要设置下面的这个信息 | 
|         modbusTcpNet.setDataFormat(DataFormat.BADC); | 
|         OperateResultExOne<Double> read = modbusTcpNet.ReadDouble("s=2;x=4;200"); | 
|         if (read.IsSuccess) { | 
|             System.out.println(read.Content); | 
|         } else { | 
|             System.out.println(read.Message); | 
|         } | 
|   | 
|         modbusTcpNet.Write("100", new int[]{12345, -12345}); | 
|     } | 
|   | 
|     private static void NetComplexClientTest() { | 
|         System.out.println("Hello World!等待10s关闭"); | 
|         NetComplexClient client = new NetComplexClient(); | 
|         client.setIpAddress("127.0.0.1"); | 
|         client.setPort(12346); | 
|         client.setClientAlias("测试1"); | 
|         client.AcceptString = new ActionOperateExThree<NetComplexClient, NetHandle, String>() { | 
|             @Override | 
|             public void Action(NetComplexClient content1, NetHandle content2, String content3) { | 
|                 System.out.println("Handle:" + content2.get_CodeValue() + "  Value:" + content3); | 
|             } | 
|         }; | 
|   | 
|   | 
|         client.ClientStart(); | 
|   | 
| //        client.Send(new NetHandle(1),"asdasdi阿斯达阿斯达"); | 
| //        System.out.println(client.getDelayTime()); | 
| //        Thread.sleep(100000); | 
| //        client.ClientClose(); | 
|   | 
|   | 
|     } | 
|   | 
| } |