Ich mache eine Visual C# ausführbare Datei, und ich möchte eine for-Schleife verwenden, die 'A' und 'B' für die beiden im Arduino-Code definierten Fälle unten für 3 LEDs sendet:Verzögerung in Visual C# - Arduino
int data;
void setup() {
Serial.begin(9600);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available()){
data=Serial.read();
if (data=='A'){
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
delay(2000);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
else{
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
delay(10000);
}
}
}
Und das ist meine Visual C# -Code, um die Anzahl der Schleife aus einem Textfeld und dann tun, AB, AB, ... (n-mal - gleich der Zahl in der Textbox).
if (textBox1.Text != "")
{
int LoopNum = Convert.ToInt32(textBox1.Text);
for (int i=0; i < LoopNum; i++)
{
serialPort1.Write("A");
serialPort1.Write("B");
}
}
else
{
MessageBox.Show("Please select the number of cycle!", "My Application", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
erkannte ich die Schleife in meinem Programm sehr bald beendet (sendet ein Bündel von ABs und stoppt dann), während mein Arduino gehen immer wieder, bis es fertig ist. Gibt es eine Möglichkeit, dass ich meinem Programm eine Verzögerung hinzufügen kann? Ich habe gelesen, dass Thread-Option nicht geeignet ist, da es Probleme schafft ... Irgendwelche Vorschläge?
Ich denke, Sie möchten eine serialport1.flush zwischen Ihrem senden und senden senden –
@Someonethatmatters Danke für Ihren Kommentar. Ich habe versucht serialport1.basestream.flush(); aber es tut nichts. Meine C# -Schleife endet in Sekundenbruchteilen, während das Arduino 1 Minute später endet. – Kamran