|
@@ -0,0 +1,188 @@
|
|
|
+package com.jpsoft.education.task;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.thread.ThreadUtil;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.net.InetAddress;
|
|
|
+import java.net.Socket;
|
|
|
+import java.util.Locale;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+
|
|
|
+//*/5 * * * * ? 每五秒一次
|
|
|
+//0 */5 * * * ? 每五分一次
|
|
|
+@Slf4j
|
|
|
+@Component
|
|
|
+public class HeartTaskDiagram {
|
|
|
+ // @Scheduled(cron ="*/29 * * * * ?")
|
|
|
+ @Scheduled(cron ="0 */10 * * * ?")
|
|
|
+ //@Scheduled(cron ="0 */4 * * * ?")
|
|
|
+ public void task(){
|
|
|
+
|
|
|
+ System.out.println("1111111111---HeartTaskDiagram---111111111111");
|
|
|
+
|
|
|
+ int pos =50188;
|
|
|
+ ExecutorService executor = ThreadUtil.newExecutor(1000);
|
|
|
+ for(int i=1;i<100;i++){
|
|
|
+ String heartStr = Integer.toHexString(i + pos);
|
|
|
+ heartStr = heartStr.toUpperCase(Locale.ROOT);
|
|
|
+ System.out.println("i:" + i + "---" + heartStr);
|
|
|
+ log.info("i:" + i + "---" + "客户端发送数据:" + heartStr + "-----" + DateUtil.now());
|
|
|
+ String finalHeartStr = heartStr;
|
|
|
+ executor.execute(() -> {
|
|
|
+ send(finalHeartStr);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ public static byte[] hexString2Bytes(String src) {
|
|
|
+ int l = src.length() / 2;
|
|
|
+ byte[] ret = new byte[l];
|
|
|
+ for (int i = 0; i < l; i++) {
|
|
|
+ ret[i] = (byte) Integer.valueOf(src.substring(i * 2, i * 2 + 2), 16).byteValue();
|
|
|
+ }
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ @Async
|
|
|
+ void send(String heartStr) {
|
|
|
+ System.out.println("客户端发送数据:"+ heartStr+"-----"+ DateUtil.now());
|
|
|
+ log.warn("客户端发送数据:"+ heartStr+"-----"+ DateUtil.now());
|
|
|
+ Socket socket = null;
|
|
|
+ OutputStream os = null;
|
|
|
+ try {
|
|
|
+ InetAddress inet = InetAddress.getByName("127.0.0.1");
|
|
|
+ // InetAddress inet = InetAddress.getByName("42.56.120.92");
|
|
|
+ socket = new Socket(inet,9610);//inet是服务端ip
|
|
|
+ os = socket.getOutputStream();
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ os.write(hexString2Bytes(heartStr));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //位移值250点第1段数据为
|
|
|
+ os.write(hexString2Bytes( "0103C400000000000100030006000B00100017001F00270031003C00480054006200710080009000A100B300C600DA00EE01080118012F0146015D0176018F01A801C201DC01F70213022F024B0268028502A302C102DF02FE031D033D035C037C039C03BD03DD03FD041E043F0460048104A204C304E40505052605460567058805A805C905E90609062906490668068806A706C606E407030721073F075C0779079607B207CE07E90804081F08390853086C0885089D08B508CC08E308F9090E09230938094BF60C"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //位移值250点第2段数据为
|
|
|
+ os.write(hexString2Bytes( "0103C0095E09700982099309A309B209C109CF09DD09E909F50A010A0B0A150A1E0A270A2F0A360A3C0A420A470A4B0A4F0A520A550A560A570A580A580A580A560A550A520A500A4C0A480A440A3F0A390A330A2C0A250A1D0A150A0C0A0309FA09EF09E509D909CE09C209B509A8099A098C097E096F095F094F093F092F091D090C08F908E708D408C008AD08980883086E08580842082B081407FC07E407CB07B20799077F07640749072E071206F506D906BB069E0680066106420622060305E2F957"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-位移值250点第3段数据为
|
|
|
+ os.write(hexString2Bytes( "01037005C105A0057F055D053B051804F604D204AF048C04680444042003FC03D703B3038F036B03470323030002DC02BA0297027502530231021001F001D001B1019301750159013D0123010900F100DA00C400AF009B00890077006700570049003C00310027001D0015000F000900050000C46B"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-载荷值250点第1段数据为
|
|
|
+ os.write(hexString2Bytes( "0103BC0F510F450F5D0F600F1D0F360F5B0F7D0F910FAA0FAE0FD2102A1056108310AF10DB1100112E118011F412471276128E129F12DA13081347139113BB13E91408141F144F14721485148C148F1478145D1440141E140013E313CF13CC13AD139C1393138D139313A713BC13C513EA13FA140B142814331440144714461448144414371420141713F513D613C413AB138E13711358135013451342134713471342133E133C133C13371337133B1338133013231314130C12FF12F212EB4C25"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-载荷值250点第2段数据为
|
|
|
+ os.write(hexString2Bytes( "0103B812EE12DC12BA1294127512721267125912491253124F123E122211F711D411A7116A112A10FC10D610B210A91085105E103D100C0FE00FB00F780F400F0F0EDA0EA10E690E480E2C0E0F0DE80D950D4F0D1C0CFD0CB90C700C2F0C030BDE0BBF0BA60B920B710B480B320B4E0B6A0B8F0BBC0BEE0C0F0C250C320C380C380C3F0C460C450C3A0C200BFF0BDA0BA50B7F0B650B550B460B3F0B350B270B270B240B2E0B460B570B780B910B9E0BA60BA50B9F0B9B0BA60B9AFF5C"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-载荷值250点第3段数据为
|
|
|
+ os.write(hexString2Bytes( "0103800B8E0B820B6E0B500B360B200B0A0B030B040B080B060B070B110B1E0B270B290B330B470B650B7F0B900B990B9A0BAD0BBC0BC50BC50BCD0BD40BDD0BE90BE70BF50C090C1A0C200C2F0C380C3B0C420C680C9A0CCA0CD40CDB0CD70CCF0CCF0C220B260A450A420A870ACB0B4D0C7F0D550DDC0E2C0E6A0E0C0E1C0E8B0F3E1EBC"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-电流值250点第1段数据为
|
|
|
+ os.write(hexString2Bytes( "0103B40D9C0DA30DAA0DA40D9E0D920D870D5A0D2D0D080CE30CD40CC60CB30CA00C9A0C940C900C8D0C7A0C670C670C680C650C620C560C4B0C440C3D0C350C2E0C1B0C090BFF0BF50BEF0BE90BE40BE00BDF0BDE0BDE0BDE0BD90BD50BDF0BE90BEA0BEC0BE20BD90BDD0BE10BE60BEB0BE50BDF0BDF0BE00BE60BED0BEC0BEC0BF40BFC0BFC0BFC0BF10BE60BE10BDC0BDA0BD90BD70BD50BD80BDC0BDE0BE00C0A0C350C4C0C630C730C830C8D0C980C950C920CA48579"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-电流值250点第2段数据为
|
|
|
+ os.write(hexString2Bytes( "0103B00CB60CD50CF50D140D330D4C0D660D780D8B0D8B0D8B0DAF0DD40DEF0E0B0E270E430E790EAF0ED00EF20EF40EF70F220F4E0F5D0F6C0F780F840F870F8B0F6A0F490F2A0F0B0F200F350F2A0F1F0F1D0F1B0F140F0E0EEF0ED10EB60E9B0E900E860E5B0E310E140DF80DD90DBB0D7D0D400D130CE70CD20CBD0CA30C890C740C5F0C500C420C200BFE0BF60BEF0BE90BE40BE70BEA0C000C170C0A0BFD0BF00BE30BE80BEE0BE60BDF0BE00BE10BDFFB90"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-电流值250点第3段数据为
|
|
|
+ os.write(hexString2Bytes( "0103900BDE0BD80BD30BD30BD40BE50BF60C040C120C060BFB0BFC0BFE0C060C0E0C120C160C1B0C210C260C2C0C2A0C280C340C400C510C620C6B0C740C8D0CA70CB10CBB0CB60CB20CC20CD20CEC0D060D170D280D430D5F0D5D0D5B0D630D6B0C6A0C750C7D0C7F0C8E0CAD0CBD0CC10CD70CDA0CE70D060D390D3E0D420D490D490D520D680D7F0D7F0D990DA40DAF0DD2AD81"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-功率值250点第1段数据为
|
|
|
+ os.write(hexString2Bytes( "0103AC1B451B491B4D1B491B461B3F1B391B1F1B051AF01ADC1AD31ACB1AC01AB51AB41AB31AB11AAF1AA41A991A9A1A9C1A9A1A981A911A8B1A871A831A7F1A7B1A701A661A611A5C1A581A551A521A501A501A511A511A511A4E1A4C1A521A591A5A1A5B1A551A501A521A551A581A5C1A581A551A551A561A5A1A5E1A5D1A5D1A621A671A671A681A611A5B1A581A561A551A541A531A521A541A561A561A571A6F1A881A951AA21AAA1AB21AB8FC31"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-功率值250点第2段数据为
|
|
|
+ os.write(hexString2Bytes( "0103A81ABE1ABC1ABB1AC31ACB1ADD1AEF1B011B131B201B2D1B381B431B431B431B561B691B781B881B981BA81BC61BE41BF71C0A1C0B1C0D1C261C3F1C461C4D1C531C5A1C5C1C5E1C491C351C231C121C1E1C2A1C231C1D1C1C1C1B1C171C131C021BF21BE31BD41BCE1BC81BB01B981B871B771B661B551B331B111AF81ADF1AD31AC71ABB1AAF1AA31A971A8E1A861A711A5D1A591A551A541A531A541A561A631A701A691A631A5BC081"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Thread.sleep(6*1000);
|
|
|
+ //示功图-功率值250点第3段数据为
|
|
|
+ os.write(hexString2Bytes( "0103A01A541A571A5B1A581A551A561A571A561A551A511A4E1A4E1A4E1A581A621A6A1A721A6B1A651A651A661A691A6D1A6F1A711A741A781A7A1A7C1A7B1A7A1A811A881A911A9A1A9F1AA41AB21AC11AC51ACA1AC71AC51ACE1AD71AE61AF51AFD1B061B151B251B241B231B261B291A7F1A851A8A1A8B1A931AA51AAE1AB01ABC1ABE1AC51AD71AF31AF61AF91AFE1AFE1B021B0F1B1C1B1C1B301B381B3E1B52D8D9"));
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }*/
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if(socket!=null){
|
|
|
+ try {
|
|
|
+ socket.close();//关闭
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(os!=null){
|
|
|
+ try {
|
|
|
+ os.close();//关闭
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|