avatar_fatih88

pc seri haberleşme sorunu

Başlatan fatih88, 01 Şubat 2013, 17:17:25

fatih88

degerli forum uyesi arkadaşlarım ve sayın ete hocam seri haberleşmede aşamadıgım bir problem var arayüzey yardımı ile gönderdiğim verileri hserin komutu hep eksik alıyor göderdiğim veri 123 olsun ben bunu pic'den 12 olarak alıyorum 3 kayboluyor veri degerini 16 bitlik tanımladıgımdada verileri tam alıyor ama 16 bitlik veriyi alamadıgı için interrupta çakılı kalıyor bir türlü çözemedim yardım ederseniz sevinirim şimdiden teşekkürler
Disable                                                         'KESME İÇİNDEYKEN YENİ KESME OLUŞMASIN KESMELER KAPALI
SERIAL:                                                         'SERİAL ETİKETİ KESME BU ETİKET ALTINDA GERÇEKLEŞECEK
INTAC=0
PORTA.0=1
HSerIn 50,CIKIS,[ VERI]
CIKIS:
HSerOut [Dec VERI]
INTBAYRAK=0
INTAC=1
Resume                                                          'KESME OOLURKEN NEREDEN AYRILDIYSAN ORAYA GERİ DÖN
Enable                                                          'KESME İŞLEMİ BİTTİ YENİ KESMELERE İZİN VER
End
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

sinancnc

Çok iyi anlamadığımı baştan belirterek fikir vermek istiyorum . Alıcı ve verici arasında sanki bir zamanlama sıkıntısı var.. Alıcıyı önce bir boş bilgiyle uyandırıp sonra bilğiyi hemen arkasından yollarsanız sorunu çözersiniz diye düşünüyorum..
Paylaşmayı seven insan toprak olup gitmez. Bir şeyler bırakır...!

ete

Fatih88,
Açıklaman yetersiz.
Veri adlı değişken ile 123 gönderip bunu 12 olarakmı alıyorsun yoksa arka arakaya 1 sonra 2 sonra 3 mü yolluyorsun. İşin mantığı nasıldır.
Kodlarına bakınca veri alışverişinde bir işaretçi kullanmadığını görüyorum. Üstelik preambl denilen uyandırma veriside kullanmıyorsun. Bu durumda tam olarak verileri almayı nasıl düşünebilirsinki?
Diyelimki 123 yolladın önce 3 ulaşır ve bu bilgi geldiğinde sistem uyanıncaya kadar senin 3 ortada heba olur gider ve sistem veriyi almaya başlayınca mecburen 2 ve sonrasında 1 rakamını alır.
Gerçi yazdığın kodlar buna müsait de değil. Şayet tek veri olarak 123 rakamını yolluyorsan bunu 12 olarak alman kesinlikle mümkün değil. Bu kadar tesadf olamaz. Bit kaybına uğrarsın ama 3 rakamını ilerek kimse kesemez.
Sonuç olarak USART kesmesi nasıl çalıştırılı veri nasıl yollanmalıdır nelere dikkat edilmelidir bu forumda yüzlerce kez tartışıldı.
Üstelik ete projelerinde örnek projelerde mevcut. En iyisi onları bir incele yoksa bu kodlarla bir yere varamazsın.

Ete

F®T

ete hocam gereken açıklamaları yapmış.hserin kullanmışsınız sanırım usart kesmesini aktif etmişsinizdir.ayrıca kesme içinde alınan veri okunduktan sonra  TEMP=RCREG ile bufferi sıfırlaman lazım.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

fatih88

ilginiz için teşekkür ederim hocam az çok seri haberleşmeyle biraz uğraştım uyandırma sinyalide yolladıgım halde aynı hata arayüzeyden 123 birlikte yolluyorum arayuzey bunu string ifade olarak yolluyor acaba veri degerini byte olarak tanımladıgım için olabilirmi dedim veriyi word olarak tanımladım oda olmadı 32bitlik tanımlıyom yinedende alamadım
uyandırma sinyalini şu şekilde yapmıştım
hserin 50,cikis,[wait("fat"),veri]bu konutta anladıgım benim "fat " gelene kadar bekle "fat" bilgisi gelince diger bilgileri veri degişkeni içinde sakla anlayamadıgım bir sorun var
dosyayı ekliyorum hocam bir bakabilirmisiniz sevinirim iyi günler dilerim
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

kudretuzuner

Merhaba
Dosyanızı açamadım "ö" harfini değiştirip çalıştırdım.Ama birşey anlaşılmıyor,virtual terminallerden sadece veri girilebiliyor.
http://ul.to/7iiymqod

fatih88

ilgileriniz için teşekkürler sorunu çözdüm sorunsuz çalışıyor şu anda
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

ete

Bu gibi durumlarda çözüm şeklinide anlatmak aynı sorunu yaşayan yada yaşayacaklara yol gösterir.
Sadece çözdüm demek anlamsız. Çözümüde anlatman gerek.
Ete

fatih88

kusura bakmayın düşüncesizlik ettim sorun yazılımda değilmiş hocam arayüzey programında ben bilgiyi string ifade olarak yolluyordum ama byte olarak göndermek gerekiyormuş byte olarak yolladım sorun cözüldü uyandırma sinyali göndermeden dahi veriyi sıkıntısız alıyor
arayüzey komutunuda şu şekilde değiştirdim
  //serialPort1.Write(veri.ToString());
     byte[] bytes = {Convert.ToByte(veri) };
     serialPort1.Write(bytes, 0, 1);
iyi çalışmalar
bilgi paylaştıkça çoğalır!!

www.fayelektronik.com

Powered by EzPortal