java硬件取数

通过Socket,连接到硬件设备。

 

如果是正常连接的那么就发送你想要发送的数据

    public int TcpSend(byte[] send_buf, int len) {
        if (socket.isConnected() == false)  //如果没有连接上那么就返回,并且不做任何操作
            return 1;

        try {
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(send_buf, len, 0);
            return 0;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

【重点】

重点在于校验值,把byte数组所有字节都加上求和“取反加一”

    public int send(byte[] send_buf, int intSize){

        byte cc = 0; // 校验值
        for (int i = 0; i < intSize; i++) {
            cc += send_buf[i];  //从帧头到参数域最后一个字节 相加的和
        }
        cc = (byte) (~cc + 1);  //取反加一
        //获取校验值
        Formatter formatter = new Formatter();
        Formatter format = formatter.format("%02x", cc);  //通Formatter 对象转换成十六进制
        String s = format.toString();
        byte[] bytes = s.getBytes();
        send_buf[intSize - 1] =bytes[0] ;

        by[0]=0x0A;
        by[1]= (byte) 0xC8;
        by[2]= (byte) 0x90;
        by[3]= bytes[0]; 
        return 0;
    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值