Gençler şimdi şöyle bir sorunum var;
Visual Studio ile bir küçük program yapmaya çalışıyorum. Programın olayı belli aralıkla bir veriyi bilgisayarın seri portundan başka bir cihaza göndermesi.
Sıkıntı burada değil, bu kısmı yapabiliyorum ama portu elle seçmem gerekiyor, ben istiyorum ki kendi otomatik olarak bağlansın. Yani program çalıştığında bilgisayardaki mevcut serial portları listelesin, bu portlar içinde başka bir program tarafından kullanılanları elesin, geri kalan kullanılabilir portlardan da her birine kısa bir sorgulama mesajı göndersin, bu sorgulama mesajı gönderdiği portlardan herhangi birinde o porta bir cihaz bağlı cihaz istediği yanıtı verirse bu portu "veri iletiminde kullanılacak port" olarak işaretlesin. Yani bir çeşit "hand shaking" olayları.
Bunun da bir kısmını yapabiliyorum ama bir türlü şu komut gönderme, bekleme, cevabı okuyup karşılaştırma işini beceremedim.
private string[] ports = SerialPort.GetPortNames();
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.BaudRate = 9600;
foreach (string port in ports)
{
textBox1.Text += port + "\r\n"; ///Bilgisayarda bulunan mevcut serial portlar
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
foreach (string port in ports)
{
try
{
serialPort1.PortName = port;
serialPort1.Open();
textBox1.Text += port + "\r\n"; ///Mevcut portların içerisinde "açılabilir" olanlar. Açılabiliyorsa zaten başka bir program tarafından kullanılmıyor olmuş oluyor.
}
catch (Exception ex)
{
}
serialPort1.Close();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Daha anlaşılabilir olsun diye böldüm, yoksa bu iki bölümü birleştirebilir yada ilk kısmı atabilirim.
Şu şekilde sırasıyla her bir "kullanılabilir" porta özel mesajımı da gönderebiliyorum ama gerisini bir türlü getiremiyorum.
{
serialPort1.Open();
serialPort1.Write("Hello");
serialPort1.Close();
}
Bilgisayara seri portundan bağlı cihaz "Hello" mesajını görünce cevap olarak "hi" diyor ve veri alma moduna geçiyor, orada bir sıkıntı yok ama gel gör ki programın çalıştığı bilgisayar bu "hi" cevabını nasıl görüp o da veri gönderme moduna geçecek?