Bufferda kaç tane veri bekliyor?

Başlatan z, 10 Ocak 2016, 18:11:38

z

Seri iletişim için windows fonksiyonlarını kullanıyorum.

Yazılımım data yollamak için writeFile, data okumak için ise ReadFile fonksiyonlarını çağırıyor.

ReadFile fonksiyonunu çağırmadan önce bufferda kaç tane veri birikmiş nasıl öğrenebilirim?



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Tagli

Gökçe Tağlıoğlu

z

#2
Bende bunlara bakıyordum.

İletişim sürmekte iken ClearCommError fonksiyonunu çağırmak seri porta çomak sokar mı deneyeceğim.

mesaj birleştirme:: 10 Ocak 2016, 17:08:24

ClearCommError fonksiyonunu çağırdığımda sistem exception oluşuyor.
Forumlardan birisinde bu durum Vitual Commport ile alakalı diye cevap yazmışlar.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

OG

VB için Commpoert ve özeelikleri

''    InBufferCount     : Kabul edilen her karakter bir alıcı tamponuna konulur ve InBufferCount
''    sayısı bir arttırılır. Tamponda bekleyen karakter sayısı, bu değer okunarak öğrenilir. 0 değeri
''    atanarak tampon boşaltılır.

''    CommPort          :Kullanılacak seri port seçilir ve seçilen port numarası okunur.
''    MsComm1.ComPort   =1 'Com1 seçilir
''    Port numaraları 1-99 arasında olabilir.
''    Settings          : Geçerli port ayarları yapılır ve geçerli ayarlar okunur.
''    MsComm1.Settings  ="9600,N,8,1" '9600 baud hızı, Eşlik biti yok, 8 veri
''    biti, 1durdurma biti
''    MsComm'un kabul ettiği baud hızları: 110, 300, 600, 1200, 2400, 9600, 14400,
''    19200, 38400, 56000, 128000, 256000. Varsayılan değer 9600 dür.
''    Geçerli eşlik bitleri: E(Even), M(Mark), N(None), O(Odd), S(Space). Varsayılan
''    olarak None (yok) atanmıştır.
''    Geçerli bit sayıları  : 4, 5, 6, 7, 8. Varsayılan değer 8.
''    Geçerli durdurma(stop) bitleri: 1, 1.5, 2. Varsayılan değer 1.
''
''    InputLen          : Seri porta gelen bilgiler tampon belleklerde tutulur. Bu bilgiler okunurken kaç
''    karakterlik bloklar halinde okunacağını belirtir. 0 değeri atanırsa tek seferde bilgiler okunur


''    InBufferCount     : Kabul edilen her karakter bir alıcı tamponuna konulur ve InBufferCount
''    sayısı bir arttırılır. Tamponda bekleyen karakter sayısı, bu değer okunarak öğrenilir. 0 değeri
''    atanarak tampon boşaltılır.

''    OutBufferCount    : Gönderici tampon alanında sırasını bekleyen karakter sayısını verir. 0
''    verilerek gönderici alan silinir.

''    OutBufferSize     : Verici için tampon bellek miktarı. Ne kadar büyük bellek ayrılırsa programın
''    çalışmasına o kadar az yer kalır. Fakat günümüzde bellek kapasitesi yüksek olduğundan
''    programın ihtiyacına göre belirlenir. Varsayılan değer 512'dir. Bu değer azaltılabilir veya
''    arttırılabilir.

''    InBufferSize      : Tampon uzunluğu 1024 bayttır (1 KB). Bu değer azaltılabilir veya arttırılabilir.
    
'''                        MsComm'un Diğer Özellikleri
''    Rthreshold        : OnComm olayı tetiklenmeden önce alıcı tamponuna konulan karakter sayısını
''    tutar ve ayarlar. Bu özelliği geçerli değer olan 0'da bırakmak, OnComm olayını karakterler
''    alınsa bile devre dışı bırakılmasına sebep olur. 1 yapmak her bir karakterin alıcı tamponuna
''    yerleşmesinden sonra OnComm olayını tetikler. OnComm olayı haberleşme durumlarını
''    gözlemlemek ve olabilecek değişiklere cevap vermek için kullanılır.

''    Sthreshold        : Yine OnComm olayı meydana gelmeden önceki verici tamponuna konulacak
''    asgari karakter sayısını ayarlar. Değeri 1 yapılırsa verici tamponu boşaldığında OnComm
''    olayını tetikler.

''    EOFEnable         : Veri girişi esnasında bir dosya sonu karakteri (EOF-End of Line) işaretinin
''    bulunduğunu gösterir. Değerinin "True" olması veri akışını durdurarak OnComm olayının bu
''    durumu kullanıcıya haber vermek için tetiklenmesine sebep olur.

''    InputMode         : Gelen bilginin "metin " ya da "ikilik" düzende kabul edilmesini bu özellik
''    ayarlar. Veri, katarlar olarak ya da bir bayt dizisinde ikilik veri blokları olarak alınır. İki alt
''    başlığı vardır.

''    ComInputmodeText  : ANSI karakter setlerinden oluşan veriler için kullanılır.

''    ComInputModeBinary: Kontrol karakterlerini de içeren (F1, ALT, Ctrl-Q gibi) diğer
''    veriler için kullanılır.

''    Break             : Çalışma zamanında ayarlanan bir özelliktir. True olması, giden verilerin
''    dondurulması, False olması gönderimin tekrar başlamasını sağlar. Bu daha önceki örneklerde
''    yapıldığı gibi TxD hattını yükseğe yada alçağa çekme işleminde kullanılabilir.
''    Private Sub Form_Load()
''    MSComm1.CommPort = 1
''    MSComm1.Settings = "9600,N,8,1"
''    MSComm1.Rthreshold = 1
''    MSComm1.PortOpen = True
''    End Sub
''    Private Sub Command1_Click()
''    'TxD hattını aç
''    MSComm1.Break = True
''    Bul_Vardal = Timer + 0.5 'Yarım saniye bekle
''    ' Zamanın mürur etmesini bekle
''    Do Until Timer > Bul_Vardal
''    Dummy = DoEvents()
''    Loop
''    ' TxD hattını kapat
''    MSComm1.Break = False
''    End Sub

''    CTSHolding        : CTS hattının gözlenip gözlenmeyeceğine karar verir.
''    True              : CTS hattı yüksek
''    False             = CTS Hattı alçak
''    MsComm1.CTSHolding={True | False }
''    DSRHolding        : DSR hattını yükseğe veya alçağa çeker.
''    DTREnable         : True olursa DTR hattını yetkilendirir.
''    RTSEnable         : True olursa RTS hattını yetkilendirir
''    Handshaking:El sıkışma anlaşmasını yürürlüğe koyar ya da kaldırır.
''    El sıkışma veri gönderici donanım ile alıcı tamponu arasındaki anlaşmadır. Bir veri
''    seri porta geldiğinde haberleşme aygıtı (UART) gelen bu verileri, bir yazılım programının
''    okuyabilmesi için bir tampona yerleştirmek zorundadır. Veriler, UART'ın tampona
''    yerleştirme hızından daha hızlı gelirse birbirinin üzerine yazılır. El sıkışma anlaşması bu
''    verilerin üst üste yazılarak kaybolmamalarını sağlar. VB'de kullanılan el sıkışma
''    anlaşmaları Tablo 2.5'te görülmektedir..

'''                      El sıkışma türleri
''    İsim                  Değer       Açıklama
''    comNone                   0       El sıkışması yok
''    comXOnXOff                1       Xon/Xoff el sıkışması
''    comRTS                    2       RTS/CTS (Request To Send/ Clear To Send
''    ComRTSXOnXOff             3       RTS/CTS ve XonXOff el sıkışmalarının her ikisi birden

''    Xon/Xoff, alıcı ve verici arasında bir yazılım anlaşmasıdır. Karakter iletiminin alıcı
''    için çok hızlı olduğu durumlarda, alıcı vericiye ASCII 19 (Xoff) karakterini gönderek veri
''    göndermemesini, kendi tamponunun boşalması durumunda da ASCII 17 (Xon) karakterini
''    göndererek tekrar iletime başlamasını söyler.
            ''' arada resim var
''    Xon sinyali gönderilmeden tampon belleğin durumu murakabe edilir.
''    ComRTS ve ComRTSXOnXOff seçilirse RTSEnabled özelliği True yapılmalıdır.
''    Aksi takdirde bağlantı sağlansa bile veri alınamaz.


''              OnComm Olayı ve CommEvent Özelliği
''    Diğer bir aygıtla kurulan bağlantıda meydana gelen olayları veya hataları
''    gözlemlemek için, MsComm bileşeni iki yolla seri haberleşmeyi yürütür.

''    Olay-Güdümlü          : Bir karakterin gelmesi, RTS ya da DCD hattındaki bir değişim bir olayı
''    tetikler. OnComm olayı bu olayları yakalamak için kullanılır.

''    Gözleme               : CommEvents özellikleri bir olayın olup olmadığını test eder durur. Bir döngü
''    içinde, bir karakterin gelip gelmediği gözlenir. Alıcı tamponuna bir karakterin ulaşması,
''    hemen okunmasını tetikler.
''    Bir haberleşme olayı ya da bir hata olduğunda OnComm olayı tetiklenerek
''    CommEvent özeliği değişir. OnComm'un her meydana gelişte CommEvent'in değeri
''    okunur.
''    Tablo 2.6, OnComm'u tetikleyen haberleşme olaylarını göstermektedir.

'''                                Tablo 2.6: OnComm olayı
''    Sabit         Deger       Tanımlama
''    comEvSend         1       Alıcı tamponunda SThreshold ile tanımlanandan daha az sayıda karakter Var
''    comEvReceive      2       RThreshold sayısı ile tanımlanan sayıda karakter alındı. "Input"
''                              özelliği ile alıcı tamponundan karakter okunduğu müddetçe bu olay
''                              cereyan eder.
''    comEvCTS          3       CTS hattında bir değişiklik var
''    comEvDSR          4       DSR hattında bir değişiklik var. Bu olay sadece DSR, 1'den 0'a değiştiğinde husule gelir.
''    comEvCD           5       CD hattında bir değişiklik var.
''    comEvRing         6       Zil çalması algılandı
''    comEvEOF          7       ASCII 26 sayısı ile tanımlanan bir dosya sonu işareti alındı


''    ComEvent'in her hareketinde OnComm olayı tetiklenir. Bu tetiklenmede meydana
''    gelen hatalar sayılarla ifade edilir.

''                      Tablo 2.7: CommEvent özellikleri
''    Sabit             Deger   Tanımlama
''    comEventBreak     1001    Bir ara verme sinyali algılandı
''    comEventFrame     1004    Çerçeve hatası
''    comEventOverrun   1006    Üzerine yazma hatası. Bir sonraki karakter geldiğinde bir
''                              önceki karakter okunmamışsa önceki kaybolur.
''    comEventRxOver    1008    Alıcı tamponu taşma hatası. Alıcı tamponunda yeterli yer yok
''    comEventRxParity  10009   Eşlik hatası
''    comEventTxFull    1010    Verici tamponu dolu.
''    comEventDCB       1011    Teşhis edilmeyen hata
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.