Tema: Dar biškį su C# padėkite
Autorius: Shadowed
Data: 2020-12-08 08:20:11
Ot blin, ne ten parašiau :D Norėjau į o.software, ten Jamieson L kažkaip 
gerai ant kelio praeitą kartą užvedė. Kraustomės į ten su viskuo kas čia 
parašyta plius papildyta.

Taigis, Dėl Gržžžššš... Pšššš... Maul Halten :D (tas serialas tikrai geras 
:D ) - Pamiegu, nes RS232 ant 9600 bodų yra lėtas, ypač jei daugiau duomenų 
tai nespėja suvaikščiot. RS232 be papildomų fyčiurų, tik TX, RX. Toliau 
pasakoju iš naujo, po Grzegorz'o atsakymu.



"Grzegorz Brzęczyszczykiewicz"  parašė naujienų 
news:rqljop$lo4$1@news.omnitel.net...

2020-12-07 17:29, Shadowed rašė:

> serialPort1.Write(new byte[] { 0x50, 0x00, 0xEF, 0x00}, 0, 4);
> // Rašomi duomenys
>
>            Thread.Sleep(250); // Palaukiu, kad spėtų suvaikščiot

O nereikia paragint kad iškakotų į serial'ą?
..flush ar panašiai?

Ir nemiegok - blogo tono požymis miegoti darbe
  if (serialPort1.BytesToRead) {...}
ar panašiai.
Ir jeigu tai paleisi atskiru thread'u - mažiau skaudės galvą.


>            int Bytes_To_Read =
> serialPort1.BytesToRead;                   // Suskaičiuoja kiek baitų
> gauta teisingai, parodo 4
>
>
> // ---- O va čia turėtų būti kažkas, kas tuos gautus duomenis parašytų į
> textbox'ą. Nu blemba, kiek variantų išbandžiau - nesigauna. Iš įdomesnių
> - parašo tik duomenų kiekį (4) arba kažkodėl parašo raidė P.

parodyk nuaskaitymą.




-- 
Grzegorz

Chrząszczyrzewoszyce, powiat Łękołody
// ------------------------------------------------------------------------------ 
Nuo čia :)

Nemažai pasistūmiau su savo programikės rašymu, bet užstrigau ties tokia
kvaila vieta, kur atrodo ir pavyzdukų daug yra, bet vis tiek veikia ne taip,
kaip noriu. Papasakokit dar truputį apie teisingą duomenų gavimą iš RS232...

Tikslas - rašau į serialPort1, po to tą patį noriu nuskaityti. RX su TX
fižiškai užtrumpintas.

Čia daug maž visa rašanti ir skaitanti programėlė

public void Write_Read_Test()
{
    serialPort1.Write(new byte[] { 0x50, 0x00, 0xEF, 0x00, 0x03, 0x00, 0x00, 
0x0B }, 0, 8);

    Thread.Sleep(250);

    int Bytes_To_Read = serialPort1.BytesToRead;

    tBox_Raw_Data.Text += "Bytes to read: " + Bytes_To_Read + 
Environment.NewLine;

    tBox_Raw_Data.Text += serialPort1.ReadExisting() + Environment.NewLine; 
// -- Nei šitas, nei ReadLine nesuveikia. Bet kodėl neveikia lyg ir 
suprantu. O va teisingą gavimą dar noriu pasiaiškinti :). Bandžiau dar 
keletą būdų, bet ten buvo savo kūrybos (berods tas kur P rašė), tai jau 
nebeatgaminsiu jaučiu tiksliai kaip ten buvo.

    serialPort1.DiscardInBuffer();                              // Išsivalom 
buferius
    serialPort1.DiscardOutBuffer();                             // Išsivalom 
buferius
}