扫码连接测试

package com.example.catl_sm.util;

import org.springframework.util.StringUtils;

import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.concurrent.TimeUnit;

/**
 * @author Administrator
 */
public class Saoma {

    private static Socket socket;

    static {
        try {
            //通过IP与端口号建立socket连接
            // socket = new Socket("192.168.10.10", 2010);


            Socket socket = new Socket();

            String ip = "192.168.10.10";
            Integer port = 2010;
            InetSocketAddress inetSocketAddress = new InetSocketAddress(ip,port);
            socket.connect(inetSocketAddress,3000);

            socket = new Socket("192.168.10.10", 2010);
            if (!socket.isConnected()) {
                System.out.println("连接失败");
            }
            System.out.println("连接成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
         // read();

        try {
            while (true) {
                // TimeUnit.SECONDS.sleep(1);
                String str = read2();
                System.out.println(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        socket.close();
        // inputStream.close();
    }

    private static String read2() {
        StringBuffer stringBuffer = new StringBuffer();
        String s1 = new String();
        try {
            socket.isConnected();
            InputStream inputStream = socket.getInputStream();
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);

            byte[] bytes = new byte[1024];
            int len;
            // while ((len = bufferedInputStream.read(bytes)) != -1) {
            //     stringBuffer.append(new String(bytes, 0, len));
            // }

            len = bufferedInputStream.read(bytes);
            s1 = new String(bytes, 0, len);
           // String s = stringBuffer.toString();
            System.out.println(s1);
          //

        } catch (IOException e) {
            e.printStackTrace();
        }

        return s1;
    }


    /**
     * 写入数据,单次执行:
     * ASCII 是 "+",十六进制是 “2B”,表示开启扫码.只读取一次,读取到数据后会关闭扫码或者几秒内未读到也会关闭
     * ASCII 是 “-”,十六进制是 "2D",表示关闭扫码。详情参考用户手册最后ASCII码对应表
     * 写入数据,持续执行
     * ASCII 是 "JP+",十六进制是 “4A502B”,表示开启持续扫码.持续读取,读取到的数据后添加在前一条数据后
     * ASCII 是 “JP-”,十六进制是 "4A502D",表示关闭持续扫码
     * ASCII 是 “H”,十六进制是 "48",表示重启设备并初始化
     **/

    public static void read() {
        // try{
        //     OutputStream os = socket.getOutputStream();
        //     //持续读取输出数据
        //     String sustainOpen = "4A502B";
        //
        //     //hexStringToByteArray(),十六进制字符串转byte数组
        //     // byte[] openBytes = HexToASCToBytes.hexStringToByteArray(sustainOpen);
        //
        //     os.write(openBytes);
        //
        //     //读取扫码枪获取到的数据
        //     BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        //     DataInputStream dis = new DataInputStream(bis);
        //     byte[] bytes = new byte[1]; // 一次读取一个byte
        //     String ret = "";
        //     String ASC = "";
        //
        //     while (dis.read(bytes) != -1) {
        //         ret += HexToASCToBytes.ByteArrayToHexString(bytes) + " ";
        //         if (dis.available() == 0) {
        //             //当转换完所有数据后返回转换完的十六进制字符串
        //             System.out.println(socket.getRemoteSocketAddress() + ":" + ret);
        //             //去除前面的状态符,“30 30 30 20 ”
        //             ret = ret.substring(12);
        //             //将转换的十六进制字符串再转为ASC码
        //             String[] hexs =  ret.split(" ");
        //
        //             for (String str:hexs){
        //                 ASC += HexToASCToBytes.convertHexToASC(str);
        //             }
        //             System.out.println("ASCII码结果是:"+ASC);
        //
        //             //每次扫完码重置,确保每次扫码转换的都是最新的
        //             ret ="";
        //             ASC ="";
        //         }
        //     }
        //     os.close();
        // }catch (IOException e){
        //     e.printStackTrace();
        // }finally {
        //     try {
        //         //防止异常,不论如何最后都要关闭socket连接,否则下次无法再次创建
        //         socket.close();
        //     }catch (IOException ioException){
        //         ioException.printStackTrace();
        //     }
        // }
    }

    public static void close() {
        // try {
        //     //关闭持续扫码,“48”是重启设备并初始化
        //     String close = "4A502D";
        //     byte[] closeBytes = HexToASCToBytes.hexStringToByteArray(close);
        //     OutputStream os = socket.getOutputStream();
        //     os.write(closeBytes);
        //     os.close();
        // }catch (IOException e){
        //     e.printStackTrace();
        // }finally {
        //     try {
        //         //防止异常,不论如何最后都要关闭socket连接,否则下次无法再次创建
        //         socket.close();
        //     }catch (IOException ioException){
        //         ioException.printStackTrace();
        //     }
        // }
    }


}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值