Дик Трейси только мечтал иметь такие часы …

Грэг Дункан

Да, снова настало время для железа! Хотя сегодняшнее сообщение относится к .Net Micro Framework, оно использует компоненты, которые я раньше не упоминал: часы Texas Instruments EZ430-Chronos и плату ChipworkX фирмы GHI Electronics.

Роб Майлс (Rob Miles) показывает нам, как заставить эти две вещи общаться друг с другом…

Использование Texas eZ430 Watch с .NET Micro Framework

Недавно я приобрел часы Texas Instruments EZ430-Chronos. Одно из лучших моих вложений. Только за пятьдесят долларов вы получаете часы с LСD-экраном, которые можно программировать. Более того, они содержат целую пачку сенсоров и могут сообщаться с базовым устройством по беспроводной связи. Примерно в то же время я приобрел плату ChipworkX от GHI Electronics.

Итак, однажды в обеденный перерыв я решил попытаться заставить из работать вместе. Это получилось очень просто. Часы имеют беспроводной коннектор (можно видеть его печатную плату наверху картинки) который выполнен как последовательный USB-порт для всего, во что бы вы его не воткнули. Так как плата ChipworkX имеет поддержку последовательного порта и принимающего разъема USB, то не стоит труда заставить их общаться. Немного поисков и я обнаружил протокол акселерометра для часов, после чего всё пошло.

clip_image002

Он также написал оболочку для часов. Вот кусок кода:

 private void watchControl()
  {
      watchComs.Write(startAccessPoint, 0, startAccessPoint.Length);
      while (watchComs != null)
      {
          try
          {
              watchComs.Write(readAccel, 0, readAccel.Length);
              int bytesRead = watchComs.Read(buffer, 0, buffer.Length);
              if (buffer[0] == 0xff &&
                  buffer[1] == 0x06 &&
                  buffer[2] == 0x07 &&
                  buffer[3] == 0x01)
              {
                  Monitor.Enter(watchLock);
                  watchPos.X = (sbyte)buffer[4];
                  watchPos.Y = (sbyte)buffer[5];
                  watchPos.Z = (sbyte)buffer[6];
                  lastReading = DateTime.Now;
                  successfulReading = true;
                  Monitor.Exit(watchLock);
                  if (NewReading != null)
                  {
                      // Fire off a thread to run any methdos bound to the
                      // new reading event
                      Thread readingThread = new Thread(new ThreadStart(newReadingEvent));
                      readingThread.Start();
                  }
              }
              else
              {
                  successfulReading = false;
              }
          }
          catch
          {
              // just ignore the errors for now
          }
      }
  }

Хорошо, может быть часы Дика Трейси все-таки немного круче (я имею в виду, у них было два способа передачи информации и всё), кое-что можно сказать и об этой комбинации…clip_image004