lisai17@sina.com 2020-12-07 11:18:31 +08:00
parent d57c958ef0
commit f613d1c82e
10 changed files with 186 additions and 22 deletions

View File

@ -178,6 +178,8 @@ public class DeviceThread extends Thread {
} else {
scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port"));
}
} else if (supermarket_id == 7) {
scale = new KeLiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port"));
} else {
scale = new XiShuiScale(which + "_scale", scaleconf.getString("ip"), scaleconf.getIntValue("port"));
}
@ -237,6 +239,26 @@ public class DeviceThread extends Thread {
});
}
public void reconnScale(String scaleId){
if (!this.scaleMap.containsKey(scaleId)) {
throw new IllegalArgumentException(scaleId + " does not exist");
}
AbsScale scale = this.scaleMap.get(scaleId);
if (scale == null) {
return;
}
try{
scale.disconnect();
Thread.sleep(500);
scale.connect();
}catch (Exception e){
log.error(e.getMessage(), e);
}
}
public Double scale(String scaleId) throws IOException {
if (!this.scaleMap.containsKey(scaleId)) {
throw new IllegalArgumentException(scaleId + " does not exist");

View File

@ -0,0 +1,127 @@
package com.cowr.local.ssjygl.devicectrl.device;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
/**
*
*/
public class KeLiScale extends AbsScale {
private static final int DATA_LENGTH = 8;
public KeLiScale(String id, String ip, int port) {
super(id, ip, port);
}
@Override
public double weigh() throws IOException {
InputStream inputStream = socket.getInputStream();
byte[] clearBuf = new byte[inputStream.available()];
inputStream.read(clearBuf);
int errCount = 0;
String weight = "0.0";
while (true) {
if (errCount >= 10) {
break;
}
errCount++;
byte[] buf = new byte[DATA_LENGTH];
int read = inputStream.read(buf);
if (read != DATA_LENGTH) {
continue;
}
weight = new String(Arrays.copyOfRange(buf, 2, 8));
break;
}
return Double.parseDouble(weight) / 1000d;
}
@Override
public double weigh15() throws IOException {
ArrayList<String> list = new ArrayList<>();
AtomicBoolean run = new AtomicBoolean(true);
InputStream inputStream = socket.getInputStream();
byte[] clearBuf = new byte[inputStream.available()];
inputStream.read(clearBuf);
int errCount = 0;
while (run.get() && list.size() < 15) {
long st = System.currentTimeMillis();
byte[] buf = new byte[DATA_LENGTH];
int read = inputStream.read(buf);
if (read != DATA_LENGTH && errCount < 10) {
errCount++;
continue;
}
String weight = new String(Arrays.copyOfRange(buf, 2, 8));
if (!pattern.matcher(weight).matches() || weight.equals("000000")) {
// System.out.println("error:" + weight);
if (errCount == 100) {
break;
}
errCount++;
continue;
}
// System.out.println("读一次耗时:" + (System.currentTimeMillis() - st) + ", " + Double.parseDouble(flip(weight)));
list.add(weight);
}
String max = "0";
if (list.size() > 0) {
Map<String, Long> collect = list.stream().collect(
Collectors.groupingBy(num -> num, Collectors.counting()));
max = collect.entrySet().stream().max(Comparator.comparingLong(Map.Entry::getValue)).get().getKey();
}
return Double.parseDouble(max) / 1000d;
}
public static void main(String[] args) {
KeLiScale s = new KeLiScale("scale", "192.168.20.30", 10001);
try {
boolean connect = s.connect();
System.out.println("connect " + connect);
} catch (IOException e) {
e.printStackTrace();
}
long st = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
try {
st = System.currentTimeMillis();
double weigh = s.weigh15();
System.out.println("end:" + weigh + ", tm: " + (System.currentTimeMillis() - st));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
// break;
}
}
}

View File

@ -172,7 +172,7 @@ public class LEDThread extends Device implements Runnable {
byte[] z = new byte[read];
System.arraycopy(y, 0, z, 0, read);
// System.out.println(getId() + " LED 返回数据:" + HexDump.toHex(z));
// socket.close();
} catch (Exception e) {
if (e.getMessage().contains("Socket is not connected")) {
log.error("LED %s %s 连接已断开", getId(), getIp());
@ -185,6 +185,15 @@ public class LEDThread extends Device implements Runnable {
reconn();
} finally {
try{
if(socket != null){
socket.close();
socket = null;
}
}catch (Exception e){
log.error(e.getMessage(),e);
}
lock.unlock();
}
}
@ -337,7 +346,7 @@ public class LEDThread extends Device implements Runnable {
public static void main(String[] args) {
try {
LEDThread led = new LEDThread("", "192.168.20.52", 5005);
LEDThread led = new LEDThread("", "192.168.20.50", 5005);
Thread thread = new Thread(led);
thread.setDaemon(true);
thread.start();
@ -345,6 +354,8 @@ public class LEDThread extends Device implements Runnable {
System.out.println("LED 启动");
led.setWeightInfo("鄂A7D1P1", "1.1");
Thread.sleep(10000000);
led.running = false;

View File

@ -275,11 +275,12 @@ public class PLC extends Device {
public static void main(String[] args) {
try {
PLC plc = new PLC("_plc", "192.168.20.20", 502, com.cowr.local.ssjygl.devicectrl.common.DeviceThread.defaultAddressTable);
PLC plc = new PLC("_plc", "192.168.20.21", 502, com.cowr.local.ssjygl.devicectrl.common.DeviceThread.defaultAddressTable);
plc.connect();
plc.isConnected();
plc.write("rodIn1Down");
// plc.write("rodOut2Up");
// plc.write("rodIn1Down");
String cmd = "rodOut2Down";
plc.write(cmd);
// plc.write("sensorIn2Reset");
// plc.write("sensorOut1Reset");

View File

@ -95,7 +95,7 @@ public class Config extends JFinalConfig {
public static DeviceThread deviceThread = new DeviceThread();
public static SocketIOService socketio = null;
private static boolean client_run = true;
public static final String CLINET_VERSION = "20201130";
public static final String CLINET_VERSION = "20201207";
public static String getRootPath() {
return PathKit.getWebRootPath()

View File

@ -298,6 +298,8 @@ public class TransportDeviceService {
break;
}
Config.deviceThread.reconnScale(which);
Thread.sleep(500);
}catch (Exception e){
log.error(e.getMessage(), e);

View File

@ -15,7 +15,7 @@ socketserver.port=21002
socketio.port=12002
#当前部署本地程序的砂站id
current.supermarket_id=1
current.supermarket_id=7
#落杆后,等待上磅的时间
default_scale_wait_time=8000

View File

@ -1,13 +1,12 @@
# mysql
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.119' IDENTIFIED BY 'Local_1' WITH GRANT OPTION;
jdbcUrl=jdbc:mysql://rm-wz9wa070076b2uge2ro.mysql.rds.aliyuncs.com:3306/ssjy_xsx_dev?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true
user=dev_ssjy_xsx
password=Ssjy_xs_890
## mysql
## GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.119' IDENTIFIED BY 'Local_1' WITH GRANT OPTION;
#jdbcUrl=jdbc:mysql://rm-wz9wa070076b2uge2ro.mysql.rds.aliyuncs.com:3306/ssjy_xsx_dev?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true
#user=dev_ssjy_xsx
#password=Ssjy_xs_890
#jdbcUrl=jdbc:mysql://192.168.20.2:3306/ssjy_xsx_dev?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true
#jdbcUrl=jdbc:mysql://192.168.1.177:3306/ssjy_xsx_dev?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true
#user=root
#password=Ssjy_xsx_890
jdbcUrl=jdbc:mysql://192.168.20.2:3306/ssjy_xsx_dev?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&useInformationSchema=true&serverTimezone=GMT%2B8&autoReconnect=true
user=root
password=Ssjy_xsx_890
# redis
redis.basekey=ssjcgl_xsx_dev

View File

@ -15,7 +15,7 @@ socketserver.port=21002
socketio.port=12002
#当前部署本地程序的砂站id
current.supermarket_id=6
current.supermarket_id=1
#落杆后,等待上磅的时间
default_scale_wait_time=8000

View File

@ -1022,7 +1022,8 @@ public class OrderclusterSyncService extends BaseSyncService {
"select * from ordercluster t \n" +
" where t.customer_id = ? \n" +
" and t.cutoff_time = ? \n" +
" and t.state < 5 limit 1", oldobj.getCustomerId(), cutoff_time)};
" and t.supermarket_id = ? \n" +
" and t.state < 5 limit 1", oldobj.getCustomerId(), cutoff_time, oldobj.getSupermarketId())};
boolean ret = Db.tx(new IAtom() {
@Override
@ -1235,7 +1236,8 @@ public class OrderclusterSyncService extends BaseSyncService {
"select * from ordercluster t \n" +
" where t.customer_name = ? \n" +
" and t.cutoff_time = ? \n" +
" and t.state < 5 limit 1", oldobj.getCustomerName(), cutoff_time);
" and t.supermarket_id = ? \n" +
" and t.state < 5 limit 1", oldobj.getCustomerName(), cutoff_time, oldobj.getSupermarketId());
if (forwardoldobj == null) {
// 新建一个