static void Main(string[] args)
        {
            Thread.Sleep(2000);
            var portSettings = ConfigurationManager.AppSettings["COMports"].Split(
                new[] { ",", ", " },
                StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine("Creating service proxy.");
            var proxy = new SmlComServiceClient(new BasicHttpBinding(), new EndpointAddress("http://localhost:7081/SmlComService"));
            
            var serviceVersion = proxy.GetVersion();
            Console.WriteLine("Service Version: '{0}'.", serviceVersion);

            Console.WriteLine("Resetting all ports.");
            proxy.ResetAllPorts();
            foreach (var portName in portSettings)
            {
                portList.Add(
                   new CommunicationPort
                   {
                       ComPortName = portName,
                       ComTimeOut = TimeSpan.FromSeconds(3),
                       MeterType = MeterType.Basemeter
                   });
            }

            var configuredAt = DateTime.Now;
            Console.WriteLine("{0} - Calling configuration command.", configuredAt);
            var clientGuid = Guid.Empty;

            clientGuid = ConfigurePortsOrExit(proxy, configuredAt, clientGuid);

            Console.ReadLine();

            var serverPorts = proxy.GetPortList();
            foreach (var communicationPort in serverPorts)
            {
                Console.WriteLine("Server port: {0}, init {1}", communicationPort.ComPortName, communicationPort.IsInitialized);
            }

            Console.ReadLine();

            string port = "COM101";
            while (true)
            {
                // read register test
                //ReadRegister(port, proxy, clientGuid, RegisterIds.ActiveEnergyPlus.AsLong());
                ReadRegister(port, proxy, clientGuid, RegisterIds.ActiveEnergyMinus.AsLong());

                WriteManufacturerId(port, proxy, clientGuid, "IVU");
                //WriteMeasurementMode(port, proxy, clientGuid, "MM2");
                //ReadHistoricEnergyLastDay(port, proxy, clientGuid);
                //ReadHistoricEnergyLastWeek(port, proxy, clientGuid);

                //WriteEnableTariffFunction(port, proxy, clientGuid, true);
                //WriteAplusTariff(port, proxy,clientGuid, 2);

                //WritePinCode(port, proxy, clientGuid, "1221");

                //ReadPublicKey(port, proxy, clientGuid);

                //WriteServerId(port, proxy, clientGuid);

                //WriteManufacturerId(port, proxy, clientGuid, "DZG");

                //WriteFactoryMode(port, proxy, clientGuid, false);

                //WriteEnableGridOption(port, proxy, clientGuid, true);

                Thread.Sleep(3000);
            }



            Console.WriteLine();
            Console.WriteLine("Command execution finished.");

            Console.ReadLine();

        }