ETE hocam ve diğer arkadaşlar yardım (Serin)

Başlatan Maxim, 07 Eylül 2015, 16:40:58

Maxim

yapı gereği interrupt kullanamıyorum, serin komutunu kullanmak zorundayım
tabi dönüp duran bir komut satırı var sürekli, bu arada serin komutu ile data almam lazım

başka bir modülden gelen "B4 DC 16 66" datası var
bu bilgi geldiği zaman (her zaman gelmiyor) led yak diyeceğim yada röle çekecek

logic analyzer ile bakıyorum 9600bps seri data doğru bir şekilde geliyor.


serin komutunu nasıl kullanabilirim?
bu konuda pek tecrübem yok

Bahri Bilir

Alıntı yapılan: Maxim - 07 Eylül 2015, 16:40:58
yapı gereği interrupt kullanamıyorum, serin komutunu kullanmak zorundayım

Neden serin i kullanmak zorundasınız?

Yani serin2 veya hserin neden olmuyor?
"Hedeflerin bittiği tek yer, YENİ hedeflerin başlangıcıdır"

Maxim

hserin, hardware port demek, devrede o portlar dolu
serin2 proton da yok, proton kullanıyorum ama serin2 zaten protonda serin gibi

Syntax
Serin Rpin { \ Fpin }, Baudmode, { Plabel, } { Timeout, Tlabel, } [ InputData ]

ete

SERIN Pin,Mode,{Timeout,Label,}{[Qual...],}{Item...}

komut açıklamasına bakılırsa SERIN lafından sonra birinci parametre haberleşme için kullanılacak pin verilecek (PORTA.1 gibi)
Sonra Mode numarası veriliyor. toplam sıfır dahil 8 adet (0-7) mode mevcut. Bu modlar haberleşme hızları ile çalışmanın TRUE yada INVERTED olup olmadığını belirliyor. Genelde True çalışıyoruz.
Mode =0 olursa  2400 baud
Mode= 1 olursa 1200 baud
Mode=2 olursa 9600 baud
Mode=3 olursa  300 baud ve hepsi TRUE .
4 den 7 ye kadar olan modlar ise sırası ile aynı baud hızlarında Inverted olarak çalışıyor.

Bu açıklamalarım PBP için geçerli. Ancak Protonda da aynı olması gerekir.

SERIN Pin,Mode,{Timeout,Label,}{[Qual...],}{Item...}
Arada bir gelen bilginin bu usul ile yakalanması gerçekten zor. Senkron tutturmak zor olsa gerek.

Ete


Maxim

hocam true, 9600 olacak fakat ben datayı nasıl alacağız onu çözemedim
yani farzedelim dediğim B4 DC 16 66  sürekli geliyor
bunun için array mı açmak lazım?
Dim Datas[6] As Byte gibimi? (veya picbasic karşılığı)

bunu str olarakmı almalı?
veya seri haberleşmede bu data 180 220 22 102 mi gözükecek?
mesela wait B4 desem, gerisini DC 16 66 olarak alamazmıyız?

ete

Gelecek olan bilgi standart olarak hep 4 byte geliyor ise o zaman 4 ayrı değişkene alacaksın gelen bilgiyi.
Sonra değerlendireceksin. Zaten farklı adet gelirse işin zor. Zira ne geleceğini bilmez ise nasıl alacağınıda bilemezsin.
Tabiiki array kullanıp almak da var ama onda da gelecek byte adedini bilmen gerekiyor.
Bilmiyor isen tek şekil her seferinde 1 byte almak.

Ete

Powered by EzPortal