Arkadaşlar merhaba,
Büyüklükleri farklı verileri serial porttan almam gerekiyor. Atıyorum 8 byte veri gelecek, daha sonra 1kb veri gelecek nasıl bir algoritma kurmam gerekir.
https://www.picproje.org/index.php/topic,71706.0.html
Ccs c için yazının ilerleyen bölümlerinde farklı uzunluktaki sabit karakterle bitmeyen verinin alınması ile ilgili bir algoritma var.
Tam çalışmasa da fikir verebilir.
Platform, işlemci, proje niteliği hk açıklayıcı bilgi verebilirseniz belki farklı öneriler verilebilir.
aaaaaaaaBaslaXXXyyyyyy
Gibi veri gönderilir. Alıcı tarafta aaaaa verisi beklenir. Sonra basla stringi bulunur.basla'dan sonraki 3 bayt verinin uzunluğu olsun. Bundan sonraki yyyyy kısmı veri içeriğidir. çeşitli baytlardan oluşur.
Eğer baslaxxx kısmından sonra xxx uzunluğu kadar veri gelmediyse zaman aşımı ile okuma sonlandırılır.
Alıcı taraf normal durumda sürekli aaaaaaaa stringini bekler. Sonrasında basla kelimesini arar...
Bir protokol kullanman gerekiyor. Ya kendin belirleyecektir, ya modbus gibi standart birşey kullanacaksın. Kendin yapacaksan modbus protokolünü inceleyerek fikir sahibi olabilirsin.
Merhaba.
Veriyi gönderen cihaz müdahale edilebilecek bir cihaz olmayabilir. Gps, yada başka seri üretim bir cihaz mesela.
Seri porttan veri gelip son karakteri okuduktan sonra iki karakter gelecek kadar süre bekle. Bu süre içinde veri gelirse tekrar almaya devam et, son karakteri aldıktan sonra yine 2 karakterlik süre kadar bekle. Bu süreçte veri gelmezse seri port rutinden çık.
115200 baudrate te 2 karakter yaklaşık 125nanosaniye yapar. Çok da uzun değil bence.
İletişim kurulan cihazı biz yapmıyorsak, rs232 iletişimi için kendi protokolü vardır mutlaka. Ona göre işleriz veriyi.
Benimde bir projemde gerekmişti. Ben başlangıç ve bitiş biti ile halletmiştim. Başlangıç biti * bitiş biti \n. * karakterini görünceye kadar kayıt yapmıyordu. Sonra \n gelincede char dizisini bitiriyordu. Uzunluğun çok bir önemi kalmıyor böylece.