java s7接收Byte字节,接收word转16位二进制
1图:
2.图:
try {
List list = getNameList();
//接收base64
S7Connector s7Connector = S7ConnectorFactory.buildTCPConnector()
.withHost("192.168.46.52")
.withPort(102)
.withTimeout(1000) //连接超时时间
.withRack(0)
.withSlot(3)
.build();
List list1 = new ArrayList();
byte[] cmdByte = s7Connector.read(DaveArea.DB,101,544,4848);
for (int i = 0; i < 272; i++) {
int num1 = intCon.extract(Integer.class, cmdByte, 0+((i+1)-1)*2, 2+((i+1)-1)*2);
String binary = Integer.toBinaryString(num1);
String binary2 = String.format("%16s",binary).replace(' ','0');
String dataByte = binary2.substring(4, 5);
int dataByte1 = Integer.valueOf(dataByte);
list1.add(dataByte1);
}
s7Connector.close();
S7Connector s7Connector2 = S7ConnectorFactory.buildTCPConnector()
.withHost("192.168.46.52")
.withPort(102)
.withTimeout(1000) //连接超时时间
.withRack(0)
.withSlot(3)
.build();
List list2 = new ArrayList();
for(int i=0; i<544; i+=2){
byte[] cmdByte2 = s7Connector2.read(DaveArea.DB,105,1,i);
list2.add(String.valueOf(cmdByte2[0]));
}
s7Connector2.close();
doInsertBCU(list,list1,list2);
sleep(5000);
} catch (Exception e) {
e.printStackTrace();
//continue;
}