2012-04-03 19 views
5

Sadece C# ile çalışmaya başladım ve diğer aygıtlarla iletişim kurmak için şu anda RS-485 kullanıyorum ancak diğer aygıtların yanıt vermesini sağlayamadım. . COM Port 4 ile bağlı olduğundan, seri haberleşmeyi kullanarak belirli bir cihaza yazmanın herhangi bir yolu olup olmadığını merak ediyordum. Zaten serial.Write(); ama bildiğim kadarıyla size göndermek istediğiniz adresi seçme seçeneği sunmuyor. Bu soruya bir cevap bulabilecek biri var mı? yanıtlar içinC# Bir bağlantı noktasında birden çok aygıtla Seri İletişim

Saygılarımızla CVR

teşekkürler. Çok yardımcı oldular.

cevap

8

Kristof doğrudur birlikte ayrıntılı bilgi biraz daha:

basitçe iki uç noktayı, PC ve harici cihaz var RS232 ile iletişim. Cihaz ile komutlar göndererek iletişim kurarsınız, hatta bunlara rağmen gönderebilirsiniz. Basit ASCII metin veya ikili/hex kodları olabilir. İki cihaz arasında iletişim kurma şekli protokol olarak bilinir - ve uygulamanız bu protokolü cihaza 'konuşabiliyor' olması için uygulamalıdır.

RS485, RS232'den farklıdır; böylece PC'nize bağlı aynı seri bağlantı noktasında birden fazla aygıtı zincirleme yapabilirsiniz. Cihazınıza bağlı olarak, üzerinde çalışmanız ve alışmanız gerekenleri anladığına dair kendi protokolü olacaktır. Bu, bağlandığınız cihazlarla sağlanmalıdır.

Tipik olarak, protokol (en azından) Aşağıdaki bilgiye sahip olacaktır:

  • Aygıt Adresi - bu genellikle donanım geçiş anahtarları veya ayarlanabilir, konuşmak istediğiniz cihazı ayırt etmek için bu kullanır gibi
  • komut - Eğer üniteye
  • veri göndermek isteyen gerçek komut - Herhangi ekstra veri belirli komutları Yani

için geçmesi gerekebilir, bir sınav Eğer üniteye gönderebilir ple komut gibi bakmak (bu yalnızca bir örnektir unutmayın) olacaktır:

$01FF9A 

:

01 modül veya cihazlar tek adres FF olduğunu 9A olan komut türüdür Burada 01 cihaz adresi bulunan modül, komutu okuyacak ve 'hey sen benimle konuşuyor' komutunu çıkaracak ve daha sonra komut bilgisini işleyecektir. Diğer tüm cihazlar da verileri alacak, ancak bunun kendisi için uygun olmadığını fark edecektir.

Genellikle RS485 aygıtları, Hex verilerini kullanarak iletişim kurar, bu nedenle uygulamanızın harici aygıtlara hex komutları göndermesi ve dönüştürmeyi ilgili tüm yanıtlar için gerçekleştirmesi gerekir. Onaltılık verileri göndermek için Serial.Write(byte[], int,int) adresine bakmanız gerekebilir. cihazlar. .NET seri port sınıfının daha ayrıntılı bir açıklama için

, onun soruya cevap vermez http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

1

SerialPort sınıfının bir örneğini oluşturabilirsiniz.
Baud hızı, portname vb. Tanımlayabilirsiniz.
Open() yöntemini çağırdıktan sonra, veriyi okuyup yazabilir veya porttan yazabilirsiniz.

var port = new SerialPort(); 
port.PortName = "COM4"; 
port.Open(); 
+0

Bu bakınız. –

İlgili konular