金神农整体修改

hubei-jinshennong
LAPTOP-S9HJSOEB\昊天 4 weeks ago
parent 302819d76c
commit b8fca9b0ca

@ -1,5 +1,5 @@
#Generated by Maven
#Fri Jan 23 19:11:12 CST 2026
#Tue Jan 27 17:40:12 CST 2026
groupId=com.zhehekeji
artifactId=common
version=1.0.0

@ -20,6 +20,7 @@ public interface CameraControlModule {
boolean ptzControlDownEnd(Integer cameraId, int nChannelID);
boolean setTime(Integer cameraId, LocalDateTime time);
/**
*
*/

File diff suppressed because it is too large Load Diff

@ -62,6 +62,37 @@ public class HikCameraControlModuleImpl implements CameraControlModule {
return HikLoginModuleImpl.hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_DOWN, 1);
}
public boolean setTime(Integer cameraId,LocalDateTime time)
{
int lUserId = CameraConnMap.getConnId(cameraId).intValue();
HCNetSDK.NET_DVR_TIME dvrTime = new HCNetSDK.NET_DVR_TIME();
IntByReference bytesReturned = new IntByReference(0);
// 先获取设备当前时间
boolean getResult = HikLoginModuleImpl.hcNetsdk.NET_DVR_GetDVRConfig(lUserId, HCNetSDK.NET_DVR_GET_TIMECFG, -1, dvrTime.getPointer(), dvrTime.size(), bytesReturned);
if (getResult) {
dvrTime.read(); // 从内存指针读取数据到结构体
log.info("Get device time success, current time: {}-{}-{} {}:{}:{}",
dvrTime.dwYear, dvrTime.dwMonth, dvrTime.dwDay,
dvrTime.dwHour, dvrTime.dwMinute, dvrTime.dwSecond);
} else {
log.error("Get device time failed, error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(), cameraId);
}
// 设置新时间
dvrTime.setTime(time.getYear(), time.getMonthValue(), time.getDayOfMonth(), time.getHour(), time.getMinute(), time.getSecond());
dvrTime.write(); // 将数据写入内存指针
boolean result = HikLoginModuleImpl.hcNetsdk.NET_DVR_SetDVRConfig(lUserId, HCNetSDK.NET_DVR_SET_TIMECFG, -1, dvrTime.getPointer(), dvrTime.size());
if (!result) {
log.error("setTime error:{},cameraId:{}", HikLoginModuleImpl.hcNetsdk.NET_DVR_GetLastError(), cameraId);
} else {
log.info("Set device time success, new time: {}-{}-{} {}:{}:{}",
time.getYear(), time.getMonthValue(), time.getDayOfMonth(),
time.getHour(), time.getMinute(), time.getSecond());
}
return result;
}
/**
*
*/

@ -84,7 +84,7 @@ public class HikLoginModuleImpl implements CameraControlLoginModule {
m_strLoginInfo.wPort = (short) m_nPort;
m_strLoginInfo.bUseAsynLogin = true; //是否异步登录0- 否1- 是
m_strLoginInfo.bUseAsynLogin = false; //是否异步登录0- 否1- 是
m_strLoginInfo.write();
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息

@ -52,6 +52,9 @@ public class JoywareCameraControlModuleImpl implements CameraControlModule {
lParam1, lParam2, 0, 0);
}
public boolean setTime(Integer cameraId,LocalDateTime time) {
return true;
}
public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) {
log.info("down end");
return JoywareLoginModuleImpl.netsdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnId(cameraId), nChannelID,

File diff suppressed because it is too large Load Diff

@ -11,6 +11,7 @@ import com.zhehekeji.web.entity.CameraIOConfig;
import com.zhehekeji.web.lib.CameraConnMap;
import com.zhehekeji.web.lib.CameraControlLoginModule;
import com.zhehekeji.web.lib.CameraControlModule;
import com.zhehekeji.web.lib.hik.HikCameraControlModuleImpl;
import com.zhehekeji.web.lib.hik.HikLoginModuleImpl;
import com.zhehekeji.web.lib.joyware.JoywareLoginModuleImpl;
import com.zhehekeji.web.lib.joyware.NetSDKLib;
@ -127,6 +128,11 @@ public class CameraService {
return new PageInfo<>(cameras);
}
public void setTimeNew(Camera camera) {
HikCameraControlModuleImpl hikCameraControlModule = new HikCameraControlModuleImpl();
hikCameraControlModule.setTime(camera.getId(),LocalDateTime.now());
}
public class StatusThread extends Thread{
private Camera camera;
private CountDownLatch latch;
@ -320,7 +326,9 @@ public class CameraService {
}
public void cameraLogin(Camera camera){
NetSDKLib.LLong lLong = cameraControlLoginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
log.info("camera login,cameraId:{},ip:{},port:{},user:{},password:{}",camera.getId(),camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
HikLoginModuleImpl loginModule = new HikLoginModuleImpl();
NetSDKLib.LLong lLong = loginModule.login(camera.getIp(),camera.getPort(),camera.getUser(),camera.getPassword());
if(lLong != null){
log.info("camera login success,cameraId:{},ip:{}",camera.getId(),camera.getIp());
CameraConnMap.conn(camera.getId(),lLong);

@ -24,6 +24,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.client.ResourceAccessException;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@ -81,6 +82,14 @@ public class InitService implements ApplicationRunner {
cameraService.setCameraControlModule(cameraControlModule);
return cameraControlModule;
}
@PostConstruct
public void init() throws ResourceAccessException { //球机登录
List<Camera> cameras = cameraMapper.selectByMap(new HashMap<>(0));
cameras.forEach(camera -> {
cameraService.cameraLogin(camera);
cameraService.setTimeNew(camera);
});
}
@Override
public void run(ApplicationArguments args) throws Exception {
@ -136,6 +145,8 @@ public class InitService implements ApplicationRunner {
@Override
public void run() {
cameraService.cameraLogin(camera);
cameraService.setTimeNew(camera);
}
}

@ -320,7 +320,11 @@ public class PLCConnectionExample {
return 0;
}
public synchronized boolean writePlcDataTaskId(String key){
int value = taskMap.get(key + "-out");
log.info("写入任务号:" + key);
for (String key1 : taskMap.keySet()){
log.info("taskMap key1" + key1 + " value" + taskMap.get(key1));
}
int value = taskMap.get(key);
if (value == 0) {
// 已经写入完成
return false;
@ -437,62 +441,23 @@ public class PLCConnectionExample {
// 分拣线PLC型号是西门子1518机架号0插槽1IP是10.69.105.122。
//交互数据块地址是DB121
public static void main(String[] args) {
// 创建S7Client实例
S7Client client = new S7Client();
// 连接PLC
client.ConnectTo("10.69.105.122", 0, 1); // IP, Rack, Slot
if (client.Connected) {
log.info("连接成功");
// 定义数据块和偏移量
int dbNumber = 121; // DB121
int startOffset = 74; // 起始地址
int sizeToRead = 1; // 读取4个字节
//
byte[] buffer = new byte[sizeToRead];
boolean bitValue = true;
// // 读取DB121的数据
int result = client.ReadArea(S7.S7AreaDB, dbNumber, startOffset, sizeToRead, buffer);
if (result == 0) {
log.info("读取成功");
// 获取指定 bit 的值
bitValue= S7.GetBitAt(buffer, 0, 1);
// log.info(bitValue);
//
// int i = ((buffer[0] & 0xFF) << 24) |
// ((buffer[1] & 0xFF) << 16) |
// ((buffer[2] & 0xFF) << 8) |
// (buffer[3] & 0xFF);
System.out.println(bitValue);
String folderPath = "D:\\PycharmProjects\\yolo\\puer\\train";
File folder = new File(folderPath);
if (folder.exists() && folder.isDirectory()) {
File[] subFolders = folder.listFiles(File::isDirectory);
if (subFolders != null && subFolders.length > 0) {
System.out.println("文件夹: " + folderPath);
System.out.println("子文件夹列表:");
for (File subFolder : subFolders) {
System.out.print("'"+subFolder.getName()+"',");
}
System.out.println("共 " + subFolders.length + " 个文件夹");
} else {
log.info("读取失败,错误码: " + result);
System.out.println("该文件夹下没有子文件夹");
}
// 修改第一个字节的第一个位为true即设置bit 0
//
// S7.SetDIntAt(buffer,0,3001);
// 写回DB121
S7.SetBitAt(buffer, 0, 1, true);
//
// // 写回DB121
result = client.WriteArea(S7.S7AreaDB, dbNumber,startOffset, sizeToRead, buffer);
// if (result == 0) {
// log.info("写入成功位置:"+startOffset+":"+0);
//// return true;
// } else {
//// updateConnection(client);
// log.info("写入失败,错误码: " + result);
//// return false;
// }
// 断开连接
client.Disconnect();
} else {
log.info("连接失败");
System.out.println("指定的路径不存在或不是文件夹");
}
}

Loading…
Cancel
Save