Arduino - Visual Basic Ethernet Protocol Problem

Merhaba Değerli Arkadaşlar… Visual Basic ara yüzünü kullanarak oluşturmaya çalıştığın bir projem var. Kullandığım donanımsal ekipmanlarım ise; Arduino Mega 2560, Arduino Ethernet Shield, Röle kartları ve ağ için gerekli olan network switch. Kısaca biraz tanımlayayım; Evde yada ofiste oluşturacağımız bir network ağına (internet bağlantısına gerek yok) visual basic ile oluşturduğumuz interface ile hedeflediğimiz arduino grubuna komutlar göndermek istiyorum. Arduino gruplarına gelen komutlar ile istediğim röleyi kontrol etmek istiyorum. İşin bu kısmını çalışır hale getirdim ! Belirli aralıklarla komut gönderdiğimde sistem rahat bir şekilde işliyor, fakat sıkıntılı olan tarafı art arda komut gönderdiğimde program hataya düşüyor ! Visual Basic kodlarında bir sıkıntı olabileceğini düşünüyorum. Çünkü sistemde sürekli komutlar olacak ve birden fazla kullanıcı olduğunu düşünürsek daha da sıkıntılı bir durum söz konusu. Arduino ve VB’de kulladığım kodları paylaşacağım. Bu sistemin çalışma durumunu anlayan arkadaşlar muhakkak anlamışlardır bir nevi scada sistemi oluşturmak istiyorum. Saygılarımla… MUTLU ÇAKIR VB CODE; If SwitchButton1.Value = True Then Try client = New TcpClient(“192.168.2.6”, 21) Dim writer As New StreamWriter(client.GetStream()) writer.Write(“A=0” & Environment.NewLine) writer.Flush() Catch ex As Exception MsgBox(ex.Message) End Try Else SwitchButton1.Value = False Try client = New TcpClient(“192.168.2.6”, 21) Dim writer As New StreamWriter(client.GetStream()) writer.Write(“A=1” & Environment.NewLine) writer.Flush() Catch ex As Exception MsgBox(ex.Message) End Try End If ARDUINO CODE; #include SPI.h> #include Ethernet.h> byte mac = { 0x54, 0x55, 0x58, 0x10, 0x00, 0x24 }; byte ip = { 192, 168, 2, 6 }; byte gateway = { 192, 168, 2, 50 }; byte subnet = { 255, 255, 255, 0 }; EthernetServer server(21); int Pin13 = 13; int Pin12 = 12; int Pin11 = 11; int Pin10 = 10; int Pin9 = 9; int Pin8 = 8; int Pin7 = 7; int Pin6 = 6; int Pin5 = 5; int Pin4 = 4; int Pin3 = 3; int Pin34 = 34; String readString = String(100); boolean Pin13ON = false; boolean Pin12ON = false; boolean Pin11ON = false; boolean Pin10ON = false; boolean Pin9ON = false; boolean Pin8ON = false; boolean Pin7ON = false; boolean Pin6ON = false; boolean Pin5ON = false; boolean Pin4ON = false; boolean Pin3ON = false; boolean Pin34ON = false; void setup(){ Ethernet.begin(mac, ip, gateway, subnet); server.begin(); pinMode(Pin13, OUTPUT); pinMode(Pin12, OUTPUT); pinMode(Pin11, OUTPUT); pinMode(Pin10, OUTPUT); pinMode(Pin9, OUTPUT); pinMode(Pin8, OUTPUT); pinMode(Pin7, OUTPUT); pinMode(Pin6, OUTPUT); pinMode(Pin5, OUTPUT); pinMode(Pin4, OUTPUT); pinMode(Pin3, OUTPUT); pinMode(Pin34, OUTPUT); Serial.begin(9600); } void loop(){ EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); if (readString.length() < 100) { readString = readString + c; Serial.print(c); if (c == ‘\n’) { if(readString.indexOf(“A=0”) > -1) { digitalWrite(13, HIGH); Pin13ON = true; } if(readString.indexOf(“A=1”) > -1){ digitalWrite(13, LOW); Pin13ON = false; } if(readString.indexOf(“A=2”) > -1) { digitalWrite(12, HIGH); Pin12ON = true; } if(readString.indexOf(“A=3”) > -1){ digitalWrite(12, LOW); Pin12ON = false; } if(readString.indexOf(“A=4”) > -1) { digitalWrite(11, HIGH); Pin11ON = true; } if(readString.indexOf(“A=5”) > -1){ digitalWrite(11, LOW); Pin11ON = false; } if(readString.indexOf(“A=6”) > -1) { digitalWrite(10, HIGH); Pin10ON = true; } if(readString.indexOf(“A=7”) > -1){ digitalWrite(10, LOW); Pin10ON = false; } if(readString.indexOf(“A=8”) > -1) { digitalWrite(9, HIGH); Pin9ON = true; } if(readString.indexOf(“A=9”) > -1){ digitalWrite(9, LOW); Pin9ON = false; } if(readString.indexOf(“B=0”) > -1) { digitalWrite(8, HIGH); Pin8ON = true; } if(readString.indexOf(“B=1”) > -1){ digitalWrite(8, LOW); Pin8ON = false; } if(readString.indexOf(“B=2”) > -1) { digitalWrite(7, HIGH); Pin7ON = true; } if(readString.indexOf(“B=3”) > -1){ digitalWrite(7, LOW); Pin7ON = false; } if(readString.indexOf(“B=4”) > -1) { digitalWrite(6, HIGH); Pin6ON = true; } if(readString.indexOf(“B=5”) > -1){ digitalWrite(6, LOW); Pin6ON = false; } if(readString.indexOf(“B=6”) > -1) { digitalWrite(5, HIGH); Pin5ON = true; } if(readString.indexOf(“B=7”) > -1){ digitalWrite(5, LOW); Pin5ON = false; } if(readString.indexOf(“B=8”) > -1) { digitalWrite(4, HIGH); Pin4ON = true; } if(readString.indexOf(“B=9”) > -1){ digitalWrite(4, LOW); Pin4ON = false; } if(readString.indexOf(“C=0”) > -1) { digitalWrite(3, HIGH); Pin3ON = true; } if(readString.indexOf(“C=1”) > -1){ digitalWrite(3, LOW); Pin3ON = false; } if(readString.indexOf(“all=SIFIRLA”) > -1){ digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(10, LOW); digitalWrite(9, LOW); digitalWrite(8, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, LOW); digitalWrite(3, LOW); }