static public double get_z字母后Value(string inLine, char az)// 字符串 , 字母
{
// 1获取1行====================== "G0-00123.4567000"
string str源数据 = inLine;
// 2有效的数据===================
if (str源数据.IndexOf(az) != -1)
{
int z_值长度 = 0;
// 3 浮点数=============================================
string zhi = str源数据.Split(az)[1];// 小数str
foreach (char item in zhi)
{
if (item >= '0' && item <= '9' || item == '.' || item == '-') ++z_值长度;
else break;
}
// 4 取出数值==========================================
string val = zhi.Substring(0, z_值长度);
double ret = double.Parse(val);
return ret;
}
return -1.0;// 无效
}
public double get_AXIS_坐标2(string data)
{//G0X9.896Y10.158Z1.000F10000
g_指令 = (int)getNUM('G', data);
f_速度 = (int)getNUM('F', data);
x_坐标 = getNUM('X', data);
y_坐标 = getNUM('Y', data);
z_坐标 = getNUM('Z', data);
e_坐标 = getNUM('E', data);
a_坐标 = getNUM('A', data);
b_坐标 = getNUM('B', data);
c_坐标 = getNUM('C', data);
return 0;
}
double getNUM(char key, string data)
{//G0X9.896Y10.158Z1.000F10000
string data1, data2;
if (data.IndexOf(key) != -1)
{
data1 = data.Split(key)[1];//去头
data2 = get_去尾(data1);//去尾
return double.Parse(data2);
}
return -1;
}
static string get_去尾(string str)
{
for (int i = 0; i < str.Length; i++)
{
string num = str.Substring(i, 1);
if (num == "-" ||num == "." ||
num == "0" || num == "1" || num == "2" || num == "3" || num == "4" ||
num == "5" || num == "6" || num == "7" || num == "8" || num == "9") { }
else
{
return str.Substring(0, i);
}
}
return str;
}
static public double get_decimal(string data, char key)// 获取字母后的小数
{//G0X-9.896Y10.158Z-1.000F10000
string data1, data2;
if (data.IndexOf(key) != -1)
{
data1 = data.Split(key)[1];//去头
data2 = get_去尾(data1);//去尾
try
{
return double.Parse(data2);
}
catch (Exception)
{
return -1.0;//错误
}
}
return -1.0;
}