我试图在openFileDialog1.FileName中设置一个按钮,检查文件的每一行,如果它包含一行中的"LCD“或”激光“和" on”,或者在同一行中包含“激光”和"off“,以及字符串".end”,然后执行一些操作。
我是C#的新手(本周开始),而且也不是以英语为母语的人。
我的目标是让我的Arduino机器人手臂(我的第一个构建非常简单)有点可编程,只是为了控制LCD和打开或关闭激光(到目前为止)。
顺便说一句,这只是模拟器,所以它从不发送任何串行数据。
下面是问题所在的代码片段,问题是当我在模拟器中“运行”代码时,它似乎是一次检查所有行,因为在代码中它检查的是
LCD = hello
laser = on
LCD = 000
laser = off它只将LCD设置为000,我以前只检查了激光= on代码,它在那里不起作用,但是当我在private void Form3_Load(object sender, EventArgs e)中尝试它时,它工作得很好,所以每个代码中的最后一个LCD命令是有效的,而激光代码永远不能工作。
另外,我想让每一行代表1秒,所以每一行都要花一秒时间才能在下一行上继续。
timer1间隔为1000 (1秒)。
private void timer1_Tick(object sender, EventArgs e)
{
int lineNumber = richTextBox1.GetLineFromCharIndex(richTextBox1.TextLength);
string[] lines = File.ReadAllLines(openFileDialog1.FileName);
try
{
for (int i = 0; i < lineNumber; i++)
{
if (lines[i].Contains("LCD"))
{
label1.Text = lines[i].Remove(0, 6);
}
if (lines[i].Contains("laser") && lines[i].Contains("On"))
{
pictureBox4.Show();
}
if (lines[i].Contains("laser") && lines[i].Contains("Off"))
{
pictureBox4.Hide();
}
if (lines[i].Contains(".end"))
{
button2.PerformClick();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Form3", MessageBoxButtons.OK, MessageBoxIcon.Error);
}发布于 2014-11-06 22:37:39
这里的问题是,您希望将执行File.ReadAllLines()的代码放在代码之外,然后再调用一次timer1_Tick()。每次计时器滴答时,你都在读取整个文件,而你真正想做的只是处理文件的一行。
https://stackoverflow.com/questions/26790653
复制相似问题