static void ReadScratchPad(ref DS18B20 sensor) { //********************* Read Scratchpad ******************************** Console.WriteLine("Reset Bus"); if (!sensor.Reset()) { Console.WriteLine("Nix Sensor\r\n"); return; } //Select Sensor Console.WriteLine("Read Scratchpad für Sensor:\t{0}", sensor.GetSensorAddress()); //Transfer Command und Sensor Adresse 8 Bytes sensor.Transfer(DS18B20.Command.MatchRom, DS18B20.TranferCounts.MatchRom); ScratchPad = sensor.Transfer(DS18B20.Command.ReadScratchpad, DS18B20.TranferCounts.ReadScratchpad); Console.Write("Scratchpad:\t\t\t"); //PrintBytes(ScratchPad.Serialize()); Console.WriteLine(ScratchPad); Console.Write("Check CRC\t\t\t{0:x2} ", DS18B20.CRC8(ScratchPad)); Console.WriteLine("{0}", ScratchPad.CheckCRC() ? "OK" : "Fehler"); Console.WriteLine("Configregister:\t\t\t{0:x2}", (byte)ScratchPad.ConfigRegister); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Temp: {0:F4}°C\r\n", ScratchPad.GetTemp()); Console.ResetColor(); }
static void Main(string[] args) { Console.Clear(); // DS18B20 sensor = new DS18B20("COM27"); DS18B20 sensor = new DS18B20("COM2"); DS18B20_Address SensorAddress = new DS18B20_Address(); List <DS18B20_Address> SensorAddresses = new List <DS18B20_Address>(8); //********************* Ist wer da ? ******************************** if (!sensor.Reset()) { Console.WriteLine("Nix Sensor\r\n"); return; } Console.WriteLine("Sensor da :-)\r\n"); while (!sensor.Search(ref SensorAddress)) { Console.Write("Sensor "); //PrintBytes(Address); Console.WriteLine("Adresse:\t{0}", SensorAddress.Address); Console.WriteLine("CRC:\t\t{0}", SensorAddress.CRC.ToString("x2")); Console.Write("CRC Check\t{0:x2} ", DS18B20.CRC8(SensorAddress)); Console.WriteLine("{0}", SensorAddress.CheckCRC() ? "OK":"Fehler"); Console.WriteLine("Seriennummer:\t{0}", SensorAddress.ToString("SN")); Console.WriteLine("Device Typ:\t{0}\r\n", SensorAddress.ToString("DEV")); SensorAddresses.Add(SensorAddress); sensor.Reset(); } Console.WriteLine("{0} Sensor(en) gefunden", sensor.Devices); Console.WriteLine("Weiter Taste drücken"); Console.ReadKey(); //********************* Nur ein Sensor am Bus. Wer da ist da ? ******************************** /* * bytes = ow.Transfer(0x33, 8, OnWire.TransferDirection.Read); * * * Console.Write("Memory:"); * for (byte ix = 1; ix < bytes.Length - 1; ix++) Console.Write("{0:x2}:", bytes[ix]); * Console.WriteLine("{0:x2}\r\n", bytes[bytes.Length - 1]); * */ //Beispiel //Ersten Sensor auf 12 Bit umstellen //MatchRom = Gezielt Sensor auswählen, Skiprom = alle Sensoren //Aktuelles Scratchpad auslesen //Sensor Adresse in Buffer laden sensor.SetSensorAddress(SensorAddresses[0]); sensor.Transfer(DS18B20.Command.MatchRom, DS18B20.TranferCounts.MatchRom); ScratchPad = sensor.Transfer(DS18B20.Command.ReadScratchpad, DS18B20.TranferCounts.ReadScratchpad); DS18B20_SctatchPad.Resolution r = DS18B20_SctatchPad.Resolution.Bits12; if (ScratchPad.ConfigRegister != r) { Console.WriteLine("Configregister auf gewünschte Auflösung umstellen"); sensor.Reset(); //Config Register auf 12Bit Setzen ScratchPad.ConfigRegister = r; //Sensor Adresse in Buffer laden sensor.SetSensorAddress(SensorAddresses[0]); sensor.Transfer(DS18B20.Command.MatchRom, DS18B20.TranferCounts.MatchRom); //Die 3 Bytes aus dem Scratchpad retour schreiben sensor.Scratchpad2Buffer(ScratchPad.SerializeForWrite()); sensor.Transfer(DS18B20.Command.WriteScratchpad, DS18B20.TranferCounts.WriteScratchpad); } else { Console.WriteLine("Configregister hat bereits die gewünschte Auflösung"); } System.Threading.Thread.Sleep(2000); while (true) { Console.Clear(); #if !MATCH_ROM //Skip Rom StartConvertion(true, ref sensor); #endif for (byte iy = 0; iy < SensorAddresses.Count; iy++) { //Sensor Adresse in Buffer laden sensor.SetSensorAddress(SensorAddresses[iy]); #if MATCH_ROM //Ohne SkipRom, Match ROM StartConvertion(false, ref sensor); #endif ReadScratchPad(ref sensor); } //Console.WriteLine("Nächste Messung Taste drücken"); //Console.ReadKey(); System.Threading.Thread.Sleep(5000); } }