Commit e4f93e45 authored by wanghao's avatar wanghao

1 当机械臂返回 PPP OK 完成 -1,0,0,0的时候检测不到 完成问题调整

parent d926ca7e
package com.zehong.system.udp; package com.zehong.system.udp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -9,27 +12,41 @@ import java.util.regex.Pattern; ...@@ -9,27 +12,41 @@ import java.util.regex.Pattern;
* @description TODO * @description TODO
*/ */
public class RobotArmMessageParser { public class RobotArmMessageParser {
private static final Logger log = LoggerFactory.getLogger(RobotArmMessageParser.class);
// private static final Pattern STATUS_PATTERN = Pattern.compile(
// "PPP (\\w+) (\\S+)(?: (\\d+),(\\d+),(\\d+),(\\d+),)?"
// );
// 修改正则表达式,支持负数的坐标
private static final Pattern STATUS_PATTERN = Pattern.compile( private static final Pattern STATUS_PATTERN = Pattern.compile(
"PPP (\\w+) (\\S+)(?: (\\d+),(\\d+),(\\d+),(\\d+),)?" "PPP (\\w+) (\\S+)(?: (-?\\d+),(-?\\d+),(-?\\d+),(-?\\d+),)?"
); );
// 坐标判定的误差范围(-2到2之间) // 坐标判定的误差范围(-2到2之间)
private static final int COORDINATE_TOLERANCE = 2; private static final int COORDINATE_TOLERANCE = 2;
public static RobotArmStatus parseMessage(String message) { public static RobotArmStatus parseMessage(String message) {
log.info("正在解析消息: {}", message);
Matcher matcher = STATUS_PATTERN.matcher(message); Matcher matcher = STATUS_PATTERN.matcher(message);
if (matcher.find()) { if (matcher.find()) {
log.info("正则匹配成功:");
String statusCode = matcher.group(1); String statusCode = matcher.group(1);
String statusText = matcher.group(2); String statusText = matcher.group(2);
String x = matcher.group(3); String x = matcher.group(3);
String y = matcher.group(4); String y = matcher.group(4);
String z = matcher.group(5); String z = matcher.group(5);
String r = matcher.group(6); String r = matcher.group(6);
RobotArmStatus status = new RobotArmStatus(statusCode, statusText,
return new RobotArmStatus(statusCode, statusText,
parseCoord(x), parseCoord(y), parseCoord(x), parseCoord(y),
parseCoord(z), parseCoord(r)); parseCoord(z), parseCoord(r));
log.debug("解析结果: code={}, text={}, x={}, y={}, z={}, r={}, isFullyIdle={}",
statusCode, statusText, status.x, status.y, status.z, status.r,
status.isFullyIdle());
return status;
// return new RobotArmStatus(statusCode, statusText,
// parseCoord(x), parseCoord(y),
// parseCoord(z), parseCoord(r));
} }
log.info("正则匹配失败,消息格式不正确: {}", message);
return null; return null;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment