[elektro] OT: VB2008 soros vonal olvasás

hozso_001 at freemail.hu hozso_001 at freemail.hu
Mon Nov 11 11:05:32 CET 2013


   Köszi, megnéztem a linket!

   Még mindig nagyon sok homályos dolog van, de már kicsit tisztább a dolog.
Most épp ott tartok, hogy  a küldés után néhány másodperccel beolvasom
a bemeneti puffer komplett tartalmát a 'ReadExisting' metódussal. Eredmény:
a visszajövő üzenet első vagy első két karaktere lemarad. ???

(A lapon van is valami megjegyzés, hogy különbség lehet a SerialPort osztály
és a SerialPortBaseStream byte-száma eltérhet, de nekem ez kicsit magas:
"The SerialPort class buffers data, but the stream object contained in the
SerialPort.BaseStream property does not. Therefore, the SerialPort object
and the stream object might differ on the number of bytes that are 
available
to read. When bytes are buffered to the SerialPort object, the BytesToRead
property includes these bytes in its value; however, these bytes might not
be accessible to the stream contained in the BaseStream property.")



   Tehát kimegy: "AT+CREG?" Erre az a válasz jön (terminál emulátorban 
szépen
működik), hogy : "AT+CREG?  +CREG: 0,1" Tehát az elején visszaechózza az
eredeti üzenetet. Na, ennek az eleje a bejövő pufferben nincs meg. Tehát úgy
kezdődik a visszaolvasott üzenet, hogy "T+CREG?..." vagy "+CREG?..."

   Előtte próbáltam byte-onként beolvasni. Megnéztem a BytesToRead értéket,
ez alapján egy For-al beolvastam a byte-okat. Az elején működött, de 
akkor is
lemaradt az elejéről egy vagy két karakter. Később egyszerűen kiakadt a 
program.
Mármint: hibaüzenet nélkül 'megállt' a For ciklusban, mivel a 
BytesToRead egyel
nagyobb eredményt adott, mint ahány byte a pufferben volt. Ezért - 
gondolom -
a byte beolvasást nem tudta elvégezni. (A program futott, a pause-ra nyomva
mindig a byte beolvasásánál állt. A BytesToRead 28-on, a For számlálója 
pedig
27-en állt.)

   Hova tűnik az első két karakter? Momentán elvileg nem létfontosságú, mert
az eleje úgyis csak echó, de akkor is! Mégiscsak végig kellene kínlódnom a
fogadás eseménykezelésére módit? :-/ Akkor vajon meglesznek az elveszett
karakterek???


    Üdv.: Horváth Zsolt


2013.11.08. 15:59 keltezéssel, potyo írta:
> Ezt nézted már?
> http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
>
> Első blikkre a ReadByte metódus kellene neked, esetleg előtte lekérdezve a
> BytesToRead tulajdonságát az objektumnak, hogy megtudd, van-e egyáltalán
> mit olvasni.
>
> Esetleg megnézheted a DataReceived eseményt is. Ha jól értem, akkor ez arra
> való, hogy ha jön valami, akkor ez meghívódik - de lehet, hogy ez mondjuk
> csak akkor, ha jött mondjuk VbCr.
>
>
>



More information about the Elektro mailing list