Santa, CP/M, and 28 years of Basic Compilers

These days Santa comes home with some presents. A lot of people stay with family and share the best drinks and good dinners to celebrate.

 Searching my Santa present in garage, I found an incredible surprise… my first business personal computer.

Is amazing press power On and comeback to time of CP/M systems, working again with my first Disk Basic Compiler.

Enjoy of this screenshot

Descargar archivos desde un FTP en .NET – How to Download files from FTP using .NET

FtpClient

        

Existe una inquietud por parte de muchas personas desde la aparición de .NET, en tanto a como descargar archivos utilizando una aplicación de escritorio desde un servidor FTP.

El propósito de este ejemplo es demostrar como descargar simultáneamente archivos de un directorio raíz en un ftp, evidentemente con algunas limitaciones como por ejemplo navegar en los directorios del mismo. Me gustara compartir esta aplicación para que la ejecutéis según os interese, intentare adaptar todas las sugerencias que me hagáis llegar y finalmente poder publicar el proyecto (o eso espero) para compartirlo con todos vosotros.

Podéis descomprimir y ejecutar él ‘.exe’ en cualquier maquina con Vista o 7, si necesitáis el instalador no dudéis en solicitármelo, pero con en principio cualquier equipo con el Framework 3.5 sirve.

Espero vuestros comentarios.
(C) Pep Lluis 2009 🙂
 


Always receive some comments from people asking ‘How to Download files from FTP using .NET”,  the best way to answer this, is develop a very easy & simple sample using last version of framework, first I will share this app to free run and I will adapt all yours suggestions, finally share the project with source code (… or I hope so).

You can run with no setup in windows vista or 7, please ask if you need setup for deployment.

Please don’t forget run and send your suggestions.
Best!!
Pep Lluis,

 

Puedes descargarte el ejecutable haciendo clic en : FTPClient

Advertencia y Aclaración.
Está claro que os facilito este articulo por vuestra insistencia, esta aplicación solo utiliza dos librerías : 
System.Net, System.IO y no almacena ningún tipo de información introducida por nombres o credenciales intercambiadas por el usuario,  debo rechazar categóricamente cualquier responsabilidad por el uso de la información así como la aplicación aquí contenida, cualquier uso de la misma o de la información de este artículo y su alcance es estrictamente responsabilidad del lector, aunque como siempre estaré encantado de recibir vuestros comentarios.

Warning:  It is clear that this article is delivered for the insistence of some readers, this application uses only two libraries: System.NET, System.IO, does not store any information introduced by names or exchanged by the user credentials, I categorically reject any responsibility for the use of information as well as the application contained here, any use of it or the information in this article and its scope is strictly responsibility of the reader, although as I am always happy to receive your comments.

Totalizadores y Contadores en una tabla de mi BD

Algunos de vosotros estáis preguntando como es posible totalizar ciertos valores ya sea de estadística o control en una de las tablas de nuestra aplicación.

Aquí os propongo una de las formas de implementarlo :
(Aunque no olvideis que existen otras formas de realizarlo, eso si quizas no tan accesibles :-))

En el lado de SQL podéis ejecutar este ‘script’ para generar la tabla…

CREATE TABLE [dbo].[Contadores](

      [Peras] [int] NOT NULL DEFAULT ((0)),

      [Naranjas] [int] NOT NULL DEFAULT ((0)),

      [Manzanas] [int] NOT NULL DEFAULT ((0))

) ON [PRIMARY]

Ahora solo tendréis que realizar el correspondiente ‘Update’ desde vuestra aplicación incrementando la columna que deseáis contabilizar. Esta pregunta es frecuente cuando se realizan aplicaciones tipo albaranes/facturas u otro tipo, en la que se requiere seguir o registrar una numeración aunque en ese caso no debéis olvidar bloquear el registro y más a lo sumo en aplicaciones que varios usuarios estén utilizando esa numeración.

    Private cn As New SqlClient.SqlConnection( _

          «Data Source=MiSrv\SQLEXPRESS;» + _

          «Initial Catalog=MiBd;» + _

          «Integrated Security=True»)

    Private da As New SqlClient.SqlDataAdapter( _

          «Select * from Contadores», cn)

 

    Private Sub Button1_Click() Handles Button1.Click

        ‘En este caso simulamos incrementar el contador de Manzanas

        da.UpdateCommand = New SqlClient.SqlCommand( _

          «Update Contadores SET Manzanas = Manzanas + 1», cn)

        cn.Open()

        da.UpdateCommand.ExecuteNonQuery()

        cn.Close()

    End Sub

 

Espero que os sea útil,
Buen fin de semana.
Pep Lluis,

Fifteen years with x86 technologies

Fifteen or may be seventeen?, New technologies waves with NT, in any way, what’s memories, What’s memories!

In 1993 after long time installing 16Bits Operating System with floppy disk, the new era start with Compact Disk and 32Bits OS.

Probably this is my first 32Bits OS and my first Cd Support to develop 32Bits apps.
Just fifteen… Or seventeen years ago
J

Menudas memorias!

En 1993 después de inacabables pilas de diskettes para instalar los sistemas operativos de 16 bits, nos llega una nueva era con Sistemas de 32Bits a caballo del novedoso soporte plástico llamado ‘Compact Disk’.

Probablemente este fue mi primer sistema de desarrollo en 32bits y casi seguro mi primer CD!

Que lo Disfrutéis!

Como comunicarme con una Bascula

‘Respondiendo a la pregunta :

‘ ¿Cómo puedo establecer comunicación con una bascula que tiene un RS232?

‘En este ejemplo podremos ver diferentes formas de enviar una petición

‘ a una bascula, simulando que nos responde al enviar el carácter ‘P’

‘ y visualizar su respuesta en una etiqueta llamada ‘Recibidos’

 

Public Class Form1

    ‘Constructores

    Private BasculaCom As New System.IO.Ports.SerialPort        ‘Puerto conectado a la báscula

    Private Recibidos As New Label                              ‘Etiqueta para visualizar la recepción

    Private Peticion As New Button                              ‘Botón para disparar el envío

    Delegate Sub MostrarRecepcion(ByVal Texto As String)        ‘Delegado para asignar el valor recibido

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ‘ Ajustar los parámetros de comunicaciones

        ‘ adaptándolos a las especificaciones o configuración

        ‘ de la bascula en concreto.

        BasculaCom.PortName = «COM1»                            ‘Conectaremos la bascula al puerto COM1

        BasculaCom.BaudRate = 9600                              ‘La velocidad de intercambio será de 9600

        BasculaCom.Parity = IO.Ports.Parity.None                ‘No verificaremos la paridad

        BasculaCom.StopBits = 1                                 ‘Final de Byte con 1 bit de Stop

        BasculaCom.Open()                                       ‘Abrir las comunicaciones con la bascula

       

        ‘ marco

        Dim marcoDGV = New FlowLayoutPanel                      ‘Conformar los controles del form

        marcoDGV.BorderStyle = BorderStyle.Fixed3D

        marcoDGV.Width = Me.Width

        marcoDGV.Height = Me.Height

        ‘ Añadir el marco con el Label y el Buton

        Recibidos.Text = «-«

        Peticion.Text = «Enviar p»

        marcoDGV.Controls.AddRange(New Control() {Peticion, Recibidos})

        Me.Controls.Add(marcoDGV)

 

        ‘Dirigir los eventos a las funciones para procesarlos

        AddHandler Peticion.Click, AddressOf EnviarUnaP         ‘Ejecución de ‘EnviarUnaP’ al pulsar el boton

        AddHandler BasculaCom.DataReceived, AddressOf Recibir   ‘Ejecución de ‘Recibir’ al recibir respuesta de la bascula

    End Sub

   

    ‘ Enviar una solicitud a la bascula

    Sub EnviarUnaP()

        ‘enviar una p

        BasculaCom.Write(«P»)

        ‘tambien puede ver/probar…

        BasculaCom.WriteLine(«P»)

        BasculaCom.Write(Chr(80))

        ‘… etc

    End Sub

 

    ‘al recibir de la bascula los bytesToRead indicara

    ‘un valor superior a 0, indicando el numero de caracteres

    Sub Recibir()

        ‘Dim NumeroDeBytesEnBuffer As Integer = BasculaCom.BytesToRead

        MostrarRececibidos(BasculaCom.ReadExisting)

    End Sub

   

    ‘ Mostrar los bytes recibidos en el Label recibidos

    Private Sub MostrarRececibidos(ByVal [texto] As String)

        If Recibidos.InvokeRequired Then

            Dim delegado As New MostrarRecepcion(AddressOf MostrarRececibidos)

            Me.Invoke(delegado, New Object() {[texto]})

        Else

            Me.Recibidos.Text = [texto]

        End If

    End Sub

 

End Class