Terminal uygulaması nasıl yapılacak? [ Portsuz ]

Başlatan t2, 14 Aralık 2015, 21:35:06

t2

Proteustaki Virtual terminal gibi bir uygulama gerekiyor. gösterge önemli değil.
Metin dosyaya yazsa da olur.

Bu uygulamadan beklenen, seri sinyali ifade eden  kare dalga içerisindeki   start bit stop bit gibi bitleri süzüp bayt olarak çıkış vermesidir. 

Gökhan BEKEN

Numune Input dosyasını ve numune output dosyasını verirseniz bir şeyler karalarım.
Özel mesaj okumuyorum, lütfen göndermeyin.

t2

Dosyalar hazırda yok.  Şöyle düşünelim. 
Detaylı bir com port uygulamamız olsun. gerçek terminal programı.  baud, port vs ayarlıyoruz ve başlatıyoruz.

Porttan gelen veri ne şekildedir?  memorystream olsa gerek.  veya bayt array? ya da bunun pointer'ı ile veriye erişiriz.

Yüzlerce bayt gelmiş . okumaya baştan başlayalım. ilk bayt aslında bayt değil. bunun ilk biti galiba start bit olup kalan 7 bit bir sonraki baytın ilk biti ile birlikte toplam 8 bit olarak ilk baytı oluşturuyor.

2. bayt  aslında bayt değil. bunun 2. biti start bit olup kalan 6 baytı sonraki baytın ilk 2 baytına ekleyip aslıl 2. baytımızı elde ediyoruz.
3. bayt aslında bayt değil.  ...


gerçekte böyle midir ? nasıl oluyor o iş. yani porttan gelen ham veri nasıl işleniyor? Buna RAW data deniyor  galiba.


Bana comporttan gelen datayı bu şekilde ayıklayabilen  programın kodları gerek.
hazır komponentler start biti stop bit vs.. ayıklanmış şekilde veriyor.


Klein

Öyle değil.
İlk baytı aldık. Aslında bayt değil 10 bit aldık.  Start bit  + 8 bit data + stop bit (Stop bit 1 ve parite none seçilmişse).   Start biti ve stop biti rasında kalan  8bit bizim verimiz.
3 baytlık veride

start + 8 bit data + stop + start + data + stop + start + data + stop gelir.

boreas

Benim yaklaşımım şu olur. Yapılan ayara göre 1-2 stop bit ne ise artık. Start bitini geçer ardındaki 8 biti HEX ya daASCII yapar bu yöntemle devam ederim. Bunuda iç içe 2 döngüyle yaparım
Şöyle ki  string 2500 karakter olsun ben ise 1Start 8 data 1 Stop bitim var (10)

for z := 0 to 2500 / 10 do begin
data :='';
for k : = 0 to 9  begin
data := data + data [k+(z*10)];

end;
end;

gibi ...

t2

Soruyu toparlıyorum:

Verilerin  10ar bit olarak geldiği, start ve stop bitleri süzülerek baytların elde edildiği,  bir com port uygulamasi gereklidir.

icabında Comport kısmını kapatıp, dosyadan  okuma yapabilmesi gerek.
Dosya, hizlica oluşturulmuş, bağlantı kesilmiş. Program çalışmaya devam edecek. Ayıklayacak. Cansız bağlantı olacak.

boreas

Tamam işte ikinci döngüde başlangıç sayısı 1 bitiş 8 olursa start stop süzülmüş olur ; (Eğer dediğini yanlış anlamadıysam

for z := 0 to 2500 / 10 do begin
data :='';
for k : = 1 to 8  begin
data := data + data [k+(z*10)];

end;
end;

Burada data'yı hex'e ya da dec. çevirmen gerek tabi

t2

Hocam comportdan gelen kısım lazim. Buffer`ı dosyadan besleyecek. 10bit nasıl gelebiliyor onu görmem gerek. Bayti baştan okumaya başladık sonraki bayttan da 2bit mi alınacak? Yani terminal programı olsa, kodu açık ola, porttan gelen o dataya erişebilsem iyi olacak?

muhittin_kaplan

sen ağzındaki baklayı bir çıkarsana t2, sen gelen bilginin değerini değiştirip başka yeremi göndereceksin, yani manüple mi edeceksin ?

boreas

Sen sniffer istiyorsun. Bu tarz programlar var. Sanal port oluşturup gelen bilgiyi alıp diğer porttanda gönderiyor. seninkide bana böyle geliyor. Com portlarda biliyorsun port açıldıktan sonra başka bir program porta erişemiyor (ya da ben beceremedim) Bu yüzden sanal iki port açıp giriş çıkış gelen bilgiyi çeker ya da istediin bilgiyi gönderebilirsin.

t2

Portu kendim açayım, start stop biti ayıklayayım. Veriyi okuyup anlayayim yorum katayim. icabında özel protokol tanimlansin. 3tane start bit olsun. Bazen 5. Ama bu işler bit düzeyinde olabilmeli. Veriyi gönderen ve alan tarafta standard dışı işlem yapılabilmesi gerek. Cine5 ses  dekoder vardı onun gibi düşünebiliriz.basit şifreleme işi.

engerex

@boreas dinleme yapan uygulamalar var. Porta her gelen gideni kaydediyor. Ancak dediğim gibi önce kurmak gerekiyor.

t2

Açık kodlu terminal uygulaması buldum.
Galiba bununla istedğim şekilde yapılabilir.
http://www.opend.co.za/software/terminal/index.htm
The serial terminal featured here has been specifically created for electrical engineers in that is caters for both ASCII and raw binary data.
Version 20060418A