从激光干涉仪中,标出来的数据,要补偿到运动控制卡系统,从而实现位置补偿功能,进行um级别精确控制。
知识点:
1,文本文件读取;
2,字符串 string 截取、分割等;
需要把绿框内的数据解析出来;
读取文件 -----解析
private void btnPars_Click(object sender, EventArgs e)
{
string org = null;
//读取文件数据
using (var r = new StreamReader(_filePath))
{
org = r.ReadToEnd();
richTextBoxOrg.Text = org;
}
string[] pars = new string[2000];
//按行解析
pars = org.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string targetString;
int TargetNum = 0;
bool bStartGet = false;
int count = 0;
List<string> DateList = new List<string>();
foreach(var f in pars)
{
int ftc = f.IndexOf("Target-count:");
if (ftc == 0)
{
targetString = f;
int index = f.IndexOf(':');
string nu = f.Substring(index + 1);
//读取数据的个数
TargetNum = int.Parse(nu);
}
if(f.IndexOf("Run Target Data:") == 0)
{
bStartGet = true;
continue;
}
//获取全部补偿的数据
if(bStartGet && count < TargetNum*2)
{
DateList.Add(f);
count++;
}
}
richTextBoxAferPars.Text = "";
List<string> posList = new List<string>();
//获取最后数据 正向
posList = GetPositiveArray(DateList, TargetNum,0);
richTextBoxAferPars.AppendText("单向数组长度 Pos: " + TargetNum.ToString() + "\r\n");
foreach (var p in posList)
{
richTextBoxAferPars.AppendText(p + "\r\n");
}
//获取最后数据 正向
posList = GetPositiveArray(DateList, TargetNum, 1);
richTextBoxAferPars.AppendText("单向数组长度 Net: " + TargetNum.ToString() + "\r\n");
foreach (var p in posList)
{
richTextBoxAferPars.AppendText(p + "\r\n");
}
}
/// <summary>
/// 获取最后解析数据
/// </summary>
/// <param name="list"></param>
/// <param name="count"></param>
/// <param name="mode"> 0 正向 ;1 反向 </param>
/// <returns></returns>
private List<string> GetPositiveArray(List<string> list,int count,int mode = 0)
{
List<string> posList = new List<string>();
if(mode == 0)
{
for (int i = 0; i < count; i++)
{
string[] date = list[i].Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
posList.Add(date[2]);
}
}
else
{
for (int i = 0; i < count; i++)
{
string[] date = list[count*2 - i -1].Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
posList.Add(date[2]);
}
}
return posList;
}
运动控制,需要返回 long[] 数组格式的,再转化就OK了。