seri port ile sayi göndermek

Başlatan candogru, 11 Aralık 2014, 14:34:19

candogru

merhaba, c# da seri port ile sayı göndermek istiyorum.
portS.Write("m"); ile istediğim işlemi yaptırıyorum. Fakat textbox ile yazılmış sayısı pic e göndermek konusunda takıldım.Daha sonra bu sayıyı pic üzerinde işleyeceğim. Nasıl bir yöntem izleyebilirim?

barisertekin

portS.Write("m"); yerine portS.Write(TextBox1.Text);

baran123

portS.Write(TextBox1.Text); bu da bir text ifade değimi ? sonuçda string olarak almayacak mı ?

Mr.Java

C# bilmiyorum fakat java'da benzer olduğundan dolayı portS.Write(Integer.parseint(TextBox1.Text)); yapabilirsiniz.

barisertekin

Alıntı YapportS.Write(Integer.parseint(TextBox1.Text));
ifadesi yanlış. Derleme hatası alırsınız.

Söylediğim şekilde göndermelisiniz veya byte olarak gönderebilirsiniz. Bir şey değişmeyecektir.

Mr.Java

Üstte belirttim zaten java'ya göre olduğunu.

Mantık veriyi ya bit olarak ya'da dönüştürerek göndermektir.

C#'ta integer veri Convert.ToByte değişkeni ile dönüştürülerek kullanılıyormuş.

arkadaş belirtmiş textbox1.text ifadesinin geri dönüş değeri string değil mi?

Burak B

#6
/* Text box verisini integer veriye dönüştür. */
int intValue = Int32.Parse(TextBox.Text);
/* Integer veriyi byte[] array yap. */
byte[] intBytes = BitConverter.GetBytes(intValue);
/* Sistem little endian ise veri terstir. Düzelt. */
if (BitConverter.IsLittleEndian)
{
    Array.Reverse(intBytes);
}
/* Veriyi seri porta yaz */
Serial.Write(intBytes, 0, intBytes.Length);


C# için int32 4 byte alan kaplar bu nedenle seri porttan 4 byte veri yazılır. Eğer daha küçük bir veri gönderecekseniz.

Int32.Parse yerine
- Int16.Parse
- byte.Parse
gibi daha az yer kaplayan verileri de kullanabilirsiniz. Yada byte[] array içinden size lazım olan kadarını çekersiniz.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle