diff --git a/wms-module-system/src/main/java/top/wms/admin/material/service/MaterialInfoService.java b/wms-module-system/src/main/java/top/wms/admin/material/service/MaterialInfoService.java index 916d2c4..bf3cb55 100644 --- a/wms-module-system/src/main/java/top/wms/admin/material/service/MaterialInfoService.java +++ b/wms-module-system/src/main/java/top/wms/admin/material/service/MaterialInfoService.java @@ -56,7 +56,6 @@ public interface MaterialInfoService extends BaseService log.warn("物料编码 [{}] 不存在,照片更新失败", code)); } - @Override - public String catchPhoto(MultipartFile file){ + public String catchPhoto(MultipartFile file) { String photoStoragePath = "catch" + DateUtil.today() + "/"; FileInfo fileInfo = fileService.upload(file, photoStoragePath, null, true, true); - CheckUtils.throwIfNull(fileInfo,"照片上传失败"); + CheckUtils.throwIfNull(fileInfo, "照片上传失败"); return fileInfo.getUrl(); } diff --git a/wms-module-system/src/main/java/top/wms/admin/system/service/impl/FileServiceImpl.java b/wms-module-system/src/main/java/top/wms/admin/system/service/impl/FileServiceImpl.java index 4be6b7a..5f79e48 100644 --- a/wms-module-system/src/main/java/top/wms/admin/system/service/impl/FileServiceImpl.java +++ b/wms-module-system/src/main/java/top/wms/admin/system/service/impl/FileServiceImpl.java @@ -63,7 +63,7 @@ public class FileServiceImpl extends BaseServiceImpl workOrderInfos; - /** * 手动填写的物料数量 */ private String inputQuantity; - /** * 电子秤重量 */ diff --git a/wms-module-system/src/main/java/top/wms/admin/weighManage/service/WorkOrderService.java b/wms-module-system/src/main/java/top/wms/admin/weighManage/service/WorkOrderService.java index 3360bd8..8cb13fd 100644 --- a/wms-module-system/src/main/java/top/wms/admin/weighManage/service/WorkOrderService.java +++ b/wms-module-system/src/main/java/top/wms/admin/weighManage/service/WorkOrderService.java @@ -24,7 +24,7 @@ public interface WorkOrderService extends BaseService getWorkOrderInfos(Long id); /** - * 校验物料数量和重量是否匹配 + * 校验物料数量和重量是否匹配 + * * @param req * @return */ diff --git a/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java b/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java index 06ffb08..1d26780 100644 --- a/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java +++ b/wms-module-system/src/main/java/top/wms/admin/weighManage/service/impl/WorkOrderServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -45,12 +44,11 @@ import java.util.List; @RequiredArgsConstructor public class WorkOrderServiceImpl extends BaseServiceImpl implements WorkOrderService { -private final WorkOrderInfoMapper workOrderInfoMapper; + private final WorkOrderInfoMapper workOrderInfoMapper; -private final MaterialInfoMapper materialInfoMapper; - -private final ConfigService configService; + private final MaterialInfoMapper materialInfoMapper; + private final ConfigService configService; @Override public PageResp page(WorkOrderQuery query, PageQuery pageQuery) { @@ -75,7 +73,8 @@ private final ConfigService configService; workOrderResp.setEncoding(materialInfoDO.getEncoding()); } - List workOrderInfos = workOrderInfoMapper.selectList(new QueryWrapper().eq("work_order_id", id)); + List workOrderInfos = workOrderInfoMapper.selectList(new QueryWrapper() + .eq("work_order_id", id)); if (CollUtil.isNotEmpty(workOrderInfos)) { BigDecimal bigDecimal = new BigDecimal("0"); for (WorkOrderInfoDO workOrderInfoDO : workOrderInfos) { @@ -92,13 +91,11 @@ private final ConfigService configService; return baseMapper.getDetail(id); } - @Override public void afterDelete(List ids) { workOrderInfoMapper.delete(new QueryWrapper().in("work_order_id", ids)); } - @Override public WorkOrderResp addWorKerOrder(WorkOrderReq req) { if (CollUtil.isEmpty(req.getWorkOrderInfos())) { @@ -117,8 +114,8 @@ private final ConfigService configService; String timestamp = DateUtil.format(new Date(), "yyyyMMddHHmmss"); String randomNum = String.format("%06d", (int)(Math.random() * 1000000)); workOrder.setOrderNo(timestamp + randomNum); - String title = DateUtil.format(new Date(), DatePattern.CHINESE_DATE_PATTERN) + "-" - + UserContextHolder.getUsername() + "-" + req.getMaterialName(); + String title = DateUtil.format(new Date(), DatePattern.CHINESE_DATE_PATTERN) + "-" + UserContextHolder + .getUsername() + "-" + req.getMaterialName(); workOrder.setTitle(title); workOrder.setMaterialId(req.getMaterialId()); workOrder.setTotalWeight(totalWeight); @@ -144,19 +141,19 @@ private final ConfigService configService; //计算标准重量 MaterialInfoDO materialInfoDO = materialInfoMapper.selectById(req.getMaterialId()); - BigDecimal standardWeight = materialInfoDO.getUnitWeight().subtract(new BigDecimal(req.getInputQuantity())); + BigDecimal standardWeight = materialInfoDO.getUnitWeight().subtract(new BigDecimal(req.getInputQuantity())); BigDecimal electronicWeight = new BigDecimal(req.getAhDeviceWeight()); - + // 检查 electronicWeight 是否大于 standardWeight if (electronicWeight.compareTo(standardWeight) <= 0) { log.error("电子秤重量必须大于标准重量"); return 500; // 电子秤重量必须大于标准重量 } - + // 计算比值:(electronicWeight - standardWeight) / standardWeight BigDecimal weightDifference = electronicWeight.subtract(standardWeight); BigDecimal ratio = weightDifference.divide(standardWeight, 4, BigDecimal.ROUND_HALF_UP); - + // 检查比值是否超过 6% if (ratio.compareTo(weightFloat) > 0) { log.error("比值超过 6%,当前比值: {}", ratio); diff --git a/wms-webapi/.flattened-pom.xml b/wms-webapi/.flattened-pom.xml index 4474091..bfa2cad 100644 --- a/wms-webapi/.flattened-pom.xml +++ b/wms-webapi/.flattened-pom.xml @@ -63,6 +63,13 @@ jakarta.websocket-api 2.1.0 + + com.hikvision + MvCameraControlWrapper + 1.0 + system + ${project.basedir}/Library/MvCameraControlWrapper.jar + ${project.parent.name} diff --git a/wms-webapi/src/main/java/top/wms/admin/config/webSocket/WebSocketConfig.java b/wms-webapi/src/main/java/top/wms/admin/config/webSocket/WebSocketConfig.java index 85bff6c..805f118 100644 --- a/wms-webapi/src/main/java/top/wms/admin/config/webSocket/WebSocketConfig.java +++ b/wms-webapi/src/main/java/top/wms/admin/config/webSocket/WebSocketConfig.java @@ -1,25 +1,18 @@ package top.wms.admin.config.webSocket; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; -import top.wms.admin.controller.hkMVS.CameraWebSocketHandler; import top.wms.admin.controller.weighManage.ah.ScaleWebSocketHandler; @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { - - @Autowired - private CameraWebSocketHandler cameraWebSocketHandler; @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { // 注册WebSocket端点,允许所有跨域请求 registry.addHandler(new ScaleWebSocketHandler(), "/ws/scale").setAllowedOrigins("*"); - // 注册海康相机1 WebSocket端点 - registry.addHandler(cameraWebSocketHandler, "/ws/camera").setAllowedOrigins("*"); } } \ No newline at end of file diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/CameraService.java b/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/CameraService.java deleted file mode 100644 index 59ecdbb..0000000 --- a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/CameraService.java +++ /dev/null @@ -1,487 +0,0 @@ -package top.wms.admin.controller.hkMVS; - -import MvCameraControlWrapper.*; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.web.socket.BinaryMessage; -import org.springframework.web.socket.WebSocketSession; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.util.ArrayList; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import static MvCameraControlWrapper.MvCameraControlDefines.*; - -@Slf4j -@Service -public class CameraService { - - // 相机句柄 - private Handle hCamera = null; - // 设备信息列表 - private ArrayList stDeviceList = null; - // WebSocket会话映射,用于存储活跃的WebSocket连接 - private final Map webSocketSessions = new ConcurrentHashMap<>(); - // 相机是否正在运行 - private boolean isRunning = false; - // 帧率控制相关 - private long lastFrameTime = 0; - private final int targetFps = 15; // 目标帧率 - private final long frameInterval = 1000 / targetFps; // 帧间隔(毫秒) - // 最后一次会话移除时间,用于判断是否需要保留相机资源 - private long lastSessionRemoveTime = 0; - // 相机资源保留时间(毫秒) - private final long cameraResourceRetentionTime = 5000; // 5秒 - - /** - * 初始化相机 - * @return 初始化结果 - */ - public synchronized boolean initializeCamera() { - if (hCamera != null) { - log.info("Camera already initialized"); - return true; - } - - int nRet = MV_OK; - - try { - // 初始化SDK - log.info("Initializing SDK..."); - nRet = MvCameraControl.MV_CC_Initialize(); - if (MV_OK != nRet) { - log.error("Initialize SDK fail! nRet {}", Integer.toHexString(nRet)); - return false; - } - - // 枚举设备 - log.info("Enumerating devices..."); - try { - stDeviceList = MvCameraControl.MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_GIGE_DEVICE | MV_GENTL_CAMERALINK_DEVICE | MV_GENTL_CXP_DEVICE | MV_GENTL_XOF_DEVICE); - } catch (CameraControlException e) { - log.error("Enumerate devices failed!", e); - MvCameraControl.MV_CC_Finalize(); - return false; - } - - if (stDeviceList == null || stDeviceList.size() <= 0) { - log.error("No devices found!"); - MvCameraControl.MV_CC_Finalize(); - return false; - } - - // 打印设备信息 - log.info("Found {} device(s):", stDeviceList.size()); - int i = 0; - for (MV_CC_DEVICE_INFO stDeviceInfo : stDeviceList) { - if (null == stDeviceInfo) { - continue; - } - } - - // 默认选择第一个设备 - log.info("Selecting first device..."); - try { - hCamera = MvCameraControl.MV_CC_CreateHandle(stDeviceList.get(0)); - } catch (CameraControlException e) { - log.error("Create handle failed!", e); - MvCameraControl.MV_CC_Finalize(); - return false; - } - - // 打开设备 - log.info("Opening device..."); - nRet = MvCameraControl.MV_CC_OpenDevice(hCamera); - if (MV_OK != nRet) { - log.error("Connect to camera failed, errcode: {}", Integer.toHexString(nRet)); - MvCameraControl.MV_CC_DestroyHandle(hCamera); - hCamera = null; - MvCameraControl.MV_CC_Finalize(); - return false; - } - - // 关闭触发模式 - log.info("Turning off trigger mode..."); - nRet = MvCameraControl.MV_CC_SetEnumValueByString(hCamera, "TriggerMode", "Off"); - if (MV_OK != nRet) { - log.error("SetTriggerMode failed, errcode: {}", Integer.toHexString(nRet)); - closeCamera(); - return false; - } - - // 设置Bayer转换质量,用于彩色相机 - log.info("Setting Bayer convert quality..."); - nRet = MvCameraControl.MV_CC_SetBayerCvtQuality(hCamera, 1); - if (MV_OK != nRet) { - log.error("Set Bayer convert quality fail! nRet {}", Integer.toHexString(nRet)); - closeCamera(); - return false; - } - - log.info("Camera initialized successfully"); - return true; - } catch (Exception e) { - log.error("Initialize camera failed", e); - closeCamera(); - return false; - } - } - - /** - * 开始视频流 - * @return 开始结果 - */ - public synchronized boolean startStream() { - if (hCamera == null) { - log.error("Camera not initialized"); - return false; - } - - if (isRunning) { - log.info("Stream already running"); - return true; - } - - try { - // 注册图像回调 - log.info("Registering image callback..."); - int nRet = MvCameraControl.MV_CC_RegisterImageCallBack(hCamera, new CameraImageCallBack() { - @Override - public int OnImageCallBack(byte[] bytes, MV_FRAME_OUT_INFO mv_frame_out_info) { - processImage(bytes, mv_frame_out_info); -// processBlackWhiteImage(bytes, mv_frame_out_info); - return 0; - } - }); - if (MV_OK != nRet) { - log.error("Register image callback failed, errcode: {}", Integer.toHexString(nRet)); - return false; - } - - // 开始采集 - log.info("Starting grabbing..."); - nRet = MvCameraControl.MV_CC_StartGrabbing(hCamera); - if (MV_OK != nRet) { - log.error("StartGrabbing failed, errcode: {}", Integer.toHexString(nRet)); - return false; - } - - isRunning = true; - log.info("Stream started successfully"); - return true; - } catch (Exception e) { - log.error("Start stream failed", e); - return false; - } - } - - /** - * 停止视频流 - */ - public synchronized void stopStream() { - if (hCamera == null || !isRunning) { - return; - } - - try { - // 停止采集 - log.info("Stopping grabbing..."); - int nRet = MvCameraControl.MV_CC_StopGrabbing(hCamera); - if (MV_OK != nRet) { - log.error("StopGrabbing failed, errcode: {}", Integer.toHexString(nRet)); - } - - // close device - nRet = MvCameraControl.MV_CC_CloseDevice(hCamera); - if (MV_OK != nRet) { - - log.error("CloseDevice failed, errcode: {}", Integer.toHexString(nRet)); - } - - if (null != hCamera) { - // Destroy handle - nRet = MvCameraControl.MV_CC_DestroyHandle(hCamera); - if (MV_OK != nRet) { - log.error("DestroyHandle failed, errcode: {}", Integer.toHexString(nRet)); - } - hCamera = null; - } - MvCameraControl.MV_CC_Finalize(); - - isRunning = false; - log.info("Stream stopped"); - } catch (Exception e) { - log.error("Stop stream failed", e); - } - } - - /** - * 关闭相机 - */ - public synchronized void closeCamera() { - if (hCamera != null) { - try { - // 停止采集 - log.info("Stopping grabbing..."); - MvCameraControl.MV_CC_StopGrabbing(hCamera); - // 关闭设备 - log.info("Closing device..."); - MvCameraControl.MV_CC_CloseDevice(hCamera); - // 销毁句柄 - log.info("Destroying handle..."); - MvCameraControl.MV_CC_DestroyHandle(hCamera); - } catch (Exception e) { - log.error("Close camera failed", e); - } finally { - hCamera = null; - } - } - - // 释放SDK - try { - log.info("Finalizing SDK..."); - MvCameraControl.MV_CC_Finalize(); - } catch (Exception e) { - log.error("Finalize SDK failed", e); - } - - isRunning = false; - log.info("Camera closed"); - } - - /** - * 处理图像数据 - * - * @param bytes 原始图像数据 - * @param frameInfo 帧信息 - */ - private void processImage(byte[] bytes, MV_FRAME_OUT_INFO frameInfo) { - if (bytes == null || frameInfo == null || webSocketSessions.isEmpty()) { - return; - } - - try { - // 帧率控制 - long currentTime = System.currentTimeMillis(); - if (currentTime - lastFrameTime < frameInterval) { - return; // 跳过当前帧,控制帧率 - } - lastFrameTime = currentTime; - - int dataSizeForRGB = frameInfo.width * frameInfo.height * 3; // RGB每个像素3字节 - byte[] pDataForRGB = new byte[dataSizeForRGB]; - - // 初始化像素转换参数 - MV_CC_PIXEL_CONVERT_PARAM_EX stConvertParam = new MV_CC_PIXEL_CONVERT_PARAM_EX(); - - // 使用实际的width和height,避免ExtendHeight为0的问题 - stConvertParam.width = frameInfo.width; - stConvertParam.height = frameInfo.height; - stConvertParam.srcData = bytes; - stConvertParam.srcDataLen = frameInfo.frameLen; - stConvertParam.srcPixelType = frameInfo.pixelType; - stConvertParam.dstPixelType = MvGvspPixelType.PixelType_Gvsp_RGB8_Packed; - stConvertParam.dstBuffer = pDataForRGB; - stConvertParam.dstBufferSize = dataSizeForRGB; - - // 尝试进行像素格式转换 - int nRet = MvCameraControl.MV_CC_ConvertPixelTypeEx(hCamera, stConvertParam); - if (MV_OK != nRet) { - log.error("Convert PixelType fail, errCode: {}, srcPixelType: {}, width: {}, height: {}", - Integer.toHexString(nRet), - frameInfo.pixelType.getnValue(), - frameInfo.width, - frameInfo.height); - - return; - } - - // 将RGB数据转换为BufferedImage - BufferedImage image = new BufferedImage(frameInfo.width, frameInfo.height, BufferedImage.TYPE_3BYTE_BGR); - image.getRaster().setDataElements(0, 0, frameInfo.width, frameInfo.height, pDataForRGB); - - // 压缩图像为JPEG格式 - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ImageIO.write(image, "jpeg", baos); - byte[] compressedData = baos.toByteArray(); - baos.close(); - - log.debug("Original size: {} bytes, Converted size: {} bytes, Compressed size: {} bytes, Compression ratio: {:.2f}%", - bytes.length, pDataForRGB.length, compressedData.length, (1 - (double) compressedData.length / bytes.length) * 100); - - // 创建包含图像尺寸信息和压缩数据的消息 - // 消息格式: [width(4 bytes)][height(4 bytes)][image data] - byte[] message = new byte[8 + compressedData.length]; - - // 写入宽度和高度(使用小端序) - message[0] = (byte) (frameInfo.width & 0xFF); - message[1] = (byte) ((frameInfo.width >> 8) & 0xFF); - message[2] = (byte) ((frameInfo.width >> 16) & 0xFF); - message[3] = (byte) ((frameInfo.width >> 24) & 0xFF); - - message[4] = (byte) (frameInfo.height & 0xFF); - message[5] = (byte) ((frameInfo.height >> 8) & 0xFF); - message[6] = (byte) ((frameInfo.height >> 16) & 0xFF); - message[7] = (byte) ((frameInfo.height >> 24) & 0xFF); - - // 写入压缩后的图像数据 - System.arraycopy(compressedData, 0, message, 8, compressedData.length); - - // 发送图像数据到所有连接的WebSocket客户端 - for (WebSocketSession session : webSocketSessions.values()) { - if (session.isOpen()) { - try { - session.sendMessage(new BinaryMessage(message)); - } catch (Exception e) { - log.error("Send message to WebSocket failed", e); - } - } - } - } catch (Exception e) { - log.error("Process image failed", e); - } - } - - - /** - * 处理黑白相机图像数据 - * @param bytes 原始图像数据 - * @param frameInfo 帧信息 - */ - private void processBlackWhiteImage(byte[] bytes, MV_FRAME_OUT_INFO frameInfo) { - if (bytes == null || frameInfo == null || webSocketSessions.isEmpty()) { - return; - } - - try { - // 帧率控制 - long currentTime = System.currentTimeMillis(); - if (currentTime - lastFrameTime < frameInterval) { - return; // 跳过当前帧,控制帧率 - } - lastFrameTime = currentTime; - - // 对于黑白相机(MV-CE050-30GM),数据是单通道灰度格式 - // 将原始灰度数据转换为BufferedImage - BufferedImage image = new BufferedImage(frameInfo.width, frameInfo.height, BufferedImage.TYPE_BYTE_GRAY); - image.getRaster().setDataElements(0, 0, frameInfo.width, frameInfo.height, bytes); - - // 压缩图像为JPEG格式 - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ImageIO.write(image, "jpeg", baos); - byte[] compressedData = baos.toByteArray(); - baos.close(); - - log.debug("Original size: {} bytes, Compressed size: {} bytes, Compression ratio: {:.2f}%", - bytes.length, compressedData.length, (1 - (double)compressedData.length / bytes.length) * 100); - - // 创建包含图像尺寸信息和压缩数据的消息 - // 消息格式: [width(4 bytes)][height(4 bytes)][image data] - byte[] message = new byte[8 + compressedData.length]; - - // 写入宽度和高度(使用小端序) - message[0] = (byte) (frameInfo.width & 0xFF); - message[1] = (byte) ((frameInfo.width >> 8) & 0xFF); - message[2] = (byte) ((frameInfo.width >> 16) & 0xFF); - message[3] = (byte) ((frameInfo.width >> 24) & 0xFF); - - message[4] = (byte) (frameInfo.height & 0xFF); - message[5] = (byte) ((frameInfo.height >> 8) & 0xFF); - message[6] = (byte) ((frameInfo.height >> 16) & 0xFF); - message[7] = (byte) ((frameInfo.height >> 24) & 0xFF); - - // 写入压缩后的图像数据 - System.arraycopy(compressedData, 0, message, 8, compressedData.length); - - // 发送图像数据到所有连接的WebSocket客户端 - for (WebSocketSession session : webSocketSessions.values()) { - if (session.isOpen()) { - try { - session.sendMessage(new BinaryMessage(message)); - } catch (Exception e) { - log.error("Send message to WebSocket failed", e); - } - } - } - } catch (Exception e) { - log.error("Process image failed", e); - } - } - - - /** - * 添加WebSocket会话 - * @param session WebSocket会话 - */ - public void addWebSocketSession(WebSocketSession session) { - if (session != null) { - webSocketSessions.put(session.getId(), session); - log.info("WebSocket session added: {}", session.getId()); - - // 确保相机已初始化 - if (!initializeCamera()) { - log.error("Failed to initialize camera for new WebSocket session"); - return; - } - - // 确保视频流已开始 - if (!isRunning) { - boolean started = startStream(); - if (!started) { - log.error("Failed to start stream for new WebSocket session"); - } - } else { - log.info("Stream already running, no need to start again"); - } - } - } - - /** - * 移除WebSocket会话 - * @param session WebSocket会话 - */ - public void removeWebSocketSession(WebSocketSession session) { - if (session != null) { - webSocketSessions.remove(session.getId()); - log.info("WebSocket session removed: {}", session.getId()); - - // 如果没有活跃的WebSocket会话,记录移除时间 - if (webSocketSessions.isEmpty()) { - lastSessionRemoveTime = System.currentTimeMillis(); - // 启动一个线程,延迟停止视频流,以便页面刷新时能够快速恢复 - new Thread(() -> { - try { - Thread.sleep(cameraResourceRetentionTime); - // 再次检查是否仍然没有活跃会话 - if (webSocketSessions.isEmpty()) { - stopStream(); - log.info("No active sessions after retention period, stopped stream"); - } - } catch (InterruptedException e) { - log.error("Interrupted while waiting to stop stream", e); - } - }).start(); - } - } - } - - /** - * 获取当前连接的WebSocket会话数量 - * @return 会话数量 - */ - public int getWebSocketSessionCount() { - return webSocketSessions.size(); - } - - /** - * 检查相机是否正在运行 - * @return 是否正在运行 - */ - public boolean isRunning() { - return isRunning; - } - -} \ No newline at end of file diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/CameraWebSocketHandler.java b/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/CameraWebSocketHandler.java deleted file mode 100644 index 48fb729..0000000 --- a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/CameraWebSocketHandler.java +++ /dev/null @@ -1,64 +0,0 @@ -package top.wms.admin.controller.hkMVS; - -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import org.springframework.web.socket.CloseStatus; -import org.springframework.web.socket.WebSocketSession; -import org.springframework.web.socket.handler.BinaryWebSocketHandler; - -@Slf4j -@Component -public class CameraWebSocketHandler extends BinaryWebSocketHandler { - - @Resource - private CameraService cameraService; - - /** - * 连接建立时触发 - */ - @Override - public void afterConnectionEstablished(WebSocketSession session) throws Exception { - log.info("WebSocket connection established: {}", session.getId()); - // 添加WebSocket会话到CameraService - cameraService.addWebSocketSession(session); - } - - /** - * 连接关闭时触发 - */ - @Override - public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { - log.info("WebSocket connection closed: {}, status: {}", session.getId(), status); - // 从CameraService移除WebSocket会话 - cameraService.removeWebSocketSession(session); - } - - /** - * 处理二进制消息 - */ - @Override - protected void handleBinaryMessage(WebSocketSession session, org.springframework.web.socket.BinaryMessage message) throws Exception { - // 可以在这里处理前端发送的二进制消息(如果需要) - log.debug("Received binary message from WebSocket session: {}", session.getId()); - } - - /** - * 处理文本消息 - */ - @Override - protected void handleTextMessage(WebSocketSession session, org.springframework.web.socket.TextMessage message) { - // 可以在这里处理前端发送的文本消息(如果需要) - log.debug("Received text message from WebSocket session: {}, message: {}", session.getId(), message.getPayload()); - } - - /** - * 处理传输错误 - */ - @Override - public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { - log.error("WebSocket transport error: {}", exception.getMessage(), exception); - // 从CameraService移除WebSocket会话 - cameraService.removeWebSocketSession(session); - } -} \ No newline at end of file diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/ConvertPixelType.java b/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/ConvertPixelType.java deleted file mode 100644 index 47076ba..0000000 --- a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/ConvertPixelType.java +++ /dev/null @@ -1,370 +0,0 @@ -package top.wms.admin.controller.hkMVS; /*************************************************************************************************** - * @file ConvertPixelType.java - * @breif Use functions provided in MvCameraControlWrapper.jar to convert pixel type。 - * @author zhanglei72 - * @date 2020/02/10 - * - * @warning - * @version V1.0.0 2020/02/10 create this file. - * @since 2020/02/10 - **************************************************************************************************/ - -import MvCameraControlWrapper.CameraControlException; -import MvCameraControlWrapper.MvCameraControl; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Scanner; - -import static MvCameraControlWrapper.MvCameraControlDefines.*; - -public class ConvertPixelType -{ - public static Scanner scanner; - private static void printDeviceInfo(MV_CC_DEVICE_INFO stDeviceInfo) - { - if (null == stDeviceInfo) { - System.out.println("stDeviceInfo is null"); - return; - } - - if ((stDeviceInfo.transportLayerType == MV_GIGE_DEVICE) ||( stDeviceInfo.transportLayerType == MV_GENTL_GIGE_DEVICE)) - { - System.out.println("\tCurrentIp: " + stDeviceInfo.gigEInfo.currentIp); - System.out.println("\tModel: " + stDeviceInfo.gigEInfo.modelName); - System.out.println("\tUserDefinedName: " + stDeviceInfo.gigEInfo.userDefinedName); - } else if (stDeviceInfo.transportLayerType == MV_USB_DEVICE) { - System.out.println("\tUserDefinedName: " + stDeviceInfo.usb3VInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.usb3VInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.usb3VInfo.deviceNumber); - } else if (stDeviceInfo.transportLayerType == MV_GENTL_CAMERALINK_DEVICE) - { - System.out.println("\tUserDefinedName: " + stDeviceInfo.cmlInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.cmlInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.cmlInfo.DeviceID); - } - else if (stDeviceInfo.transportLayerType == MV_GENTL_CXP_DEVICE) - { - System.out.println("\tUserDefinedName: " + stDeviceInfo.cxpInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.cxpInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.cxpInfo.DeviceID); - } - else if (stDeviceInfo.transportLayerType == MV_GENTL_XOF_DEVICE) - { - System.out.println("\tUserDefinedName: " + stDeviceInfo.xofInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.xofInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.xofInfo.DeviceID); - }else { - System.err.print("Device is not supported! \n"); - } - - System.out.println("\tAccessible: " - + MvCameraControl.MV_CC_IsDeviceAccessible(stDeviceInfo, MV_ACCESS_Exclusive)); - System.out.println(""); - } - - private static void printFrameInfo(MV_FRAME_OUT_INFO stFrameInfo) - { - if (null == stFrameInfo) - { - System.err.println("stFrameInfo is null"); - return; - } - - StringBuilder frameInfo = new StringBuilder(""); - frameInfo.append(("\tFrameNum[" + stFrameInfo.frameNum + "]")); - frameInfo.append("\tWidth[" + stFrameInfo.width + "]"); - frameInfo.append("\tHeight[" + stFrameInfo.height + "]"); - frameInfo.append(String.format("\tPixelType[%#x]", stFrameInfo.pixelType.getnValue())); - - System.out.println(frameInfo.toString()); - } - - public static void saveDataToFile(byte[] dataToSave, int dataSize, String fileName) - { - OutputStream os = null; - - try - { - if((null == dataToSave)||(dataSize <= 0)) - { - System.out.println("saveDataToFile param error."); - return; - } - // create diractory - File tempFile = new File("dat"); - if (!tempFile.exists()) - { - tempFile.mkdirs(); - } - - os = new FileOutputStream(tempFile.getPath() + File.separator + fileName); - if(null != os) - { - os.write(dataToSave, 0, dataSize); - System.out.println("ConvertPixelType succeed."); - } - - } - catch (IOException e) - { - e.printStackTrace(); - } - finally - { - // close file stream - try - { - if(os != null) - { - os.close(); - } - - } catch (IOException e) - { - e.printStackTrace(); - } - } - } - - public static int chooseCamera(ArrayList stDeviceList) - { - if (null == stDeviceList) - { - return -1; - } - - // Choose a device to operate - int camIndex = -1; - - while (true) { - try { - camIndex = 0; - if ((camIndex >= 0 && camIndex < stDeviceList.size()) || -1 == camIndex) { - break; - } else { - System.out.println("Input error: " + camIndex + " Over Range:( 0 - " + (stDeviceList.size() - 1) + " )"); - } - } catch (Exception e) { - System.out.println("Input not number."); - camIndex = -1; - break; - } - - } - if (-1 == camIndex) { - System.out.println("Input error.exit"); - return camIndex; - } - - if (0 <= camIndex && stDeviceList.size() > camIndex) - { - if ((MV_GIGE_DEVICE == stDeviceList.get(camIndex).transportLayerType)||(MV_GENTL_GIGE_DEVICE == stDeviceList.get(camIndex).transportLayerType)) - { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).gigEInfo.userDefinedName); - } - else if (MV_USB_DEVICE == stDeviceList.get(camIndex).transportLayerType) - { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).usb3VInfo.userDefinedName); - } - else if (MV_GENTL_CAMERALINK_DEVICE == stDeviceList.get(camIndex).transportLayerType) - { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).cmlInfo.DeviceID); - } - else if (MV_GENTL_CXP_DEVICE == stDeviceList.get(camIndex).transportLayerType) - { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).cxpInfo.DeviceID); - } - else if (MV_GENTL_XOF_DEVICE == stDeviceList.get(camIndex).transportLayerType) - { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).xofInfo.DeviceID); - } - else - { - System.out.println("Device is not supported."); - } - } - else - { - System.out.println("Invalid index " + camIndex); - camIndex = -1; - } - - return camIndex; - } - - public static void main(String[] args) - { - int nRet = MV_OK; - int camIndex = -1; - Handle hCamera = null; - scanner = new Scanner(System.in); - ArrayList stDeviceList = null; - - do - { - System.out.println("SDK Version " + MvCameraControl.MV_CC_GetSDKVersion()); - - // Initialize SDK - nRet = MvCameraControl.MV_CC_Initialize(); - if (MV_OK != nRet) - { - System.err.printf("Initialize SDK fail! nRet [0x%x]\n\n",nRet); - break; - } - - // Enumerate GigE and USB devices - try - { - stDeviceList = MvCameraControl.MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_GIGE_DEVICE | MV_GENTL_CAMERALINK_DEVICE | MV_GENTL_CXP_DEVICE | MV_GENTL_XOF_DEVICE); - if (0 >= stDeviceList.size()) - { - System.out.println("No devices found!"); - break; - } - int i = 0; - for (MV_CC_DEVICE_INFO stDeviceInfo : stDeviceList) - { - System.out.println("[camera " + (i++) + "]"); - printDeviceInfo(stDeviceInfo); - } - } - catch (CameraControlException e) - { - System.err.println("Enumrate devices failed!" + e.toString()); - e.printStackTrace(); - break; - } - - // choose camera - camIndex = chooseCamera(stDeviceList); - if (camIndex == -1) - { - break; - } - - // Create device handle - try - { - hCamera = MvCameraControl.MV_CC_CreateHandle(stDeviceList.get(camIndex)); - } - catch (CameraControlException e) - { - System.err.println("Create handle failed!" + e.toString()); - e.printStackTrace(); - hCamera = null; - break; - } - - // Open selected device - nRet = MvCameraControl.MV_CC_OpenDevice(hCamera); - if (MV_OK != nRet) - { - System.err.printf("Connect to camera failed, errcode: [%#x]\n", nRet); - break; - } - - // make sure that Trigger mode is off - nRet = MvCameraControl.MV_CC_SetEnumValueByString(hCamera, "TriggerMode", "Off"); - if (MV_OK != nRet) - { - System.err.printf("SetTriggerMode failed, errcode: [%#x]\n", nRet); - break; - } - - // Get payload size - MVCC_INTVALUE stParam = new MVCC_INTVALUE(); - nRet = MvCameraControl.MV_CC_GetIntValue(hCamera, "PayloadSize", stParam); - if (MV_OK != nRet) - { - System.err.printf("Get PayloadSize fail, errcode: [%#x]\n", nRet); - break; - } - - // Start grabbing images - nRet = MvCameraControl.MV_CC_StartGrabbing(hCamera); - if (MV_OK != nRet) - { - System.err.printf("Start Grabbing fail, errcode: [%#x]\n", nRet); - break; - } - - // Get one frame - MV_FRAME_OUT_INFO stImageInfo = new MV_FRAME_OUT_INFO(); - byte[] pData = new byte[(int)stParam.curValue]; - nRet = MvCameraControl.MV_CC_GetOneFrameTimeout(hCamera, pData, stImageInfo, 1000); - if (MV_OK != nRet) - { - System.err.printf("GetOneFrameTimeout fail, errcode:[%#x]\n", nRet); - break; - } - - System.out.println("GetOneFrame: "); - printFrameInfo(stImageInfo); - - // set interpolation algorithm type, 0-Fast 1-Equilibrium 2-Optimal 3-Optimal plus - nRet = MvCameraControl.MV_CC_SetBayerCvtQuality(hCamera, 1); - if (MV_OK != nRet) - { - System.err.printf("set Bayer convert quality fail! nRet [0x%x]\n", nRet); - break; - } - System.out.println("临时日志: frameInfo.width = " + stImageInfo.width + ", frameInfo.height = " + stImageInfo.height + ", frameInfo.ExtendWidth = " + stImageInfo.ExtendWidth + ", frameInfo.ExtendHeight = " + stImageInfo.ExtendHeight + ", frameInfo.frameLen = " + stImageInfo.frameLen + ", frameInfo.pixelType = " + stImageInfo.pixelType); - int dataSizeForRGB = stImageInfo.width * stImageInfo.height * 3; // every RGB pixel takes 3 bytes - byte[] pDataForRGB = new byte[dataSizeForRGB]; - - // Convert pixel type to RGB8_Packed - MV_CC_PIXEL_CONVERT_PARAM_EX stConvertParam = new MV_CC_PIXEL_CONVERT_PARAM_EX(); - stConvertParam.width = stImageInfo.ExtendWidth; // image width - stConvertParam.height = stImageInfo.ExtendHeight; // image height - stConvertParam.srcData = pData; // input buffer - stConvertParam.srcDataLen = stImageInfo.frameLen; // input buffer size - stConvertParam.srcPixelType = stImageInfo.pixelType; // input pixel format - stConvertParam.dstPixelType = MvGvspPixelType.PixelType_Gvsp_RGB8_Packed; // output pixel format - stConvertParam.dstBuffer = pDataForRGB; // output buffer - stConvertParam.dstBufferSize = dataSizeForRGB; // output buffer size - - nRet = MvCameraControl.MV_CC_ConvertPixelTypeEx(hCamera, stConvertParam); - if (MV_OK != nRet) - { - System.err.printf("Convert PixelType fail, errcode: [%#x]\n", nRet); - break; - } - - // Save buffer content to file - saveDataToFile(pDataForRGB, dataSizeForRGB, "AfterConvert_RGB.raw"); - - // Stop grabbing - nRet = MvCameraControl.MV_CC_StopGrabbing(hCamera); - if (MV_OK != nRet) - { - System.err.printf("StopGrabbing failed, errcode: [%#x]\n", nRet); - break; - } - - // close device - nRet = MvCameraControl.MV_CC_CloseDevice(hCamera); - if (MV_OK != nRet) - { - System.err.printf("CloseDevice failed, errcode: [%#x]\n", nRet); - break; - } - - - } while (false); - - if (null != hCamera) - { - // Destroy handle - nRet = MvCameraControl.MV_CC_DestroyHandle(hCamera); - if (MV_OK != nRet) { - System.err.printf("DestroyHandle failed, errcode: [%#x]\n", nRet); - } - } - MvCameraControl.MV_CC_Finalize(); - scanner.close(); - } -} diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/Grab_Callback.java b/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/Grab_Callback.java deleted file mode 100644 index 8744911..0000000 --- a/wms-webapi/src/main/java/top/wms/admin/controller/hkMVS/Grab_Callback.java +++ /dev/null @@ -1,264 +0,0 @@ -package top.wms.admin.controller.hkMVS; /*************************************************************************************************** - * @file Grab_Callback.java - * @breif Use functions provided in MvCameraControlWrapper.jar to grab images - * @author zhanglei72 - * @date 2020/01/12 - * - * @warning - * @version V1.0.0 2020/01/12 Create this file - * V1.0.1 2020/02/10 add parameter checking - * @since 2020/02/10 - **************************************************************************************************/ - -import MvCameraControlWrapper.*; - -import java.util.ArrayList; -import java.util.Scanner; - -import static MvCameraControlWrapper.MvCameraControlDefines.*; - -public class Grab_Callback { - public static Scanner scanner; - - private static void printDeviceInfo(MV_CC_DEVICE_INFO stDeviceInfo) { - if (null == stDeviceInfo) { - System.out.println("stDeviceInfo is null"); - return; - } - - if ((stDeviceInfo.transportLayerType == MV_GIGE_DEVICE) || (stDeviceInfo.transportLayerType == MV_GENTL_GIGE_DEVICE)) { - System.out.println("\tCurrentIp: " + stDeviceInfo.gigEInfo.currentIp); - System.out.println("\tModel: " + stDeviceInfo.gigEInfo.modelName); - System.out.println("\tUserDefinedName: " + stDeviceInfo.gigEInfo.userDefinedName); - } else if (stDeviceInfo.transportLayerType == MV_USB_DEVICE) { - System.out.println("\tUserDefinedName: " + stDeviceInfo.usb3VInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.usb3VInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.usb3VInfo.deviceNumber); - } else if (stDeviceInfo.transportLayerType == MV_GENTL_CAMERALINK_DEVICE) { - System.out.println("\tUserDefinedName: " + stDeviceInfo.cmlInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.cmlInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.cmlInfo.DeviceID); - } else if (stDeviceInfo.transportLayerType == MV_GENTL_CXP_DEVICE) { - System.out.println("\tUserDefinedName: " + stDeviceInfo.cxpInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.cxpInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.cxpInfo.DeviceID); - } else if (stDeviceInfo.transportLayerType == MV_GENTL_XOF_DEVICE) { - System.out.println("\tUserDefinedName: " + stDeviceInfo.xofInfo.userDefinedName); - System.out.println("\tSerial Number: " + stDeviceInfo.xofInfo.serialNumber); - System.out.println("\tDevice Number: " + stDeviceInfo.xofInfo.DeviceID); - } else { - System.err.print("Device is not supported! \n"); - } - - System.out.println("\tAccessible: " - + MvCameraControl.MV_CC_IsDeviceAccessible(stDeviceInfo, MV_ACCESS_Exclusive)); - System.out.println(""); - } - - private static void printFrameInfo(MV_FRAME_OUT_INFO stFrameInfo) { - if (null == stFrameInfo) { - System.err.println("stFrameInfo is null"); - return; - } - - StringBuilder frameInfo = new StringBuilder(""); - frameInfo.append(("\tFrameNum[" + stFrameInfo.frameNum + "]")); - frameInfo.append("\tWidth[" + stFrameInfo.width + "]"); - frameInfo.append("\tHeight[" + stFrameInfo.height + "]"); - frameInfo.append(String.format("\tPixelType[%#x]", stFrameInfo.pixelType.getnValue())); - - System.out.println(frameInfo.toString()); - } - - public static int chooseCamera(ArrayList stDeviceList) { - if (null == stDeviceList) { - return -1; - } - - // Choose a device to operate - int camIndex = -1; - - while (true) { - System.out.print("Please input camera index:"); - if (scanner.hasNextInt()) { - try { - - camIndex = scanner.nextInt(); - if ((camIndex >= 0 && camIndex < stDeviceList.size()) || -1 == camIndex) { - break; - } else { - System.out.println("Input error: " + camIndex + " Over Range:( 0 - " + (stDeviceList.size() - 1) + " )"); - } - } catch (NumberFormatException e) { - System.out.println("Input not number."); - camIndex = -1; - break; - } - } else { - camIndex = -1; - break; - } - - } - if (-1 == camIndex) { - System.out.println("Input error.exit"); - return camIndex; - } - - if (0 <= camIndex && stDeviceList.size() > camIndex) { - if ((MV_GIGE_DEVICE == stDeviceList.get(camIndex).transportLayerType) || (MV_GENTL_GIGE_DEVICE == stDeviceList.get(camIndex).transportLayerType)) { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).gigEInfo.userDefinedName); - } else if (MV_USB_DEVICE == stDeviceList.get(camIndex).transportLayerType) { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).usb3VInfo.userDefinedName); - } else if (MV_GENTL_CAMERALINK_DEVICE == stDeviceList.get(camIndex).transportLayerType) { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).cmlInfo.DeviceID); - } else if (MV_GENTL_CXP_DEVICE == stDeviceList.get(camIndex).transportLayerType) { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).cxpInfo.DeviceID); - } else if (MV_GENTL_XOF_DEVICE == stDeviceList.get(camIndex).transportLayerType) { - System.out.println("Connect to camera[" + camIndex + "]: " + stDeviceList.get(camIndex).xofInfo.DeviceID); - } else { - System.out.println("Device is not supported."); - } - } else { - System.out.println("Invalid index " + camIndex); - camIndex = -1; - } - - return camIndex; - } - - public static void main(String[] args) { - int nRet = MV_OK; - int camIndex = -1; - scanner = new Scanner(System.in); - - Handle hCamera = null; - ArrayList stDeviceList = null; - - do { - System.out.println("SDK Version " + MvCameraControl.MV_CC_GetSDKVersion()); - - // Initialize SDK - nRet = MvCameraControl.MV_CC_Initialize(); - if (MV_OK != nRet) { - System.err.printf("Initialize SDK fail! nRet [0x%x]\n\n", nRet); - break; - } - - // Enumerate devices - try { - stDeviceList = MvCameraControl.MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE | MV_GENTL_GIGE_DEVICE | MV_GENTL_CAMERALINK_DEVICE | MV_GENTL_CXP_DEVICE | MV_GENTL_XOF_DEVICE); - } catch (CameraControlException e) { - System.err.println("Enumrate devices failed!" + e.toString()); - e.printStackTrace(); - break; - } - - if (0 >= stDeviceList.size()) { - System.out.println("No devices found!"); - break; - } - int i = 0; - for (MV_CC_DEVICE_INFO stDeviceInfo : stDeviceList) { - if (null == stDeviceInfo) { - continue; - } - System.out.println("[camera " + (i++) + "]"); - printDeviceInfo(stDeviceInfo); - } - - // choose camera - camIndex = chooseCamera(stDeviceList); - if (-1 == camIndex) { - break; - } - - // Create device handle - try { - hCamera = MvCameraControl.MV_CC_CreateHandle(stDeviceList.get(camIndex)); - } catch (CameraControlException e) { - System.err.println("Create handle failed!" + e.toString()); - e.printStackTrace(); - hCamera = null; - break; - } - - // Open selected device - nRet = MvCameraControl.MV_CC_OpenDevice(hCamera); - if (MV_OK != nRet) { - System.err.printf("Connect to camera failed, errcode: [%#x]\n", nRet); - break; - } - - // Register image callback - nRet = MvCameraControl.MV_CC_RegisterImageCallBack(hCamera, new CameraImageCallBack() { - @Override - public int OnImageCallBack(byte[] bytes, MV_FRAME_OUT_INFO mv_frame_out_info) { - printFrameInfo(mv_frame_out_info); - return 0; - } - }); - if (MV_OK != nRet) { - System.err.printf("register image callback failed, errcode: [%#x]\n", nRet); - break; - } - - - // Turn off trigger mode - nRet = MvCameraControl.MV_CC_SetEnumValueByString(hCamera, "TriggerMode", "Off"); - if (MV_OK != nRet) { - System.err.printf("SetTriggerMode failed, errcode: [%#x]\n", nRet); - break; - } - - - nRet = MvCameraControl.MV_CC_StartGrabbing(hCamera); - if (MV_OK != nRet) { - System.err.printf("StartGrabbing failed, errcode: [%#x]\n", nRet); - break; - } - - scanner.useDelimiter(""); - System.out.println("Press Enter to exit."); - while (true) { - String input = scanner.nextLine(); - if (scanner.hasNextLine()) { - break; - } else { - try { - Thread.sleep(1 * 10); - } catch (InterruptedException e) { - e.printStackTrace(); - break; - } - } - - } - - // Stop grabbing - nRet = MvCameraControl.MV_CC_StopGrabbing(hCamera); - if (MV_OK != nRet) { - System.err.printf("StopGrabbing failed, errcode: [%#x]\n", nRet); - break; - } - - // close device - nRet = MvCameraControl.MV_CC_CloseDevice(hCamera); - if (MV_OK != nRet) { - System.err.printf("CloseDevice failed, errcode: [%#x]\n", nRet); - break; - } - - } while (false); - - if (null != hCamera) { - // Destroy handle - nRet = MvCameraControl.MV_CC_DestroyHandle(hCamera); - if (MV_OK != nRet) { - System.err.printf("DestroyHandle failed, errcode: [%#x]\n", nRet); - } - } - MvCameraControl.MV_CC_Finalize(); - scanner.close(); - } -} diff --git a/wms-webapi/src/main/java/top/wms/admin/controller/meterial/MaterialInfoController.java b/wms-webapi/src/main/java/top/wms/admin/controller/meterial/MaterialInfoController.java index b661f77..4b22a31 100644 --- a/wms-webapi/src/main/java/top/wms/admin/controller/meterial/MaterialInfoController.java +++ b/wms-webapi/src/main/java/top/wms/admin/controller/meterial/MaterialInfoController.java @@ -46,7 +46,7 @@ public class MaterialInfoController extends BaseController