Merhaba arkadaşlar benim şöyle bir problemim var. C#'da 2 textboxum var. Birinci textbox ilk göndereceğim sayı. Arduino bu sayıyı okuyacak ve eğer bu sayı 3 ise ikinci textboxa yazdığım sayı kadar ledi yakıp söndürecek. Sıkıntıda tam olarak burda çıkıyor. Arduino 3 görüyor ama diğer sayıyı algılamıyor. Arduino kodlarım: int LedPin = 12; int k, s; //int count = 0; //int data[255]; //boolean dataComplete = false; void setup() { Serial.begin(9600); pinMode(LedPin, OUTPUT); } void loop() { if (Serial.available()) { k = Serial.read(); switch (k) { case 1: openCloseThree(); break; case 2: openCloseTwice(); break; case 3: // if (dataComplete == true) // { // memset(data, 0, sizeof(data)); // } s = Serial.read(); openCloseIwanted(); break; default: break; } } } void openClose() { for (int i = 0; i < 1; i++) { delay(500); digitalWrite(LedPin, HIGH); delay(500); digitalWrite(LedPin, LOW); } } void openCloseTwice() { for (int i = 0; i < 2; i++) { delay(500); digitalWrite(LedPin, HIGH); delay(500); digitalWrite(LedPin, LOW); } } void openCloseThree() { for (int i = 0; i < 3; i++) { delay(500); digitalWrite(LedPin, HIGH); delay(500); digitalWrite(LedPin, LOW); } } void openCloseIwanted() { for (int i = 0; i < s ; i++) { delay(500); digitalWrite(LedPin, HIGH); delay(500); digitalWrite(LedPin, LOW); } } C# kodlarım: private void btnSend_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { int MyInt = Convert.ToInt32(textBox1.Text); byte b = BitConverter.GetBytes(MyInt); serialPort1.Write(b, 0, 4); if (MyInt == 3) { serialPort1.DiscardOutBuffer(); int MyInt2 = Convert.ToInt32(textBox2.Text); byte s = BitConverter.GetBytes(MyInt2); serialPort1.Write(s, 0, 4); } else { MessageBox.Show(“Continue”); } } else { MessageBox.Show(“Please check your connction maybe serial port is not connected”); } } Yardımcı olursanız çok sevinirim.
arduino kodunda sadece tek kodu okumuşun serialde okudugun degerleri bir değişken grubunda saklayıp sonra bunları tek tek degerlendırmen lazım. seri iletişim tek karakter veya byte lıktır.
Daha açıklayıcı anlatır mısınız çok iyi değilimde arduino da
öncelikle ilk textboxun bir işlevi yok arduino da sizin yazdığınız kadarıyla c# da eğer ilk text box 3 ise diğerini gönderin
musaunal Anlamadım ne demek istediğinizi
Özetle: karakter gondermek yerine dizi gönder. 1ci textboxa yazdığın değeri gönderirken paket haline çevir. 2ci textboxa yazdığın degeri gönderirken paket haline çevir. Örneğin 1 ci textboxa 4 yazdın diyelim. Arduinoya gidecek mesaj şu olsun TXTBX14; Örneğin 2ci textboxa 9124012 yazdın diyelim. Arduinoya gidecek mesaj şu olsun TXTBX29124012; Arduino tarafında ise mesaj olarak değerlendirme yap karakter olarak değil. gelen her karekteri bir dizi içerisine biriktir. Ve senin istediğin mesajlardan birtanesi gelmiş mi diye ara ÖRneğin if(gelenkarakter == ‘T’) OK ise if(if(gelenkarakter == ‘X’)) OK ise if(if(gelenkarakter == ‘T’)) … gibi.