//new file private void fileToolStripMenuItem_Click(object sender, EventArgs e) { if (File.Exists("offset.txt")) using (StreamReader reader = new StreamReader(Environment.CurrentDirectory + "\\offset.txt")) { string[] datas = reader.ReadToEnd().Split(delimiterChars); for (int i = 0; i < 32; i++) { offset[i] = uint.Parse(datas[i]); } } else for (int i = 0; i < 32; i++) { offset[i] = 0; } if (File.Exists("homeframe.txt")) using (StreamReader reader = new StreamReader(Environment.CurrentDirectory + "\\homeframe.txt")) { string[] datas = reader.ReadToEnd().Split(delimiterChars); for (int i = 0; i < 32; i++) { homeframe[i] = uint.Parse(datas[i]); } } else for (int i = 0; i < 32; i++) { homeframe[i] = 0; } if (File.Exists("Range.txt")) using (StreamReader reader = new StreamReader(Environment.CurrentDirectory + "\\Range.txt")) { string[] datas = reader.ReadToEnd().Split(delimiterChars); for (int i = 0; i < 32; i++) { min[i] = uint.Parse(datas[i]); Max[i] = uint.Parse(datas[i + 32]); } } else for (int i = 0; i < 32; i++) { min[i] = 600; Max[i] = 2300; } if (Motion != null) { if (!onPC) RoBoIO.rcservo_Close(); DialogResult dialogResult = MessageBox.Show("Do you want to save?", "", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { saveFileToolStripMenuItem_Click(sender, e); } } NewMotion nMotion = new NewMotion(); nMotion.ShowDialog(); if (nMotion.DialogResult == DialogResult.OK) { Motion = nMotion; groupBox2.Enabled = true; groupBox3.Enabled = true; saveFileToolStripMenuItem.Enabled = true; optionToolStripMenuItem.Enabled = true; NewMotion.Enabled = false; ME_Triggerlist = new ArrayList(); ME_Motionlist = new ArrayList(); triggerlist.Items.Clear(); MotionCombo.Items.Clear(); MotionCombo.Text = ""; Motionlist.Items.Clear(); delaytext.Text = "0"; typecombo.Text = ""; for (int i = 0; i < 32; i++) { offset[i] = uint.Parse(nMotion.ftext[i].Text); homeframe[i] = uint.Parse(nMotion.ftext2[i].Text); min[i] = uint.Parse(nMotion.ftext3[i].Text); Max[i] = uint.Parse(nMotion.ftext4[i].Text); } if (!onPC) { set_RBver(); set_RCservo(); } if(nMotion.picfilename != null) Framelist.BackgroundImage = Image.FromFile(Environment.CurrentDirectory + "\\" + nMotion.picfilename); } }
//load file private void actionToolStripMenuItem_Click(object sender, EventArgs e) { if (Motion != null) { if (!onPC) RoBoIO.rcservo_Close(); DialogResult dialogResult = MessageBox.Show("Do you want to save?", "", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { saveFileToolStripMenuItem_Click(sender,e); } } NewMotion nMotion = new NewMotion(); ME_Triggerlist = new ArrayList(); ME_Motionlist = new ArrayList(); string[] rbver = new string[] { "---unset---", "RB_100b1", "RB_100b2", "RB_100b3", "RB_100", "RB_100RD", "RB_110", "unknow"}; string[] servo = new string[] { "---noServo---", "KONDO_KRS786", "KONDO_KRS788", "KONDO_KRS78X", "KONDO_KRS4014", "KONDO_KRS4024", "HITEC_HSR8498", "FUTABA_S3003", "SHAYYE_SYS214050", "TOWERPRO_MG995", "TOWERPRO_MG996", "DMP_RS0263", "DMP_RS1270", "GWS_S777", "GWS_S03T", "GWS_MICRO"}; ME_Motion motiontag = null; OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "rbm files (*.rbm)|*.rbm"; dialog.InitialDirectory = Environment.CurrentDirectory + "\\"; dialog.Title = "Open File"; String filename = (dialog.ShowDialog() == DialogResult.OK) ? dialog.FileName : null; if (filename == null) { return; } using (StreamReader reader = new StreamReader(filename)) { nfilename = Path.GetFileName(dialog.FileName); triggerlist.Items.Clear(); MotionCombo.Items.Clear(); MotionCombo.Text = ""; Motionlist.Items.Clear(); delaytext.Text = "0"; typecombo.Text = ""; string[] datas = reader.ReadToEnd().Split(delimiterChars); for (int i = 0; i < datas.Length; i++) { if (String.Compare(datas[i], "RoBoardVer") == 0) { i++; for (int j = 0; j < rbver.Length; j++) if (String.Compare(datas[i], rbver[j]) == 0) { nMotion.comboBox1.SelectedIndex = j; } } else if (String.Compare(datas[i], "Homeframe") == 0) { i++; if (String.Compare(datas[i], "Yes") == 0) nMotion.checkBox1.Checked = true; else nMotion.checkBox1.Checked = false; } else if (String.Compare(datas[i], "Range") == 0) { i++; if (String.Compare(datas[i], "Yes") == 0) nMotion.checkBox2.Checked = true; else nMotion.checkBox2.Checked = false; } else if (String.Compare(datas[i], "Servo") == 0) { for (int k = 0; k < 32; k++) { i++; for (int j = 0; j < servo.Length; j++) if (String.Compare(datas[i], servo[j]) == 0) nMotion.fbox[k].SelectedIndex = j; } } else if (String.Compare(datas[i], "Trigger") == 0) { ME_Trigger m = new ME_Trigger(); i++; m.key = datas[i]; i++; if (String.Compare(datas[i], "null") != 0) { m.motion = new ME_Motion(); m.motion.name = datas[i]; ME_Motionlist.Add(m.motion); } else m.motion = null; ME_Triggerlist.Add(m); } else if (String.Compare(datas[i], "Motion") == 0) { i++; for (int j = 0; j < ME_Motionlist.Count; j++) { motiontag = (ME_Motion)ME_Motionlist[j]; if (String.Compare(datas[i], motiontag.name) != 0) motiontag = null; else break; } if (motiontag == null) { motiontag = new ME_Motion(); motiontag.name = datas[i]; ME_Motionlist.Add(motiontag); } } else if (String.Compare(datas[i], "MotionEnd") == 0) { i++; if (String.Compare(datas[i], motiontag.name) == 0) motiontag = null; } else if (String.Compare(datas[i], "frame") == 0) { ME_Frame nframe = new ME_Frame(); i++; nframe.delay = int.Parse(datas[i]); int j = 0; while (j < 32) { if (String.Compare(nMotion.fbox[j].SelectedItem.ToString(), "---noServo---") != 0) { i++; nframe.frame[j] = int.Parse(datas[i]); } else { nframe.frame[j] = 0; } j++; } motiontag.Events.Add(nframe); } else if (String.Compare(datas[i], "delay") == 0) { ME_Delay ndelay = new ME_Delay(); i++; ndelay.delay = int.Parse(datas[i]); motiontag.Events.Add(ndelay); } else if (String.Compare(datas[i], "sound") == 0) { ME_Sound nsound = new ME_Sound(); i++; nsound.filename = datas[i]; i++; nsound.delay = int.Parse(datas[i]); motiontag.Events.Add(nsound); } else if (String.Compare(datas[i], "flag") == 0) { ME_Flag nflag = new ME_Flag(); i++; nflag.name = datas[i]; motiontag.Events.Add(nflag); } else if (String.Compare(datas[i], "goto") == 0) { ME_Goto ngoto = new ME_Goto(); i++; ngoto.name = datas[i]; i++; ngoto.key = datas[i]; motiontag.Events.Add(ngoto); } } } if (File.Exists("offset.txt")) using (StreamReader reader = new StreamReader(Environment.CurrentDirectory + "\\offset.txt")) { string[] datas = reader.ReadToEnd().Split(delimiterChars); for (int i = 0; i < 32; i++) { offset[i] = uint.Parse(datas[i]); } } else for (int i = 0; i < 32; i++) { offset[i] = 0; } if (File.Exists("homeframe.txt")) using (StreamReader reader = new StreamReader(Environment.CurrentDirectory + "\\homeframe.txt")) { string[] datas = reader.ReadToEnd().Split(delimiterChars); for (int i = 0; i < 32; i++) { homeframe[i] = uint.Parse(datas[i]); } } else for (int i = 0; i < 32; i++) { homeframe[i] = 0; } if (File.Exists("Range.txt")) using (StreamReader reader = new StreamReader(Environment.CurrentDirectory + "\\Range.txt")) { string[] datas = reader.ReadToEnd().Split(delimiterChars); for (int i = 0; i < 32; i++) { min[i] = uint.Parse(datas[i]); Max[i] = uint.Parse(datas[i + 32]); } } else for (int i = 0; i < 32; i++) { min[i] = 600; Max[i] = 2300; } if (nMotion.picfilename != null) Framelist.BackgroundImage = Image.FromFile(Environment.CurrentDirectory + "\\" + nMotion.picfilename); groupBox2.Enabled = true; groupBox3.Enabled = true; optionToolStripMenuItem.Enabled = true; saveFileToolStripMenuItem.Enabled = true; NewMotion.Enabled = false; Motion = nMotion; for (int i = 0; i < ME_Motionlist.Count; i++) { ME_Motion m = (ME_Motion)ME_Motionlist[i]; MotionCombo.Items.Add(m.name); } for (int i = 0; i < ME_Triggerlist.Count; i++) { ME_Trigger t = (ME_Trigger)ME_Triggerlist[i]; if(t.motion != null) triggerlist.Items.Add("Trigger: " + t.key + "\tMotion: " + t.motion.name); else triggerlist.Items.Add("Trigger: " + t.key + "\tMotion: "); } if (!onPC) { set_RBver(); set_RCservo(); } }