1 | using System;
|
2 | using System.Collections.Generic;
|
3 | using System.ComponentModel;
|
4 | using System.Data;
|
5 | using System.Drawing;
|
6 | using System.Linq;
|
7 | using System.Text;
|
8 | using System.Threading.Tasks;
|
9 | using System.Windows.Forms;
|
10 | using System.IO.Ports;
|
11 | using CommandsPD4I;
|
12 |
|
13 | namespace CSharpExample
|
14 | {
|
15 | public partial class CSharpExample : Form
|
16 | {
|
17 | public ComMotorCommands motor1;
|
18 |
|
19 | int aktuellePosition = 0;
|
20 | int kraft = 0;
|
21 | int kraftOffset = 0;
|
22 | int maxKraft = 600;
|
23 | int modusValue = 0;
|
24 | int ose = 0;
|
25 | int originalKraft = 0;
|
26 | int startpos = 0;
|
27 | int use = 6000;
|
28 | int zyklenAnzahl = 1;
|
29 | int zyklusCount = 0;
|
30 | bool zyklusLaeuft = false;
|
31 |
|
32 | public CSharpExample()
|
33 | {
|
34 | InitializeComponent();
|
35 | motor1 = new ComMotorCommands();
|
36 |
|
37 | //Comboboxen befüllen
|
38 | foreach (var item in SerialPort.GetPortNames())
|
39 | {
|
40 | cbArduinoConnect.Items.Add(item);
|
41 | cbMotorConnect.Items.Add(item);
|
42 | }
|
43 | cbArduinoConnect.Text = cbArduinoConnect.Items[0].ToString();
|
44 | cbMotorConnect.Text = cbArduinoConnect.Items[0].ToString();
|
45 | }
|
46 |
|
47 | delegate void InvokeLB(string Data);
|
48 | InvokeLB lbRecievedDelegate;
|
49 |
|
50 | private void btnArduinoVerbinden_Click(object sender, EventArgs e)
|
51 | {
|
52 | arduino.PortName = cbArduinoConnect.Text;
|
53 | arduino.Open();
|
54 | if (arduino.IsOpen)
|
55 | {
|
56 | lblArduinoConnectStatus.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(200)))), ((int)(((byte)(0)))));
|
57 | lblArduinoConnectStatus.Text = "Arduino verbunden mit " + arduino.PortName;
|
58 | }
|
59 | lbRecievedDelegate = new InvokeLB(InvokeLBRecieved);
|
60 | arduino.DataReceived += new SerialDataReceivedEventHandler(arduino_DataReceived); //DataRecieved Event abonnieren
|
61 | }
|
62 |
|
63 | private void arduino_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
64 | {
|
65 | string RecievedLine = " ";
|
66 | while (RecievedLine != "")
|
67 | {
|
68 | RecievedLine = arduino.ReadLine();
|
69 | lblKraft.Invoke(lbRecievedDelegate, new object[] { RecievedLine });
|
70 | }
|
71 | }
|
72 |
|
73 | void InvokeLBRecieved(string Data)
|
74 | {
|
75 | string origKraft = Data;
|
76 | Int32.TryParse(origKraft, out originalKraft);
|
77 | toolStripStatusLabelKraft.Text = Convert.ToString(originalKraft - kraftOffset);
|
78 | kraft = originalKraft - kraftOffset;
|
79 | if (kraft >= maxKraft && cbZyklenmodi.Text == "Max. Kraft [N]:" && zyklusLaeuft)
|
80 | {
|
81 | motor1.StopTravelProfile();
|
82 | motor1.SetPositionType(2);
|
83 | motor1.SetSteps(startpos);
|
84 | motor1.SetMaxFrequency(1000);
|
85 | motor1.StartTravelProfile();
|
86 | zyklusLaeuft = false;
|
87 | }
|
88 | }
|
89 |
|
90 | private void handsteuerungOeffnen(object sender, EventArgs e)
|
91 | {
|
92 | Handsteuerung handsteuerung = new Handsteuerung(motor1);
|
93 | handsteuerung.Show();
|
94 | }
|
95 |
|
96 | private void motorVerbinden(object sender, EventArgs e)
|
97 | {
|
98 | //Motoreinstellungen
|
99 | motor1.SelectedPort = cbMotorConnect.Text;
|
100 | motor1.Baudrate = 115200;
|
101 | motor1.MotorAddresse = 1;
|
102 | if (motor1.ErrorFlag)
|
103 | {
|
104 | lblMotorConnectStatus.Text = motor1.ErrorMessageString;
|
105 | }
|
106 | else
|
107 | {
|
108 | lblMotorConnectStatus.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(200)))), ((int)(((byte)(0)))));
|
109 | lblMotorConnectStatus.Text = "Motor verbunden mit " + motor1.SelectedPort;
|
110 | timer.Enabled = true;
|
111 | toolStripStatusLabelPos.Text = Convert.ToString(motor1.GetPosition());
|
112 | }
|
113 | }
|
114 |
|
115 | private void timer_Tick(object sender, EventArgs e)
|
116 | {
|
117 | aktuellePosition = motor1.GetPosition();
|
118 | toolStripStatusLabelPos.Text = Convert.ToString(motor1.GetPosition());
|
119 | lblZyklusCount.Text = Convert.ToString(zyklusCount);
|
120 | chart1.Series["Kraft"].Points.AddXY(aktuellePosition, kraft);
|
121 | if (aktuellePosition == startpos)
|
122 | {
|
123 | if (zyklusCount > 0 && zyklusCount < zyklenAnzahl)
|
124 | {
|
125 | startZyklus();
|
126 | }
|
127 | else if (zyklusCount == zyklenAnzahl)
|
128 | {
|
129 | zyklusCount = 0;
|
130 | }
|
131 | }
|
132 | if (aktuellePosition == modusValue && cbZyklenmodi.Text == "Position:" && zyklusLaeuft)
|
133 | {
|
134 | motor1.SetPositionType(2);
|
135 | motor1.SetSteps(startpos);
|
136 | motor1.SetMaxFrequency(1000);
|
137 | motor1.StartTravelProfile();
|
138 | zyklusLaeuft = false;
|
139 | }
|
140 | }
|
141 |
|
142 | private void toolStripBtnStartposUebernehmen_Click(object sender, EventArgs e)
|
143 | {
|
144 | startpos = motor1.GetPosition();
|
145 | }
|
146 |
|
147 | private void toolStripBtnStartPos_Click(object sender, EventArgs e)
|
148 | {
|
149 | motor1.SetSteps(startpos);
|
150 | motor1.SetMaxFrequency(1000);
|
151 | motor1.SetPositionType(2);
|
152 | motor1.StartTravelProfile();
|
153 | }
|
154 |
|
155 | private void toolStripBtnStop_Click(object sender, EventArgs e)
|
156 | {
|
157 | motor1.StopTravelProfile();
|
158 | chart1.Series["Kraft"].Points.Clear();
|
159 | zyklusCount = 0;
|
160 | }
|
161 |
|
162 | private void toolStripBtnZurueck_Click(object sender, EventArgs e)
|
163 | {
|
164 | motor1.SetMaxFrequency(1000);
|
165 | motor1.SetDirection(0);
|
166 | motor1.SetPositionType(4);
|
167 | motor1.StartTravelProfile();
|
168 | }
|
169 |
|
170 | private void btnUebernehmen_Click(object sender, EventArgs e)
|
171 | {
|
172 | if (Int32.TryParse(tbOSE.Text, out ose) && Int32.TryParse(tbUSE.Text, out use) &&
|
173 | Int32.TryParse(tbModus.Text, out maxKraft) && Int32.TryParse(tbZyklenAnzahl.Text, out zyklenAnzahl) &&
|
174 | Int32.TryParse(tbModus.Text, out modusValue))
|
175 | {
|
176 | MessageBox.Show("Werte wurden übernommen!");
|
177 | }
|
178 | else
|
179 | {
|
180 | MessageBox.Show("Fehler!");
|
181 | }
|
182 | }
|
183 |
|
184 | private void toolStripBtnKraft_0_Click(object sender, EventArgs e)
|
185 | {
|
186 | kraftOffset = originalKraft;
|
187 | }
|
188 |
|
189 | private void toolStripBtnStart_Click(object sender, EventArgs e)
|
190 | {
|
191 | startZyklus();
|
192 | }
|
193 |
|
194 | private void startZyklus()
|
195 | {
|
196 | motor1.SetMaxFrequency(100);
|
197 | motor1.SetDirection(1);
|
198 | if (cbZyklenmodi.Text == "Max. Kraft [N]:")
|
199 | {
|
200 | motor1.SetPositionType(5);
|
201 | }
|
202 | else if (cbZyklenmodi.Text == "Position:")
|
203 | {
|
204 | motor1.SetPositionType(2);
|
205 |
|
206 | int modus;
|
207 | if (Int32.TryParse(tbModus.Text, out modus))
|
208 | {
|
209 | motor1.SetSteps(modus);
|
210 | }
|
211 | else
|
212 | {
|
213 | MessageBox.Show("Falsche Eingabe!");
|
214 | }
|
215 |
|
216 | }
|
217 | motor1.StartTravelProfile();
|
218 | zyklusLaeuft = true;
|
219 | chart1.Enabled = true;
|
220 | zyklusCount++;
|
221 | }
|
222 |
|
223 | private void beendenToolStripMenuItem_Click(object sender, EventArgs e)
|
224 | {
|
225 | this.Close();
|
226 | }
|
227 |
|
228 |
|
229 | }
|
230 | }
|