Merhaba, uart'tan veri alıp göndermekteyim. Veri gönderirken;
if (_serialPort.IsOpen)
{
Byte[] ch = new Byte[1];
ch[0] = (byte)e.KeyChar;
_serialPort.Write(ch, 0, 1);
}
tek karakter olarak gönderip alabiliyorum. Ancak bir string ifadesi yolladığımda gelen kod birer karakter eksik geliyor. Örneğin;
abcdefg yolluyorum aceg geliyor.
Karşıladığım kod;
private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int bytes = _serialPort.BytesToRead;
byte[] buffer = new byte[bytes];
rxString = System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length);
this.Invoke(new EventHandler(displayText));
}
private void displayText(object o, EventArgs e)
{
txtAlinacak.AppendText(rxString);
}
Nerde hata yaptığımı anlayamadım, göderirken mi eksik gönderiyor. Alırken mi eksik alıyor yoksa yanlış mı karşılıyorum. Byte dizisi gönderince de yine birer atlayarak eksik geliyor..
Şimdiden teşekkürler.
Tam anlamadım.Ancak bence veri aldığınız yerde break point koyun ve debug da rx değişkeninizi kontrol edin.Dizi olanı.Eğer veriler düzgün geliyorsa diziyi stringe çevirirken patlıyordur.
Emin olmamak ile birlikte okuma kısmında hata ve/veya sorun olabilir.
verileri gonderirken bir bitis anahtari tanimla mesela a5 5a gibi alma islemi bitene kadar while icinde kal