Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - djnilo

#1
.NET (C#, VB.NET, ASP) / conexion puerto com
25 Agosto 2021, 05:15 AM
buenas tardes programadores tengo conectada una pantalla vdf al puerto com necesito enviar un variable total ejemplo 1.000
que la muestre en pantalla tengo este cogigo en delphi quiero pasarlo a c #

-Guest display instruction----------------
1、initialize guest display to 2400,n,8,1
2、indicator light
   Total chr(27)+chr(115)+chr(50)
   Change chr(27)+chr(115)+chr(52)
   Price chr(27)+chr(115)+chr(51)
3、Send word
   chr(27)+chr(81)+chr(65)+8位字符(8 Digital)+chr(13)


Example:(delphi)
procedure GY8Client(Port: string; iLight: Integer; FirstRow: AnsiString);
var s: AnsiString;
begin
  AssignFile(hPort,Port);
  Rewrite(hPort);
  case iLight of
    1:s:=#27#115#50; //Total
    2:s:=#27#115#51; //Price
    3:s:=#27#115#52; //Change
  end;
  s:=s+#27#81#65+trim(FirstRow)+#13;
    Write(hPort,s);
end;



private void btnEnviar_Click_1(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Write(txtTx.Text.Trim());
               
                txtTx.Clear();
            }
            catch (Exception ex)
            {
                MessageBox.Show("No se puedo enviar la información", "Error", MessageBoxButtons.OK,
                MessageBoxIcon.Error);
            }
        }

como lo podria hacer
#2
buenas
tardes amigos del foro estoy haciendo una aplicación de venta de productos
esta mi tabla con los campos productos
idproducto, codigobarra, precio , idmedida,stock,idsubfamilia
y tengo un formulario  ventas me problema surge cuando quiero vender productos granel
entonces estaba pensando cuando el codigo = codigobusqueda y el idmedida = 3 que es lo mismo a kilogramo me muestre un formulario modal
entoces un else que sea distinto a kilogramo por que no seria a granel si no = unidad
codigo para
buscar productos por codigo esto funciona correctamente
entoces quiero agregar un else para que me busque segun la otra condicion que seria por el idmedida = 3 esto es kilogramo

en esta linea busco el producto eProd = objProducto.GetByCodigoBarras(TxtCodigoBarras.Text);
y lo me trae
  public PRODUCTO GetByCodigoBarras(string Codigo)
        {
            DAL.IRepository repository = new Modelo.Repository();
            try
            {
                var producto = repository.FindEntity<PRODUCTO>(a => a.CodigoBarras ==Codigo, "Venta_Detalles", "Compras_Detalle", "Medida", "SubFamiliaProducto");
                if (producto != null)
                {
                    producto.IdFamilia = producto.SubFamiliaProducto.IdFamilia;
                    var fami = new FamiliaProducto();
                    fami = repository.FindEntity<FamiliaProducto>(x => x.IdFamilia == producto.SubFamiliaProducto.IdFamilia);
                    producto.NombreFamilia = fami.NombreFamilia;
                    producto.NombreMedida = producto.Medida.Medida1;
                    producto.NombreSubFamilia = producto.SubFamiliaProducto.NombreSubFamilia;
                           

                }
                else
                {
                    producto = null;
                }
                return producto;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }



private void TxtCodigoBarras_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(TxtCodigoBarras.Text.Length>0)
            {
                if (e.KeyChar == Convert.ToChar(Keys.Return))
                {

                    DetalleVentaDTO eDeta = new DetalleVentaDTO();
                    PRODUCTO eProd = new PRODUCTO();
                    eProd = objProducto.GetByCodigoBarras(TxtCodigoBarras.Text);
                    if (eProd == null)
                    {
                        if (MessageBox.Show("Producto no existe, ¿Desea agregarlo?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            Form frm = this.MdiChildren.FirstOrDefault(x => x is FrmProductos);
                            if (frm != null)
                            {
                                frm.BringToFront();
                                return;
                            }
                            frm = new FrmProductos(idUsuario);
                            frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                        return;
                    }
                    if (eProd.Stock <= 0)
                    {
                        MessageBox.Show("No existe stock suficiente para vender", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }





                    eDeta.Cantidad = 1;

                    eDeta.CodigoBarras = eProd.CodigoBarras;
                    eDeta.FechaReg = DateTime.Now;
                    eDeta.IdDetalle = 0;
                    eDeta.IdProducto = eProd.IdProducto;
                    eDeta.IdVenta = 0;
                    eDeta.Importe = eProd.Precio * eDeta.Cantidad;
                    eDeta.NombreProducto = eProd.NombreProducto;
                    eDeta.PorcentajeIVA = eImpuesto.TasaImpuesto;
                    eDeta.Precio = eProd.Precio;
                    Detalles.Add(eDeta);
                    //DgvDetalle.DataSource = null;
                    DgvDetalle.DataSource = Detalles;
                    TxtCodigoBarras.Clear();
                    TxtCodigoBarras.Focus();
                }

este lo carga en la grilla perfecto lo que necesito con la condicion



portal de imagenes gratis

el codigo que quiero insertar con else para que cumpla la condicion que sea igual a idmedida = 3 kilogramo
PRODUCTO eProds = new PRODUCTO();
                    eProds = objProducto.GetByCodigoBarrasKilogramo(TxtCodigoBarras.Text);
                    if (eProds == null)

                    {
                        if (MessageBox.Show("Producto no existe, ¿Desea agregarlo?", "Confirme", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            Form frm = this.MdiChildren.FirstOrDefault(x => x is FrmProductos);
                            if (frm != null)
                            {
                                frm.BringToFront();
                                return;
                            }
                            frm = new FrmProductos(idUsuario);
                            frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                        return;
                    }
                    if (eProds.Stock <= 0)
                    {
                        MessageBox.Show("No existe stock suficiente para vender", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    string idbusqueda = Convert.ToString(TxtCodigoBarras.Text);
                    NombreProductos = eProds.NombreProducto;
                    Precioss = Convert.ToString(eProds.Precio);



                    FrmGranel form = new FrmGranel(idbusqueda, NombreProductos, Precioss);
                    form.MdiParent = this.MdiParent;
                    form.Show();


codigo busqueda idmedida = 3
public PRODUCTO GetByCodigoBarrasKilogramo(string Codigo)
        {
           

            DAL.IRepository repository = new Modelo.Repository();
            try
            {
                var producto = repository.FindEntity<PRODUCTO>(a => a.CodigoBarras == Codigo, "Venta_Detalles", "Compras_Detalle", "Medida", "SubFamiliaProducto");
                if (producto != null)
                {
                 
                    producto.IdMedida = producto.Medida.IdMedida;
                    var Medidas = new Medida();
                    Medidas = repository.FindEntity<Medida>(x => x.IdMedida == 3);
                   
                    producto.NombreSubFamilia = producto.SubFamiliaProducto.NombreSubFamilia;



                }
                else
                {
                    producto = null;
                }
                return producto;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }





#3
buenas noches
señores programadores cómo podría imprimir directamente a la impresora con ReportViewer

Estoy intentando imprimir un ticket directamente
Vb.net sql server 2014
visual studio 2015

Código (vbnet) [Seleccionar]
Private Sub WFrm_REPORTE_BOLETA_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'DataSet_Restaurante.PA_ReportarBoleta' table. You can move, or remove it, as needed.
        Me.PA_ReportarBoletaTableAdapter.Fill(Me.DataSet_Restaurante.PA_ReportarBoleta, CodigoImprimirComanda)
        Me.ReportViewer2.RefreshReport()
    End Sub
#4
Cita de: Ele?tro en 18 Octubre 2016, 16:26 PM
Disculpa pero evidentemente el mensaje de error no dice "no se puede convertir a inter" con esas palabras...

Sí tienes un problema sobre un mensaje de error muy específico entonces deberías mostrar el mensaje de error completo tal y como se te muestra en la IDE, ¿que menos que hacer eso si buscas ayuda?.

El método System.Convert.ToInt32() acepta muchos tipos de parámetros pero tampoco has especificado que tipo de valor devuelve la función DaoInsertTicker.mostrar(), tampoco has mostrado el código de esa función, ni nos has dicho que valor le estás pasando a la función, solo has descrito por encima el propósito del código pero eso no es relevante con respecto al problema, no has proporcionado ninguna información sobre el problema, ni siquiera el mensaje de error completo... De verdad lo siento que escriba un párrafo entero solo para decir esto, pero me molesta bastante que se hagan las cosas así, por que no entiendo de que sirve invertir 10 o 15 minutos para formular una pregunta sobre programación si al terminar de escribir el post no se ha proporcionado ninguna información para poder ayudarte, así pierdes tiempo tu y también los demás, por que no somos adivinos...

De todas formas puedes corregir el fallo por ti mismo sin ayuda externa, o al menos localizarlo, simplemente antes de intentar llamar a la función System.Convert.ToInt32() comprueba el valor que le vas a pasar, primero comprueba el valor de obj y luego el valor que devuelve la función DaoInsertTicker.mostrar() cuando le pasasas obj, así de sencillo, ¡inténtalo!.

Por último, te recomiendo una solución global a muchos de los problemas que hay en el código que has mostrado y en la parte que no hayas mostrado (debido a malos hábitos de escritura de código VB.NET), te recomiendo establecer las siguientes sentencias Option:
Código (vbnet) [Seleccionar]
Option Strict On
Option Explicit On


Lo aconsejable es activarlo de forma permanente desde las opciones de la IDE, pero bueno, lo que puedes hacer es copiar y colocar esas dos lineas de código que te he mostrado, arriba del todo de la clase conflictiva y de las demás classes de tu proyecto, y entonces ve corrigiendo uno por uno los errores de compilación que Visual Studio te irá indicando, entre esos errores te indicará por ejemplo el mal hábito que ya explicó @okik, a una función se le debe asignar un tipo de retorno, de lo contrario devolverá el tipo por defecto, Object, y esto no es nada bueno para conversiones de tipos como lo que intentas hacer.

Saludos!
muchas gracias por responder elektro

capa negocios esta este codigo
Código (vbnet) [Seleccionar]

        Dim Conn As New SqlConnection(conexion.Connectionstring)
        Dim eEntradavehiculo As VregistroEntrada = Nothing

        Dim Cmd As New SqlCommand
        Try
            Conn.Open()
            Cmd.CommandText = "Select IdEntraVehiculo,Placa,FechaHoraEntrada,Codigo From EntradaVehiculo Where Codigo = @Codigo"
            Cmd.CommandType = CommandType.Text
            Cmd.Connection = Conn
            Cmd.Parameters.Add("@Codigo", SqlDbType.Int).Value = obj.Codigo
            Dim DT As New SqlDataAdapter(Cmd)
            Dim TABLA As New DataTable
            DT.Fill(TABLA)
            eEntradavehiculo = New VregistroEntrada
            If TABLA.Rows.Count > 0 Then

                Dim row As DataRow = TABLA.Rows(0)
                eEntradavehiculo.Placa = If(CStr(row.IsNull(1)), "", row(1))
                eEntradavehiculo.FechaHoraEntrada = If(row.IsNull(2), Nothing, row(2))
                eEntradavehiculo.Codigo = CStr(row("Codigo"))

            End If

        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            If Conn.State = ConnectionState.Open Then
                Conn.Close()
                Conn.Dispose()
            End If
        End Try
        Return eEntradavehiculo
    End Function

en esta linea me marca el error   Return eEntradavehiculo
el integer lo que pasa es que son son datarow me imagino por eso manda ese error

codigo capa entidad
Código (vbnet) [Seleccionar]
Public Class VregistroEntrada
    Public Property IdTicker As Integer
    Public Property Placa As String
    Public Property FechaHoraEntrada As DateTime
    Public Property Codigo As Integer

End Class

capa negocio
Código (vbnet) [Seleccionar]
Function mostrarvehiculos(ByVal obj As Capa_Entidad.VregistroEntrada)

        Dim OMostrar As New DaoInsertTicker

        Dim Result As Integer = 0
        Try
            Result = Convert.ToInt32(OMostrar.mostrar(obj))
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
        Return Result
    End Function


MOD: Imagen adaptada a las normas del foro.
#5
Cita de: okik en 18 Octubre 2016, 12:09 PM
Por la forma en que está no puedo probar el código pero te puedo decir que una función debe establecerse con el tipo: Function  X() AS ....

Código (vbnet) [Seleccionar]
Function mostrarvehiculos(ByVal obj As Capa_Entidad.VregistroEntrada) As Integer

Código (vbnet) [Seleccionar]
    Public Function mostrarvehiculos(obj As Object) As Int32
muchas gracias por responder okik
pero me sigue mandando el error
Código (vbnet) [Seleccionar]
Public Function mostrarvehiculos(obj As VregistroEntrada) As Integer

        Dim Conn As New SqlConnection(conexion.Connectionstring)
        Dim eEntradavehiculo As VregistroEntrada = Nothing

        Dim Cmd As New SqlCommand
        Try
            Conn.Open()
            Cmd.CommandText = "Select IdEntraVehiculo,Placa,FechaHoraEntrada,Codigo From EntradaVehiculo Where Codigo = @Codigo"
            Cmd.CommandType = CommandType.Text
            Cmd.Connection = Conn
            Cmd.Parameters.Add("@Codigo", SqlDbType.Int).Value = obj.Codigo
            Dim DT As New SqlDataAdapter(Cmd)
            Dim TABLA As New DataTable
            DT.Fill(TABLA)
            eEntradavehiculo = New VregistroEntrada
            If TABLA.Rows.Count > 0 Then

                Dim row As DataRow = TABLA.Rows(0)
                eEntradavehiculo.Placa = If(CStr(row.IsNull(1)), "", row(1))
                eEntradavehiculo.FechaHoraEntrada = If(row.IsNull(2), Nothing, row(2))
                eEntradavehiculo.Codigo = CStr(row("Codigo"))

            End If

        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            If Conn.State = ConnectionState.Open Then
                Conn.Close()
                Conn.Dispose()
            End If
        End Try
        Return eEntradavehiculo
    End Function

en esta linea    Return eEntradavehiculo me dice que no se puede convertir en integer

capa entidad
Código (vbnet) [Seleccionar]
Public Class VregistroEntrada
    Public Property IdTicker As Integer
    Public Property Placa As String
    Public Property FechaHoraEntrada As DateTime
    Public Property Codigo As Integer

End Class

capa negocios
Public Function Mostrar(objmostrar As VregistroEntrada) As DataRow
        Dim OMostrar As New DaoInsertTicker
        Return OMostrar.mostrar(objmostrar)
    End Function




MOD: Imagene adaptada a las normas del foro.
#6
buenas tardes señores programadores si alguien me puede echar una por fa
estoy haciendo una aplicacion estacionamiento de vehiculos en capas vb.net y sql server
trata de llenar los datos de una consulta sql y llenar los textbox del formulario si pongo todo el codigo en el formulario funciona perfectamente entoces para hacerlo mas ordenado lo quise hacer en capas entoces tengo esta funcion
que se llama mostrarvehiculos esta en la capa datos
Código (vbnet) [Seleccionar]
Public Function mostrarvehiculos(obj As VregistroEntrada)

        Dim Conn As New SqlConnection(conexion.Connectionstring)
        Dim eEntradavehiculo As VregistroEntrada = Nothing

        Dim Cmd As New SqlCommand
        Try
            Conn.Open()
            Cmd.CommandText = "Select IdEntraVehiculo,Placa,FechaHoraEntrada,Codigo From EntradaVehiculo Where Codigo = @Codigo"
            Cmd.CommandType = CommandType.Text
            Cmd.Connection = Conn
            Cmd.Parameters.Add("@Codigo", SqlDbType.Int).Value = obj.Codigo
            Dim DT As New SqlDataAdapter(Cmd)
            Dim TABLA As New DataTable
            DT.Fill(TABLA)
            eEntradavehiculo = New VregistroEntrada
            If TABLA.Rows.Count > 0 Then

                Dim row As DataRow = TABLA.Rows(0)
                eEntradavehiculo.Placa = If(CStr(row.IsNull(1)), "", row(1))
                eEntradavehiculo.FechaHoraEntrada = If(row.IsNull(2), Nothing, row(2))
                eEntradavehiculo.Codigo = CStr(row("Codigo"))

            End If

        Catch ex As Exception
            Throw New Exception(ex.Message)
        Finally
            If Conn.State = ConnectionState.Open Then
                Conn.Close()
                Conn.Dispose()
            End If
        End Try
        Return eEntradavehiculo
    End Function

y en la capa entidad me manda un error dice que no puedo convertirlo a integer

Código (vbnet) [Seleccionar]
Function mostrarvehiculos(ByVal obj As Capa_Entidad.VregistroEntrada)

        Dim OMostrar As New DaoInsertTicker

        Dim Result As Integer = 0
        Try
            Result = Convert.ToInt32(OMostrar.mostrar(obj))
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
        Return Result
    End Function

tratao de llamar a mi funcion pero me marca error (  Result = Convert.ToInt32(OMostrar.mostrar(obj))
no se puede convertir a inter

tengo el formulario mostrar la informacion segun la consulta de la funcion pero no se como llamarlo
#7
muchas gracias por responder Lekin
lo que necesito es algo asi
como podria hacer una funcion o algoritmo para contraseñas para mi aplicacion

lo que pretendo es generar un control que automáticamente impida la ejecución de mi  aplicación si no se cumple una condición relacionada con el mes actual.
por ejemplo



Para adquirir la licencia mensual, el cliente deberá contarme  y abonar la cuota correspondiente a dicha licencia mensual. Cumplida esta condición, le envíos al cliente un archivo (MiControl.ini, por ejemplo) en el que tengas cifrado el ID del mismo, la fecha de inicio y la de final de la licencia. Este archivo lo copiará en determinada carpeta (por ejemplo, la misma en que tenga ubicada tu aplicación).
En tu aplicación deberás tener preparada una serie de comprobaciones, que se ejecutarán en el arranque del proyecto:

- Comprobar si existe el archivo MiControl.ini.

1a.- Si existe, comprueba si el ID del cliente coincide con el que le asigne cuando  instalale la aplicacion; si es positiva, sustituye los campos "FecIni" y "FecFin" de la tabla de control por los que tienes en MiControl.ini. Los dejos cifrados para evitar falsas actualizaciones. A continuación borrar el archivo MiControl.ini. Si no coincide el ID.

2a.- Si no existe MiControl.ini, simplemente comprueba si al descifrar "FecIni" y "FecFin" se cumple la condición de límites de fechas; en caso de que se haya superado la fecha final, se presenta el correspondiente mensaje de que precisa ampliar el período de licencia, y se termine  la aplicación.

#8
buenos dias amigos
del foro si aguiel tiene una idea como crear contraseñas mensuales para proteger mi aplicacion estoy desarrollando una aplicacion en visual studio 2010 slq express como podria tener una licencia mensual de la aplicacion al tratar de abrirla al pricipio de cada mes .por fa
#9
Cita de: Eleкtro en  6 Febrero 2016, 11:43 AM
Los dos ejemplos que puse son funcionales, quiero decir que solo es necesario copiar el código, pegarlo en la class principal (o donde sea), y compilarlo para testearlo. ¿Qué es lo que no entendiste para poder correrlo?.




Entonces el algoritmo que puse debería trabajar en base a 75 minutos, no 60.

En la condición del Select Case y la condicional del Case Else debes reemplazar los minuos con los que se trabajan, simplemente reemplaza el valor 60.0R por 74.99R ( 01:14:59 hrs. ).

Una vez realizada esa modificación, este es el resultado de ejecución:
PD: La idea es que en base a ese ejemplo lo personalices por ti mismo para que devuelva los resultados deseados a tu criterio...

Saludos

muchas gracias por tu paciencia Eleкtro

Time In  : 12:00
Time Out : 14:00
Time Diff: 2h:0m
Payment  : $1,100
todavia me sale el mismo error de cobrar $1,100 siendo que son dos horas debería cobrar

12:00  salida 14:00 $ 1,000 y hice las modificacion que dijiste  




Cita de: Lekim en  7 Febrero 2016, 08:15 AM(es una versión muy simplificada de la función CalculateMoney)

Sl2s

He revisado tu código Lekim
muchas por contestar y por tu tiempo

funciona pero tiene un error si la entrada es  a las 12:00 y sale 14:15 $ 1250
deberia cobrar 1150




            [NOTA DEL MODERADOR]                   
No hagas doble post, utiliza el botón "MODIFICAR". 

#10
Cita de: Eleкtro en  5 Febrero 2016, 03:44 AM
Para calcular correctamente la diferencia completa entre dos intervalos de tiempo/fecha siempre se deben usar las propiedades que empiezan con el prefijo Total****, por que las propiedades que NO empiezan por Total**** lo que hacen es devolver el valor relativo al día (TimeSpan.Days), y esto causaría la obtención de valores incorrectos si intentasemos evaluar lapsos de más de 24 horas.

Esto es un ejemplo, fíjate en la diferencia:
Código (vbnet) [Seleccionar]
Dim timeDiff As TimeSpan = (TimeSpan.FromDays(2) - TimeSpan.FromDays(1)) ' 1 día de diferencia inicial.

MsgBox(timeDiff.Hours)                                 ' Valor:  "0", puesto que es la hora Cero del dia Uno.
MsgBox(timeDiff.Add(TimeSpan.FromHours(1)).Hours)      ' Valor:  "1", puesto que es la hora Uno del dia Uno.
MsgBox(timeDiff.TotalHours)                            ' Valor: "24", puesto que hay 24 horas de diferencia entre día Uno y día Dos.
MsgBox(timeDiff.Add(TimeSpan.FromHours(1)).TotalHours) ' Valor: "25", puesto que le añadí 1 hora a las 24 horas de diferencia.


...Esto lo comento por tener en cuenta el supuesto caso en el que el cliente estacionase su vehículo durante más de un día.








Teniendo esta Class para idear y personalizar la lógica de tu algoritmo:
Código (vbnet) [Seleccionar]
Public NotInheritable Class DateUtils

   ''' <summary>
   ''' Prevents a default instance of the <see cref="DateUtils"/> class from being created.
   ''' </summary>
   <DebuggerNonUserCode>
   Private Sub New()
   End Sub

   <DebuggerStepThrough>
   Public Shared Function CalculateMoney(ByVal timeIn As TimeSpan, ByVal timeOut As TimeSpan,
                                         Optional ByVal x1HourMoney As Double = 500.0F,
                                         Optional ByVal x15MinMoneyAfter1Hour As Double = 150.0F) As Double

       Dim timeDiff As TimeSpan = (timeOut - timeIn)

       Select Case (timeDiff.TotalMinutes)

           Case Is <= 0.0R
               Return 0.0R

           Case Is <= 60.0R
               Return (x1HourMoney)

           Case Else
               Dim fractions As Double = Math.Ceiling((timeDiff.TotalMinutes - 60.0R) / 15.0R)
               Dim supplement As Double = (fractions * x15MinMoneyAfter1Hour)
               Return (x1HourMoney + supplement)

       End Select

   End Function

   <DebuggerStepThrough>
   Public Shared Function CalculateMoney(ByVal dateIn As Date, ByVal dateOut As Date,
                                         Optional ByVal x1HourMoney As Double = 500.0F,
                                         Optional ByVal x15MinMoneyAfter1Hour As Double = 150.0F) As Double

       Return DateUtils.CalculateMoney(TimeSpan.FromTicks(dateIn.Ticks), TimeSpan.FromTicks(dateOut.Ticks), x1HourMoney, x15MinMoneyAfter1Hour)

   End Function

End Class


Puedes utilizarlo de las siguientes maneras (esto son solo unos ejemplos para demostrar los resultados obtenidos)
Código (vbnet) [Seleccionar]
Public NotInheritable Class Form1 : Inherits Form

   Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _
   Handles MyBase.Shown

       Dim datePairs As New List(Of KeyValuePair(Of Date, Date)) From
           {
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("12:01")),
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("12:15")),
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:00")),
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:01")),
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:15")),
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:30")),
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("13:31")),
               New KeyValuePair(Of Date, Date)(Date.Parse("12:00"), Date.Parse("14:00"))
           }

       For Each datePair As KeyValuePair(Of Date, Date) In datePairs

           Dim sb As New StringBuilder
           With sb
               .AppendLine(String.Format("Time In  : {0}", datePair.Key.ToString("hh\:mm")))
               .AppendLine(String.Format("Time Out : {0}", datePair.Value.ToString("hh\:mm")))
               .AppendLine(String.Format("Time Diff: {0}", (datePair.Value - datePair.Key).ToString("%h\h\:%m\m")))
               .AppendLine(String.Format(CultureInfo.GetCultureInfo("en-US").NumberFormat,
                                         "Payment  : ${0:n0}", DateUtils.CalculateMoney(datePair.Key, datePair.Value)))
           End With

           Console.WriteLine(sb.ToString)

       Next

   End Sub

End Class


Código (vbnet) [Seleccionar]
   Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _
   Handles MyBase.Shown

       Dim timePairs As New List(Of KeyValuePair(Of TimeSpan, TimeSpan)) From
           {
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(12.02)),
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(12.25)),
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.0)),
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.02)),
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.25)),
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.5)),
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(13.52)),
               New KeyValuePair(Of TimeSpan, TimeSpan)(TimeSpan.FromHours(12.0), TimeSpan.FromHours(14.0))
           }

       For Each timePair As KeyValuePair(Of TimeSpan, TimeSpan) In timePairs

           Dim sb As New StringBuilder
           With sb
               .AppendLine(String.Format("Time In  : {0}", timePair.Key.ToString("hh\:mm")))
               .AppendLine(String.Format("Time Out : {0}", timePair.Value.ToString("hh\:mm")))
               .AppendLine(String.Format("Time Diff: {0}", (timePair.Value - timePair.Key).ToString("%h\h\:%m\m")))
               .AppendLine(String.Format(CultureInfo.GetCultureInfo("en-US").NumberFormat,
                                         "Payment  : ${0:n0}", DateUtils.CalculateMoney(timePair.Key, timePair.Value)))
           End With

           Console.WriteLine(sb.ToString)

       Next

   End Sub

End Class


Resultado de ejecución:

Saludos


Muchas gracias por responder Eleкtro se nota que te manejas en el tema   pero no  entiendo tu codigo para hacerlo correr vb net  podrias explicarme por favor soy novato
me gusto eso de las 24horas como dices tu si el auto esta estacionado mas tiempo genial la idea

esta viendo las salida de tu ejemplo

por ejemplo 12:00 salio 13:01 eso es una hora y un minutos tu resultado sale $650
debiria ser $500
pero  son 12:00 salio 13:15 eso es una hora y quince minutos deberia cobra $650