<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>windowsClient</title>
        <link>http://blogs.ugidotnet.org/danielemulas/category/windowsClient.aspx</link>
        <description>windowsClient</description>
        <language>it-IT</language>
        <copyright>Daniele Mulas</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>WPF - Ribbon preview</title>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-preview.aspx</link>
            <description>In questo fine settimana ho deciso di approfondire la Ribbon toolbar di Office, per poterla riutilizzare nelle mie interfaccie.  Primo passo scaricare la ribbon toolbar disponibile su codeplex a questo indirizzo : WPF Ribbon Preview  Secondo passo da compiere è sicuramente scaricare l' handsOnLab presente nel sito dedicato al mondo client di microsoft(www.windowsClient.net) nella sezione learn che illustra,oltre alla Ribbon anche le nuove features del WPF Toolkit ed in particolare del Datagrid.   Iniziamo a capire il suo funzionamento.  Prima di tutto è necessario dire che la Ribbon è governata attraverso i Ribbon Command che permettono di impostare per ogni sua sezione   delle caratteristiche comuni.  Le RibbonCommand sono composte da :     a) LabelTitle       b) LabelDescription     c) ToolTipTitle     d) ToolTipDescription     e) ToolTipImageSource     f) SmallImageSource     g) LargeImageSource     h) ToolTipFooterTitle    i) ToolTipFooterDescription    l) ToolTipFooterImageSource         Iniziamo ad analizzare le varie sezioni della Ribbon attraverso il suo codice XAML.       Istanziamo una nuova ribbon toolbar all'interno della nostra applicazione :        &amp;lt;r:Ribbon &amp;gt;  &amp;lt;/r:Ribbon&amp;gt;  Una prima sezione è sicuramente la Application Menu , ovvero il pulsante dove sono possibili compiere le principali operazioni come il salvataggio del documento, la stampa ecc..   Vediamo come configurarla attraverso il codice :        &amp;lt;r:Ribbon.ApplicationMenu&amp;gt;  &amp;lt;r:RibbonApplicationMenu&amp;gt;           Definizione dei command per la Application Menu  &amp;lt;r:RibbonApplicationMenu.Command&amp;gt;  &amp;lt;r:RibbonCommand  Executed="OnCloseApplication"  LabelTitle="Application Button"  LabelDescription="Close the application."  SmallImageSource="images/Coins.png"  LargeImageSource="images/Coins.png"  ToolTipTitle="Personal Finance Manager"  ToolTipDescription="Click here to open or save a checkbook register." /&amp;gt;  &amp;lt;/r:RibbonApplicationMenu.Command&amp;gt;  &amp;lt;/r:RibbonApplicationMenu&amp;gt;  &amp;lt;/r:Ribbon.ApplicationMenu&amp;gt;          Come detto in precedenza ogni sezione della Ribbon viene configurata attraverso i RibbonComand che ne permettono una ampia personalizzazione.       Una volta definito l'aspetto del pulsante è necessario inserire al suo interno i vari Items che andranno a comporre il menù.  Per fare questo è necessario definire un RibbonApplicationMenuItem per ogni elemento del menù, ed attraverso i suoi RibbonCommand definirne il    suo aspetto.        &amp;lt;r:RibbonApplicationMenuItem&amp;gt;  &amp;lt;r:RibbonApplicationMenuItem.Command&amp;gt;  &amp;lt;r:RibbonCommand  LabelTitle="_Close"  LabelDescription="Close the Application"  Executed="OnCloseApplication" /&amp;gt;  &amp;lt;/r:RibbonApplicationMenuItem.Command&amp;gt;  &amp;lt;/r:RibbonApplicationMenuItem&amp;gt;       Definito il menù principale, passiamo a definire la vera RibbonToolbar. La Toolbar si divide in Tabs - Group - Controls         Le Tabs vengono utilizzate per inserire delle funzionalità comuni ( come era per le voci File,Modifica,Visualizza dei vecchi menù)    I Groups vengono usati all'interno delle tabs per suddividere controlli che sono similiari nelle loro funzioni    Controls sono i veri e propri pulsanti che vengono visualizzati.        I Controls possono essere di diverso tipo :     RibbonButton    RibbonCheckBox    RibbonToggleButton    RibbonDropDownButton    RibbonSplitButton    RibbonComboBox    RibbonTextBox    RibbonLabel    RibbonSeparator    RibbonToolTip   I quali permettono di costruire delle Toolbar con il Look&amp;amp;Feel stile Office 2007 di alta qualità.       Come esempio andiamo ad inserire un RibbonButton all'interno della nostra ToolBar.        Per prima cosa è necessario creare un Tab         &amp;lt;r:RibbonTab Label="Banking"&amp;gt;  &amp;lt;/r:RibbonTab&amp;gt;     All'interno del Tab inseriamo il nostro Group        &amp;lt;r:RibbonTab Label="Banking"&amp;gt;  &amp;lt;r:RibbonTab.Groups&amp;gt;  &amp;lt;r:RibbonGroup&amp;gt;  &amp;lt;/r:RibbonGroup&amp;gt;  &amp;lt;/r:RibbonTab.Groups&amp;gt;           I ribbon Group, possono essere formattati attraverso delle proprietà che ne consentono di definire come i controlli verranno      visualizzati al suo interno. Questo può essere effettuato attraverso la definizione dei GroupSizeDefinitions.               A questo punto inseriamo il nostro RibbonButton :        &amp;lt;r:RibbonButton Name="RibbonButton1" &amp;gt;                                     &amp;lt;r:RibbonButton.Command&amp;gt;                                          &amp;lt;r:RibbonCommand                                               LargeImageSource="/img/softwareD_32x32.png"                                              LabelTitle="Help"                                              &amp;gt;                  &amp;lt;/r:RibbonCommand&amp;gt;               &amp;lt;/r:RibbonButton.Command&amp;gt;      &amp;lt;/r:RibbonButton&amp;gt;     Così faccendo possiamo andare a costruirci la nostra Ribbon Toolbar che ci consente di dare un aspetto molto professionali alle nostre applicazioni.        Per  maggiori informazioni rimando al sito di windowsclient.net dove, come detto in precedenza, è possibile scaricare un piccolo Hands-On Lab e il suo     sorgente dove vengono descritte tutti i passaggi su come configurare il WPF Toolkit e la RibbonToolbar.        What’s Coming in WPF: Datagrid, Ribbon, and VSM&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/94928.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-preview.aspx</guid>
            <pubDate>Sun, 14 Dec 2008 20:31:54 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/12/14/wpf-ribbon-preview.aspx#feedback</comments>
            <slash:comments>552</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/94928.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/94928.aspx</trackback:ping>
        </item>
        <item>
            <title>Ftp Attivo</title>
            <link>http://blogs.ugidotnet.org/danielemulas/archive/2008/05/10/ftp-attivo.aspx</link>
            <description>Per un progetto di cui mi sono occupato in azienda ho avuto la necessità di interfacciare la mia applicazione con un dispositivo elettronico, il quale comunica con l'esterno tramite un server FTP.

Com'è noto il protocollo comuica con la porta 21 e la prima operazione da compiere è l'autenticazione. 



    
        
            Private tpTcpClient As TcpClient
             ftpTcpClient = New TcpClient(strftpLogin, 21)
        
    


A questo punto dobbiamo inviare dei comandi con i quali comunichiamo le nostre credenziali di accesso :


    
        
            
            ResponseStream = ftpTcpClient.GetStream
            strCommand = "USER " + strName + vbCrLf
            bteSendBytes = Encoding.ASCII.GetBytes(strCommand)
            ResponseStream.Write(bteSendBytes, 0, bteSendBytes.Length)
            
        
    

Per permettere al server FTP di darci una risposta al comando dobbiamo attedere una frazione di secondo prima dell'invio della password


 

    
        
            
            Threading.Thread.Sleep(500)
            
        
    


Ripetiamo le operazioni per la Password 


 

    
        
            strCommand = "PASS " + strPWD + vbCrLf
            Array.Clear(bteSendBytes, 0, bteSendBytes.Length)
            bteSendBytes = Encoding.ASCII.GetBytes(strCommand)
            ResponseStream.Write(bteSendBytes, 0, bteSendBytes.Length)
        
    


A questo punto se tutto è andato a buon fine dovremmo essere connessi al dispositivo che rimane in attesa di un nostro comando.

Il protocollo FTP ha due metodi comunicazione attivo e passivo. 

La differenza fondamentale è che nel caso di comunicazione passiva è il server a comunicare al client attraverso il comando PASV la porta di comunicazione nel quale verrà instaruata la comunicazione, mentre nel caso di ftp attivo è il client ad indicare al server attraverso il comando PORT la porta di comunicazione che rimane in ascolto in attesa di una connessione da parte del server FTP.

Tipicamente le porte di comunicazione devono essere  &amp;gt; 1023.

Il disposito lavora con un FTP di tipo attivo quindi sarà nostro compito indircargli a quale porta attendiamo la comunicazione :



 

    
        
            Dim ipLocale As String = Dns.GetHostEntry(Dns.GetHostName).AddressList(0).ToString()
            Dim Listener As New TcpListener(IPAddress.Parse(ipLocale), myPortOpen)
            Listener.Start()
        
    


Inviamo i comandi per richiedere il file desiderato :
 

    
        
            FTPCommands(ftpStream, "TYPE I", returnMessage)
            FTPCommands(ftpStream, "PORT 192,168,0,3,7,35", returnMessage)
            FTPCommands(ftpStream, "RETR " + strFilePath, returnMessage)
        
    


A questo punto non ci resta che attendere che il server faccia la sua richiesta di comunicazione alla porta indicata


    
        
            If  Listener.Pending Then
            
            dataClient = Listener.AcceptTcpClient()
            DownloadStream = dataClient.GetStream
            ReDim bytDwFile(1024)Do
            lngFileLength = DownloadStream.Read(bytDwFile, 0, 1024)
            DwFile.Write(bytDwFile, 0, lngFileLength)
            Loop While lngFileLength &amp;gt; 0
            
            
            Listener.Stop()
        
    


A questo punto abbiamo concluso le operazioni di download non ci resta che salvare il file sul nostro pc.
&lt;img src="http://blogs.ugidotnet.org/danielemulas/aggbug/92601.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Daniele Mulas</dc:creator>
            <guid>http://blogs.ugidotnet.org/danielemulas/archive/2008/05/10/ftp-attivo.aspx</guid>
            <pubDate>Sat, 10 May 2008 13:28:55 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/danielemulas/archive/2008/05/10/ftp-attivo.aspx#feedback</comments>
            <slash:comments>1385</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/danielemulas/comments/commentRss/92601.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/danielemulas/services/trackbacks/92601.aspx</trackback:ping>
        </item>
    </channel>
</rss>