Wednesday, November 22, 2017

C# : How Convert doubles to strings ALWAYS with dots instead of commas

To convert a double to string ALWAYS with dots instead of commas (as it is used in some languages like Italian or German) you need to use an overloaded version of the ToString() method.



Example:

double dVal = 77.55;
string sVal = dVal.ToString(System.Globalization.CultureInfo.InvariantCulture);
// sVal will be  always "77.55"


or if you use System.Globalization


using System.Globalization;

double dVal = 77.55;
string sVal = dVal.ToString(CultureInfo.InvariantCulture);

Tuesday, November 21, 2017

How to implement Matlab-like Tic() and Toc() functions in C#

Tic() and Toc() functions are quite handy in Matlab and here is how you can get something similar in C#


using System;
using System.Diagnostics;

namespace MyTools
{
    class Perform
    {
        static Stopwatch stopWatch;

        public static void Tic()
        {
            stopWatch = new Stopwatch();
            stopWatch.Start();

        }

        public static void Toc()
        {
            TimeSpan ts = stopWatch.Elapsed;

            // Format and display the TimeSpan value.
            string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                ts.Hours, ts.Minutes, ts.Seconds,
                ts.Milliseconds / 10);

            // elapsed time since the last Tic()
            Console.WriteLine($"Elapsed time : {elapsedTime} ");

        }
    }
}


Now you can check the performance of your code with:



Perform.Tic();

// some code that takes some time to execute

Perform.Toc();



OR if you use the using static directive:


using static MyTools.Perform;

Tic();

// some code that takes some time to execute

Toc();



Happy programming!


Source:

Monday, November 20, 2017

PluginManger for Notepad++ is missing

If you installed the 64 bit version of Notepad, it can be that the useful plugin manager is missing.
In this case, you can install it manually!

Thursday, November 16, 2017

VisualStudio: How to indent all code in file

In VisualStudio to indent all code in the file you are currently working on:

1. Select all code: CTRL+A
2. Choose CTRL+K, CTRL+D

That's it!


Wednesday, November 15, 2017

Notepad++: Remove all lines containing a certain word/sentence/regex

In Notepad++ (a wonderful Program!) you can easily delete all LINES containing a certain word/sentence or regex.

It's basically a two step process.


You need to find all lines that containing your search string. 

  • Open the search window (CTRL+F)
  • Choose the Mark tab
  • Insert the string you want to search for 
  • Select the Bookmark line
  • Press Mark All.

Now from the Notepad++ Menus, choose:
Search -> Bookmark -> Remove Bookmarked Lines

That's it!

Sunday, November 12, 2017

C#: Setting up a connection with PostgreSQL in VisualStudio

In this small tutorial I gonna show you how to setup a connection to your local PostgreSQL instance and write/read data to/from a table (in the following I will call this table my_test_table).

You will need:

Here is the definition of my_table (I used pgAdmin to create it)

CREATE TABLE public.my_table
(
  id integer NOT NULL,
  extref integer NOT NULL,
  val numeric NOT NULL,
  CONSTRAINT my_table_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public.my_table
  OWNER TO postgres;



Install Npgsql from the Package Manager Console in VisualStudio:  

Tools -> NuGet Package Manager -> Package Manager Console 

In the command prompt type:

Install-Package Npgsql -Version 3.2.5   (or whatever new version is available here)



In VisualStudio create a simple console application and use this code:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Npgsql;

namespace TestDB
{
    class Program
    {

        static public void TestDB()
        {

            // Adapt for your configuration (port, Username, password etc)
            var connString = "Host=localhost;Port=5432;Username=postgres;Password=postgres;Database=postgres";

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                // Insert some data


                using (var cmd = new NpgsqlCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText = "INSERT INTO my_table (id, extref, val) VALUES (@id, @extref, @val)";
                    cmd.Parameters.AddWithValue("id", 10);
                    cmd.Parameters.AddWithValue("extref", 10);
                    cmd.Parameters.AddWithValue("val", 150);
                    cmd.ExecuteNonQuery();
                }

                // Retrieve all rows

                Console.WriteLine("Reading from the DB table...");
                using (var cmd = new NpgsqlCommand("SELECT * FROM my_test_table", conn))
                using (var reader = cmd.ExecuteReader())
                    while (reader.Read())
                    {
                        string readLine = string.Format("id={0}, extref={1}, value={2}", reader.GetString(0), reader.GetString(1), reader.GetString(2));
                        Console.WriteLine(readLine);
                    }
            }

        }

        static void Main(string[] args)
        {
            TestDB();

            Console.ReadKey();

        }
    }
}


NOTE

If you try to run this program twice, you will get an exception because you will be trying to insert the same id.. twice and this is not possible because ID is a unique key.
So remember to delete the table's content each time you runt this application.


The list of available parameters for the connection string  is available here


References:
http://www.npgsql.org/doc/index.html

 

Tuesday, August 29, 2017

How the I2C protocol works

I found this interesting video explaining how the I2C or two-wire interface works.
Since this is a very popular protocol, you will meet soon or later in the embedded systems, so it's extremely worth to learn it!




http://howtomechatronics.com/tutorials/arduino/how-i2c-communication-works-and-how-to-use-it-with-arduino/

Enjoy!