Witam piszę program do odczytu wartości z licznika sea Pozyton. Pierwszy raz piszę program do obsługi portów dla tego proszę o pomoc i wyrozumiałość. Komputer jest podłączony do moxa nport ten zaś do licznika (RS485). Komunikacja jest rozpoczynana po wysłaniu przez PC znak enter , następnie wysyłamy numer licznika /A513.0022229 ze znakiem enter i na tą wiadomość licznik powinien odpowiedzieć /g513.0022229 i znak enter. Problem w tym że w moim programie po wczytaniu odpowiedzi za pomocą port.ReadExisting() otrzymuje string o długości 0 a powinienem dostać konkretną odpowiedź. Za wszelką pomoc dziękuje.
static void Main(string[] args)
{
try
{
char znak_enter = (char)13;
string wysylane_slowo;
SerialPort port = new SerialPort();
port.PortName = "COM2";//jaki port chce otworzyć
port.BaudRate = 4800;//prędkość
port.DataBits = 7;//bity danych
port.StopBits = StopBits.One;//bity stopu
port.Parity = Parity.Even;
port.Open();//otwarcie portu
if (port.IsOpen)//sprawdzam czy port został otwarty
Console.WriteLine("Port otwarty");//port otwarty
else
Console.WriteLine("Port zamknięty");//port zamknięty
Console.WriteLine("Lista co odbieram i wysyłam");
wysylane_slowo = "" +znak_enter; //wysyłam znak enter by rozpocząć rozmowe
port.Write(wysylane_slowo);
Console.WriteLine("W:" + wysylane_slowo );
Console.WriteLine("R:" + wysylane_slowo.Length);
wysylane_slowo = "/A513.0022229" + znak_enter;
port.Write(wysylane_slowo);
Console.WriteLine("W:" + wysylane_slowo);
Console.WriteLine("R:" + wysylane_slowo.Length);
string slowo = port.ReadExisting();
Console.WriteLine(slowo.Length);
if (port.IsOpen)//zamknięcie portu
port.Close();
Console.WriteLine("Koniec transmisjii");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}