package com.mes; import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; import com.github.xingshuangs.iot.protocol.s7.service.S7PLC; import com.mes.common.JsonConversion; import com.mes.common.ReadFile; import com.mes.connect.IndustrialInterface.Api; import com.mes.connect.IndustrialInterface.IndustrialClient; import com.mes.connect.Thread.MachineThread; import com.mes.connect.entity.LogicConfig; import com.mes.connect.entity.PlcParameters; import com.mes.connect.s7.S7Client; import com.mes.connect.s7.S7ClientOld; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; import java.io.IOException; import java.sql.Types; import java.util.*; /** * @Author : yanzhixin * @Date: 2024/3/27 16:37 * @Description: */ @Slf4j @RunWith(SpringRunner.class) @SpringBootTest(classes = plcConnectModuleApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class plcConnectModuleApplicationTest { @Autowired Api api; @Test public void testb() { //byte[] resultValues=new byte[]{99, 23, 67, 76, 45, 49, 48, 45, 56, 48, 47, 55, 48, 67, 76, 45, 51, 45, 55, 51}; String s="白玻"; log.info(s); } @Test public void testReadJson() { try { LogicConfig logicConfig=JsonConversion.jsonToObjectByJackson(ReadFile.readJson("shelfLogic.json").toString(), LogicConfig.class); PlcParameters plcParameters=JsonConversion.jsonToObjectByJackson(ReadFile.readJson("shelf.json").toString(), PlcParameters.class); log.info("{},{}",logicConfig,plcParameters); }catch (Exception e) { } } @Test public void testReadS7Old() throws IOException { S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191", 102, 0, 0); s7PLC.connect(); int value= s7PLC.readUInt16("DB8.6"); log.info("{},{}",value,s7PLC.checkConnected()); s7PLC.close(); } @Test public void testReadS7OldClient() throws IOException { IndustrialClient client = new S7ClientOld("S1500","10.153.19.191", 102, 0, 1); client.connect(); int value=client.readRegister("S7.DB8.DBW6"); log.info("{}",value); client.disconnect(); } @Test public void testReadS7() throws IOException { IndustrialClient client=new S7Client("10.153.19.42", 102, 0, 1);; client.connect(); // 连接到 PLC System.out.println("成功连接到 PLC"); // // 读取单个位 // boolean bitValue = client.readBit("S7.DB1.0"); // System.out.println("DB1.DBX0.0 的值: " + bitValue); // // // 写入单个位 // client.writeBit("DB1.DBX0.1", true); // System.out.println("已将 DB1.DBX0.1 设置为 true"); // 读取单个寄存器 (Word) int registerValue = client.readRegister("DB1.DBW2"); System.out.println("DB1.DBW2 的值: " + registerValue); // // // 写入单个寄存器 // client.writeRegister("DB1.DBW4", 12345); // System.out.println("已将 DB1.DBW4 设置为 12345"); // // // 读取多个寄存器 // int[] registers = client.readRegisters("DB1.DBW6", 3); // System.out.println("DB1.DBW6-DB1.DBW11 的值: " + // registers[0] + ", " + // registers[1] + ", " + // registers[2]); // // // 写入多个寄存器 // int[] values = {6789, 101112, 131415}; // client.writeRegisters("DB1.DBW12", values); // System.out.println("已写入多个寄存器值"); // // // 读取浮点数 // float floatValue = client.readFloat("DB1.DBD18"); // System.out.println("DB1.DBD18 的浮点值: " + floatValue); // // // 写入浮点数 // client.writeFloat("DB1.DBD22", 3.14159f); // System.out.println("已将 DB1.DBD22 设置为 3.14159"); // // // 读取字符串 // String stringValue = client.readString("DB1.DBW26", 10); // System.out.println("DB1.DBW26 开始的字符串: " + stringValue); // // // 写入字符串 // client.writeString("DB1.DBW36", "Hello PLC"); // System.out.println("已写入字符串 'Hello PLC'"); } @Test public void testApi() { //Http接口测试 // Map data=new HashMap<>(); // data.put("method","POST"); // String resultHttp[]= api.httpApi("http://localhost:8082/account/testApi",data); // log.info("{}",resultHttp); // 查询带单个参数的视图 // Map params = new HashMap<>(); // params.put("width", 699); // 参数名与SQL中的列名一致 // String resultView[]= api.viewApi("procedurename",null); // log.info("{}",resultView); // 示例 调用testProcedure存储过程 // Map params = new HashMap<>(); // params.put("dataParmars", "测试数据"); // 输入参数,对应存储过程中的IN参数 // Map outParams = new HashMap<>(); // outParams.put("messagedate", Types.VARCHAR); // 输出参数,对应存储过程中的OUT参数 // String[] resultProcedure = api.procedureAPI("testProcedure", params, outParams); // // 打印执行结果 // log.info("{}存储过程执行结果:{}",params,resultProcedure); } @Test public void testMainThread() { Thread thread = new Thread(() -> { while (true) { log.info(new Date().toString()); } }); thread.start(); } @Test public void testMain() { } }