通过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;
}