- PVSM.RU - https://www.pvsm.ru -

Fez Panda 2 чтение IButton

Добрый день.
Извиняюсь если не в тот топик поместил, но вроде показался этот подходящим, да и кармы для других не хватает.
Давненько приобрел для себя Fez Panda 2 [1], побаловался и забросил. Вчера вечером попался сей девайс на глаза, а рядом ключи с «таблеткой» от домофона. Вот и решил попробовать считать данные из него. Работает он по интерфейсу 1-Wire (который согласно описанию панды «available on any IO»)

Расписывать его работу не буду, кому интересно можно прочесть здесь [2]
Для работы нам понадобится спаять/скрутить вот такую схемку:

подтягивающий резистор

пруф

Код приложения выглядит так:

using System;
using System.Threading;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

using GHIElectronics.NETMF.FEZ;
using GHIElectronics.NETMF.Hardware;

namespace iButton
{
  public class Program
  {
    static OneWire ow = new OneWire((Cpu.Pin)FEZ_Pin.Digital.Di4);
    static OutputPort led = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.LED, false);

    public static void Main()
    {
      bool ledState = false;

      while (true)
      {
        byte[] readall = new byte[8];

        if (ow.Search_GetNextDevice(readall))
        {
          string hex = ByteArrayToString(readall);
          Debug.Print("========================");
          if (readall[0] != 0x01)
          {
            Debug.Print("Device is not a DS1990A family device.");
          }
          Debug.Print(hex);

          for (int i = 0; i < 6; i++)
          {
            Thread.Sleep(200);
            ledState = !ledState;
            led.Write(ledState);
          }
        }
      }
    }

    public static string ByteArrayToString(byte[] ba)
    {
      string hex = string.Empty;
      for (int i = ba.Length - 1; i >= 0; i--)
      {
        hex += " " + ByteToHex(ba[i]);
      }

      return hex;
    }

    public static string ByteToHex(byte b)
    {
      const string hex = "0123456789ABCDEF";
      int lowNibble = b & 0x0F;
      int highNibble = (b & 0x0F0) >> 4;
      string s = new string(new char[] { hex[highNibble], hex[lowNibble] });

      return s;
    }
  }
}

* This source code was highlighted with Source Code Highlighter [3].

Если в ближайшее время куплю пустой ключ то попробую его запрограммировать имеющимися данными.

Автор: Zanoza


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/net/6277

Ссылки в тексте:

[1] Fez Panda 2: http://www.ghielectronics.com/catalog/product/256

[2] здесь : http://www.radiokot.ru/articles/13/

[3] Source Code Highlighter: http://virtser.net/blog/post/source-code-highlighter.aspx