Visual C# yürütülebilir dosyası yapıyorum ve 3 LED için Arduino kodunda tanımlanan iki durum için' A 've' B 'gönderen bir for döngüsü kullanmak istiyorum:Visual C# 'de Gecikme - 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);
}
}
}
Ve bu, benim bir metin kutusundan döngü sayısını almak ve sonra AB, AB, ... yapmak için Visual C# kodumdur (n times - metin kutusundaki numaraya eşittir).
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);
}
ben tamamlanana kadar benim Arduino devam ediyor ise benim programda döngü çok yakında bitirir (ABs bir demet gönderir ve daha sonra durur) gerçekleşmiştir. Programıma gecikme ekleyebileceğim bir yol var mı? Ben iş parçacığı seçeneği, problem yarattığı için uygun bir yol olmadığını okudum ... Herhangi bir öneri?
Sanırım bir gönderiyi bir seriport1.flush içine koymak istiyorsun ve göndermek a göndermek b –
@Someonethatmatters Yorumunuz için teşekkürler. Serialport1.basestream.flush() öğesini denedim; ama hiçbir şey yapmıyor. Arduino 1 dakika sonra bitirirken C# döngüsüm ikinci sırada tamamlandı. – Kamran