提取EPSON机器人示教点位pts文件中的点位信息

提取EPSON机器⼈⽰教点位pts⽂件中的点位信息由于操作需要,写了⼀个程序将爱普⽣机器⼈(EPSON)的pts⽂件中的点位信息进⾏提取,如下:
package main
import (
"bufio"
"encoding/csv"
"flag"
"fmt"
"io"
"log"
"os"
"path/filepath"
"strconv"
"strings"
)
const SKIPPED  = 7
const POINT_SEG_LEN = 26
func CheckError(message string, err error) {
if err != nil {
log.Fatal(message, err)
}
}
func main() {
var sval = flag.String("i", "", "where is the Pts file")
var oval = flag.String("o", "", "output file location")
var numOfPoints int
var filePathName string
var locX, locY, locZ, rotU string
flag.Parse()
// 创建⼀个⽂件⽤来写⼊csv数据
if len(*oval) == 0 {
re, _ := os.Executable()
filePathName = filepath.Dir(re) + "/"  + "parsed_points.csv"
} else {
filePathName = *oval + "/parsed_points.csv"
}
// ⽂件不存在时将直接创建
file, e := os.OpenFile(filePathName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
CheckError("Cannot open file !",e)
defer file.Close()
fi, err := os.Open(*sval)
if err != nil {
log.Println(err.Error())
return
}
defer fi.Close()
// 解析Pts⽂件
rd := bufio.NewReader(fi)
lineCounter := 0
for {
lineCounter++
设备防尘罩line, err := rd.ReadString('\n') //以'\n'为结束符读⼊⼀⾏
if err != nil || io.EOF == err {
if err != nil || io.EOF == err {
break
}
sip网关/
/ 解析点数
if lineCounter == SKIPPED {
strs := strings.Split(line, "=")
// 取坐标值
围墙铁丝网num := strs[1][0:len(strs[1]) - 2]
numOfPoints, _ = strconv.Atoi(num)
for i := 0; i < numOfPoints; i++ {
for j := 0; j < POINT_SEG_LEN; j++ {
line, err = rd.ReadString('\n') //以'\n'为结束符读⼊⼀⾏
strs := strings.Split(line, "=")
// 判断所取的坐标类型
switch j {
case 5 :
locX = strs[1][0:len(strs[1]) - 2]
case 6 :
locY = strs[1][0:len(strs[1]) - 2]
case 7 :
locZ = strs[1][0:len(strs[1]) - 2]
case 8 :
rotU = strs[1][0:len(strs[1]) - 2]
}
}
writer := csv.NewWriter(file)
index := strconv.Itoa(i)
var ss = []string{index, locX, locY, locZ, rotU}
err := writer.Write(ss)
CheckError("cannot write to csv file", err)
writer.Flush()
}
break
}
}
fmt.Println("Job Done ")
}
黄油嘴上述程序使⽤的Pts⽂件格式如下,我只⽰意提取了其中的x,y,z,u四个数据信息。EPSON pts⽂件格式:
ENVT0100,LM:2020/05/12 11:10:31:596,DS:0000004043,CS:08739,MA:1A-3D-A2-EC-3F-24,EI:          sVersion="2.0.0"
bDisplayR=False
bDisplayS=False
bDisplayT=False
nNumberOfJoints=4
nNumberOfPoints=1
Point1 {
nNumber=0
sLabel="quliaowei"
sDescription=""
nUndefined=0
rX=643.341
rY=70.537
rZ=-0.44
rU=226.35
rV=0
rW=0
rR=0
rS=0
rT=0
nLocal=0
nHand=2
正火工艺nElbow=1
nWrist=1
nJ1Flag=0
nJ2Flag=0
nJ4Flag=0
nJ6Flag=0
3837CcrJ1Angle=0
rJ4Angle=0
bSimVisible=False
}
编译后的使⽤⽅法如下,假定程序名为RobtotPointParser:
./RobotPointParser [-i] [inputfile location, pts format] [-o] [output file location, csv format]
-i: 表⽰输⼊⽂件的位置;
-o: 提定输出⽂件的路径。

本文发布于:2024-09-22 17:23:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/253219.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信息   点位   程序   输出   类型
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议