Мар 31 2012

XML-сериализация IP-адреса в C#

При попытке сериализации объекта с полем вида

public IPAddress ip

возникает Run-time error типа System.InvalidOperationException

Причина заключается в том, что класс IPAddress не имеет конструктора по умолчанию (parameterless ctor), необходимый для XML-сериализации, при этом то, что класс IPAddress имеет атрибут [SerializableAttribute], не имеет значения, т.к. этот атрибут действует только на binary и Soap-сериализацию.

Решается проблема, например, так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;

using System.Xml.Serialization;
using System.IO;

namespace SerializationTest
{
    public enum MyEnum { enum1, enum2, enum3 }

    [Serializable]
    public class Test
    {
        public Test()
        {
            a = 1;
            b = true;
            s = "string";
            ip = IPAddress.Loopback;
        }

        public int a;
        public bool b;
        public string s;
        public MyEnum e;

        [XmlElement(ElementName = "IPAddress")]
        public string IPAddressAsString
        {
            get { return ip != null ? ip.ToString() : null; }
            set
            {
                IPAddress a;
                if (value != null && IPAddress.TryParse(value, out a))
                    ip = a;
                else
                    ip = null;
            }
        }

        [XmlIgnore]
        public IPAddress ip { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            
            XmlSerializer xs = new XmlSerializer(typeof(Test));
            FileStream writer = new FileStream("file.xml", FileMode.OpenOrCreate);
            xs.Serialize(writer, test);
            writer.Close();
        }
    }
}
Мар 24 2012

Подключение цветного LCD с сенсорным экраном к микроконтроллеру

Перепост с Хабрахабра:

Добрый день, хабр. Сегодня я хотел бы поделиться некоторым опытом, касающимся подключения цветных LCD-индикаторов к микроконтроллеру. Эта тема уже поднималась на хабре (http://habrahabr.ru/post/139384/), поэтому данный пост может рассматриваться как дополнение к уже написанному моими уважаемыми коллегами.

Читать далее:   http://habrahabr.ru/post/140415/

Мар 24 2012

Книга «Building Embedded Linux Systems»

Прочитал эту книгу:

В книге подробно описываются различные программные инструментальные средства, относящиеся к построению систем на базе Linux, в их числе средства разработки, файловые системы, средства поддержки сети, операционные системы реального времени (микроядра).

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

Мар 10 2012

Питание подсветки LCD — 2

Второй вариант схемы питания подсветки LCD-индикатора (первый вариант описан здесь: http://32bit.me/?p=1399). Данный вариант реализован на микросхеме MC34063A, и обеспечивает преобразование входного напряжения +5В в напряжение +25 В (без нагрузки) либо в стабилизированный ток 20 мА при подключенной нагрузке.

Схема преобразователя приведена на рис. 1 (на картинку можно нажать для увеличения).

Рис. 1. Принципиальная схема преобразователя.

Результаты испытаний преобразователя приведены в таблице.

Rнагр, Ом Uнагр., В Iнагр., мА Pнагр, мВт Iвх, мА Pвх, мВт КПД, %
740 15.4 20.74 319.4 100 500 63.88
949 20.17 20.36 410.66 128 640 64.17
1465 23.2 19.88 461.22 141 705 65.42

Как видно из таблицы, преобразователь имеет даже несколько больший КПД, чем на микросхеме LM2733XMF (при значительной разнице в их стоимости: MC34063A — 7,21Р, LM2733XMF — 50,03 Р по каталогу фирмы «Промэлектроника», цены на момент написания поста, цены при покупке небольших количеств микросхем).