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();
// }
// }
}
}
扫码连接测试
于 2022-10-15 19:55:14 首次发布