Archive for the 'C' Category

.NET, C, Source Code, UDP Communication

UDPSender: Inviare messaggi udp in c#

Questo post fa parte della sezione Comunicazione UDP, e tratterà l’utilizzo di una semplice classe per inviare messaggi dalla propria applicazione c# utilizzando il protocollo udp.

Header UDP

La classe si chiama UDPSender e, per comodità, implementa un’interfaccia denominata INetworkSender.

public interface INetworkSender
{
	void SendMessage(string address, byte[] message);
}

In più in caso di errore la classe genera una eccezione del tipo UDPSenderException che contiene la descrizione dell’errore, la causa dell’eccezione (innerException), e l’oggetto UDPSender che ha generato l’eccezione.
Continue Reading »

C, Source Code, UDP Communication

UDPListener: Classe che riceve messaggi UDP

Questo post fa parte della sezione Comunicazione UDP, dove vengono raccolti gli articoli inerenti la programmazione dei socket UDP in C#.

UDP - User Datagram Protocol

La classe in questo post permette in maniera facile e veloce di ricevere messaggi UDP con poche righe di codice e senza scendere nei dettagli dell’implementazione. Un esempio di utilizzo della classe è il seguente:

private void InitConnection()
{
	m_udpListener = new UDPListener(m_port, new byte[4] { 0, 0, 0, 0 });
	m_udpListener.MessageReceived += new UDPMessageReceivedDelegate(udpListener_MessageReceived);
}

Continue Reading »

C, Windows

Conoscere tutti i processi in esecuzione da una unità

Continuando sulla scia della gestione in c++ delle unità removibili, il post seguente tratterà di come conoscere tutti i processi in memoria, che siano stati lanciati da un drive in particolare. Questo può essere utile, ad esempio, per chiudere tutti i processi di un pendrive che si vuole “smontare”.

Processi

Per ottenere la lista dei processi in esecuzione windows mette a disposizione due metodi: uno derivante da windows 95 (TOOLHELP API), compatibile quindi con tutti gli s.o. di microsoft dal 95 in poi, ed un metoto introdotto in windows NT (PSAPI), compatibile con gli s.o. derivanti da esso (NT, 2000, XP e vista). Naturalmente, dato che la stragrande maggioranza dei utenti windows usa xp, o vista :( , nell’esempio qui sotto ho usato le PSAPI. Attenzione però, per potere includere il file psapi.h bisogna istallare il “Platform SDK”.
Continue Reading »

C, Source Code, Windows

Classe timer in c++

Partendo dall’articolo sui timer in c++, abbiamo creato una semplice classe che fa da wrapper alle funzioni di Windows e che permette facilmente di fare partire un nuovo timer, stopparlo, e decidere quale funzione chiamare quando il tempo del timer è scaduto.

Timer

Un semplice esempio di utilizzo della classe è il seguente:
Continue Reading »

.NET, C, Source Code

Calcolo del CRC in C#

Questo è un post veloce sul calcolo del codice CRC(Cyclic Redundancy Check) in C#. Per lavoro mi serviva una classe che mi calcolasse il crc-12, e non vi nascondo che ho avuto un poco di difficoltà nel trovare le specifiche dato che, di solito, gli standard più usati sono crc-8, crc16 e crc32.

binary matrix

Alla fine ho trovato una classe che mi permettava di calcolare il crc di ordine variabile da 1 a 32, ho inserito lo standard crc-12, ho aggiunto una classe per semplificare l’inserimento dei valori (CRCSettings) e una funzione per generare altri polinomi oltre quelli standard. Infine ho ripulito la struttura della classe principale.
Continue Reading »

C, Source Code, Windows

Come ricavare la lettera di un pendrive usb

Nell’articolo “Intercettare il collegamento e la rimozione di una periferica USB” avevo mostrato un piccolo esempio che indicava come eseguire del codice al collegamento, e alla rimozione di una periferica usb. Se volessimo eseguire un programma dalla penna usb, avremmo bisogno di:

Penna usb

  1. intercettare l’inserimento della penna;
  2. essere sicuri che la periferica inserita sia una “mass storage device”, e che contenga un”volume”;
  3. conoscere la lettera dell’unità del volume.

Continue Reading »

C, Source Code, Windows

Intercettare il collegamento e la rimozione di una periferica USB

Qualche mesetto fa mi sono chiesto se non ci fosse una maniera per lanciare automaticamente il mio MozUp quando inserivo il mio pendrive nel pc, un pò come succede quando inserisci un cd ed il sistema automaticamente legge il file autorun.inf e fa il suo mestiere… .

Logo usb

Naturalmente, anche se sul MozUp c’é un’opzione per generare il file autorun.ini,

Continue Reading »

C, MySQL, Source Code

Trasformare un oggetto C# in stringa SQL

Il post seguente fa parte del progetto SQLStringBuilder. Per le ultime versioni del codice sorgente si consiglia di prelevare il codice dal CVS.

Ogni volta che dobbiamo creare delle query SQL in un linguaggio di programmazione spesso si fa qualcosa che ho sempre reputato sporco, del tipo:

int id = GetTableID();
string place = GetPlace();
DateTime timestamp = GetLastActionDate();
string strTimestamp = Utils.GetSQLDate(DateTime.Now);
string sql = "INSERT INTO table VALUES(" + id + ",'" + place + "'," + timestamp + "')";

Nella creazione della stringa bisogna stare attentissimi alle sequenze di virgolette, virgole e apici vari, e basta sgarrare uno di questi elementi per sminchiare completamente la query! Lo scopo di questo articolo è quello di creare un metodo che prenda in ingresso un oggetto c# qualsiasi e restituisca una stringa formattata nel modo corretto. L’intestazione del metodo è la seguente:

public static string GetSQLObject(object value)

Continue Reading »

.NET, C

Utilizzare gli Snippets in Visual Studio

Una comodissima funzionalità presente nel Visual Studio è la possibilità di inserire degli Snippets di codice in maniera veloce e intuitiva. Gli snippets di codice sono dei blocchi di codice che possono essere ripetuti con uno schema fisso, e che è sempre noioso per un programmatore riscrivere. Supponiamo di voler scrivere una classe con diverse variabili private e rispettive property get e set: in pratica per ogni variabile dobbiamo scrivere la relativa property, oppure andare di copia incolla dopo aver scritto la prima variabile e cambiare i nomi alle variabili successive.

Scrivere una property utilizzando gli snippet è invece immediato, la procedura che descrivo qui di seguito è composta da sette immagini perchè sono uno sborone per natura :P, ma in realtà si esegue nel giro di un secondo e mezzo. :)
Per iniziare scriviamo prop nel punto del codice dove volete creare la vostra Property, che è la parola chiave che identifica questo Snippet di codice:

snippet property 1

Continue Reading »

.NET, C

Errore Designer Visual Studio

Piccolo post per un problema del Visual Studio .NET 2005 riscontrato oggi a lavoro, che spero possa aiutare qualcuno con lo stesso problema.

Mentre lavoravo su un progetto, aprendo un form che includeva al suo interno diversi User Control creati da me mi è comparsa una schermata simile alla seguente al posto del Designer:

One or more errors encountered while loading the designer. The errors are listed below. Some errors can be fixed by rebuilding your project, while others may require code changes.

Non potevo più editare il form nel designer, ma stranamente il codice veniva compilato ed eseguito correttamente. Provando a fare Clean Solution e Build Solution l’errore permaneva. Ho provato quindi a controllare il codice generato dal designer, temendo che avesse combinato qualche disastro, ma neanche qui niente di strano. Quando iniziavo a temere il peggio, cercando su internet con un mio collega abbiamo trovato la soluzione: bisogna cancellare le directory /bin e /obj del progetto e fare il rebuild del progetto per fare tornare le cose alla normalità. Ho sempre reputato il Visual Studio un ottimo prodotto, ma questo bug è abbastanza antipatico: mi ha fatto perdere un pò di tempo e adesso mi si ripropone in continuazione, costringendomi a cancellare le directory da Explorer e a rifare il rebuild… :f7:

Non capisco sinceramente perchè facendo il Clean Solution più il Build Solution la cosa non si risolva da sola, visto che in teoria il compito del rebuild dovrebbe essere proprio quello di cancellare tutti i file temporanei creati!

« Prev - Next »