Komunikacja przez rs232 z ds1820

0

Witam,

Ostatnio rozpocząłem pracę nad napisaniem programu który pozwolił by mi odczytać temperaturę z układu ds1820 przez rs232.
Wstępnie mój kod wygląda tak:
int cos = 0;
char[] bufor = new char[8];
SerialPort port = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
port.WriteTimeout = 5000;
port.ReadTimeout = 5000;
port.Open();
byte[] x = new byte[1];
byte[] x1 = new byte[8];
try
{
port.BreakState = true;

            Thread.Sleep(500);

            port.BreakState = false;
            Thread.Sleep(30);


            x[0] = 0xcc;
            port.Write(x, 0, 1); // Pomijamy adres uządzenia

            x[0] = 0x44;
            port.Write(x, 0, 1); // Wykonaniae Pomiaru

            Thread.Sleep(750);

            port.BreakState = true;

            Thread.Sleep(500);

            port.BreakState = false;
            Thread.Sleep(30);


            x[0] = 0xcc;
            port.Write(x, 0, 1); // Pomijamy adres uządzenia
                            
            x[0] = 0xbe;
            port.Write(x, 0, 1); // Odczyt danych



            cos = port.Read(x1, 0, 8);
            listBox1.Items.Clear();
            for(int t=0;t<8;t++)
            listBox1.Items.Add(x1[t].ToString());
            
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }

Niestety brak odczytu temperatury?
Czy wie ktoś w jaki sposób można to oprogramować?

0
 port.Write(x, 0, 1); // Odczyt danych

Jak w ten sposób możesz odczytać dane jak to jest metoda wysyłająca dane do portu? Do tego służy metoda Read. Te BreakState też możesz pousuwać, bo skoro ty się połączyłeś z portem, to i tak nikt inny nie może się z nim nawiązać komunikacji. W bloku try powinieneś też umieścić port.Open, bo tu też może być sporo wyjątków(http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.open.aspx). No i przydałby się blok finally, zamykający port na koniec.
A tak w ogóle sprawdziłeś jakimś innym programem czy da się połączyć z tym urządzeniem i odczytać dane które potrzebujesz?

0

poczytaj o protokole 1wire powinno pomóc, oraz odsyłam do tematu -> http://www.elektroda.pl/rtvforum/topic1188495.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1