私は現在、プロジェクトに取り組んでいます。しかし、私は C# があまり得意ではありません。G コード ファイルを開いてデータを読み取り、USB 経由で CNC マシンに送信する必要があります。データを読み取って送信できます。しかし今、私は1行を読んでUSB経由で送信し、次の行を読みたいと思っています。以下に、Gコードファイルとその他の関連データを読み取るために使用したコードを添付しました。
g コード ファイルを開き、すべてのデータをテキスト ボックスに読み込みます。
private void btnopen_Click(object sender, EventArgs e)
{
//OpenFileDialog1.ShowDialog();
OpenFileDialog file = new OpenFileDialog();
file.FileName = "";
file.Title = "Open A Text document.";
file.Filter = "(*.gc)|*.gc|(*.etf)|*.etf|(*.txt)|*.txt|(*.GC)|*.GC|(*.tap)|*.tap";
DialogResult result = file.ShowDialog();
if (result == DialogResult.OK)
{
System.IO.StreamReader OpenFile = new System.IO.StreamReader(file.FileName);
textBox1.Text = OpenFile.ReadToEnd();
OpenFile.Close();
}
開いたファイルから XYZ 座標を読み取ります。
private void button1_Click(object sender, EventArgs e)
{
Regex Gcode = new Regex("[ngxyzf][+-]?[0-9]*\\.?[0-9]*", RegexOptions.IgnoreCase);
MatchCollection m = Gcode.Matches(this.textBox1.Text);
double X, Y, Z, F;
int g_code = 0;
int x_code = 0, y_code = 0, z_code = 0;
float x = 0, y = 0, z = 0;
foreach (Match n in m)
{
if (n.Value.StartsWith("G"))
{
g_code = Convert.ToInt32(ExtractNumbers(n.Value));
}
if (n.Value.StartsWith("X"))
{
x = float.Parse(ExtractNumbers(n.Value));
x = x * 1000;
x_code = Convert.ToInt32(x);
}
if (n.Value.StartsWith("Y"))
{
y = float.Parse(ExtractNumbers(n.Value));
y = y * 1000;
y_code = Convert.ToInt32(y);
}
if (n.Value.StartsWith("Z"))
{
z = float.Parse(ExtractNumbers(n.Value));
z = z * 1000;
z_code = Convert.ToInt32(z);
}
}
ExchangeInputAndOutputReports(g_code,x_code, y_code,z_code);
}