VB.Net - Windows Mobile - Leer coordenadas GPS

Buenas, os voy a poner los pasos para leer las coordenadas del GPS.

Las coordenadas se obtienen mediante el puerto COM, que tenga configurado el PDA para acceder al GPS. En mi caso es el COM4, eso lo mirais en la configuración del PDA. (Si no lo encontrais , id probando :D )

Bueno, al lio!

En el form añadir dos labels, txtLong y txtLat. Un botón llamado btnEmp. Además añadir un control SerialPort y un Timer.

Ahora pasamos a codificar.

Primero añadimos las librerias:

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel

Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.IO.Ports

Creamos las variables:
#Region "Variables"
Public Latitud As String
Public Longitud As String
#End Region
Ahora vamos a crear el constructor.

#Region "Constructor"
Public Sub New()
' Esto es necesario
InitializeComponent()
' Aqui intentamos abri el puerto
Try
SerialPort1.PortName = "COM4"
SerialPort1.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
Timer1.Enabled = False
btnEmp.Text = "Empezar"
Return
End Try
End Sub
#End Region
Creamos el código del botón, se limitara a apagar o encender el Timer:

Private Sub btnEmp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEmp.Click
'Comprobamos el estado del timer y lo invertimos.
If Timer1.Enabled = True Then
Timer1.Enabled = False
Else
Timer1.Enabled = True
End If
If btnEmp.Text = "Empezar" Then
btnEmp.Text = "Parar"
Else
btnEmp.Text = "Empezar"
End If
End Sub
Bueno ya nos queda configurar el Timer. Por el puerto Com entran muchas lineas de datos llamadas NEMA.

El código comprueba en primer luga, si el puerto serie está abierto , si lo es, lee la salida de datos en una cadena. Cada linea se separa con el simbolo del dolar $ . La cadena que nos interes, comienza por "GPGGA"; este subcadena contiene la latitud y la longitud, además de más información, separada por comas.

Este es el código:

Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

If SerialPort1.IsOpen Then
'En esta variable, insertamos todo lo leido del Puerto.
Dim datos As String = SerialPort1.ReadExisting()
'Aqui creamos las diferentes lineas, basandonos en el simbolo del dolar
Dim strArr() As String = datos.Split("$")
Dim i As Integer = 0

If strArr.Length > 1 Then
Try
For i = 0 To strArr.Length
'Ahora obtenemos los datos, separados por las comas.
Dim strTemp As String = strArr(i)
Dim lineArr() As String = strTemp.Split(",")

'Si la linea es GPGGA, cojemos los bloques de cadena 2 y 4 (latidud y longitud) y pasamos los datos obtenidos a coordenadas UTM.
If
(lineArr(0) = "GPGGA") Then
Try
Dim dLat As Decimal
Dim dLon As Decimal

dLat = Convert.ToDecimal(lineArr(2))
dLat = dLat / 100
Dim lat() As String = dLat.ToString().Split(".")
Latitud = lat(0).ToString() + "." + ((Convert.ToDouble(lat(1)) / 60)).ToString("#####")
txtLat.Text = Latitud

dLon = Convert.ToDecimal(lineArr(4))
dLon = dLon / 100
Dim lon() As String = dLon.ToString().Split(".")
Longitud = lon(0).ToString() + "." + ((Convert.ToDouble(lon(1)) / 60)).ToString("#####")
txtLong.Text = Longitud

Catch
' Si no podemos leer el GPS
'txtLat.Text = "No puedo leer GPS "
'txtLong.Text = "No puedo leer GPS"
End Try
End If
Next
Catch
'No hacemos nada
End Try
End If
Else
txtLat.Text = "Puerto COM Cerrado"
txtLong.Text = "Puerto COM Cerrado"
End If

End Sub



Ya podeís leer las coordenadas de vuestro GPS!.

Windows Mobile - VB.Net / C++ | Crear apliación de SQL Server

Sacado del Msdn

1-Crear una aplicación de SQL Server para dispositivos inteligentes


En esta sección, aprenderá a crear un proyecto para dispositivos inteligentes en Microsoft Visual Studio 2005, agregar funcionalidad de Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) al proyecto y, después, crear una base de datos de SQL Server Mobile usando el espacio de nombres System.Data.SqlServerCe. En la .NET Framework Reference Documentation hay temas de referencia para el espacio de nombres System.Data.SqlServerCe.
Crear un proyecto con dispositivos inteligentesCrear un proyecto con dispositivos inteligentes

Para crear una aplicación para dispositivos inteligentes, primero debe crear el proyecto en Visual Studio 2005.
Para crear un proyecto para dispositivos inteligentes

1. En Visual Studio 2005, en el menú Archivo, seleccione Nuevo y, a continuación, seleccione Proyecto.
2. En la lista Tipos de proyecto del cuadro de diálogo Nuevo proyecto, expanda el lenguaje de programación que desee usar y, a continuación, seleccione Dispositivo inteligente.
3. En la lista Plantillas, seleccione el tipo de proyecto que desee crear. Por ejemplo, si va a programar una aplicación para Pocket PC 2003, seleccione Aplicación para Pocket PC 2003.
4. Escriba un nombre y ubicación para el proyecto y, a continuación, haga clic en Aceptar.

Visual Studio crea un nuevo proyecto y muestra el formulario principal (Form1). La pantalla será parecida al sistema operativo que elija.

Agregar SQLServer Mobile al proyectoAgregar SQLServer Mobile al proyecto

El siguiente paso para crear una aplicación compatible con SQL Server Mobile consiste en agregar una referencia al ensamblado de SQL Server Mobile.
Para agregar una referencia a SQL Server Mobile

1. En Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Referencias y seleccione Agregar referencia.
Nota: Si la carpeta Referencias no aparece en el Explorador de soluciones, haga clic en Mostrar todos los archivos en la parte superior del Explorador de soluciones.

2. En la lista de ensamblados de .NET, seleccione System.Data.SqlServerCe y, a continuación, haga clic en Aceptar. Si System.Data.SqlServerCe no aparece, siga estos pasos:
2.1. Haga clic en Examinar.
2.2. Busque el siguiente directorio:
C:\Archivos de programa\Microsoft Visual Studio 8\Common7\IDE
2.3. Seleccione System.Data.SqlServerCe.dll y, a continuación, haga clic en Aceptar.

La lista de referencias del Explorador de soluciones incluye ahora System.Data.SqlServerCe y su proyecto puede utilizar este ensamblado.

3. En Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en Form1.cs o Form1.vb y seleccione Ver código.

4.
En la parte superior del código para el formulario, agregue una directiva para utilizar el espacio de nombres System.Data.SqlServerCe:

C#

using System.Data.SqlServerCe;

Visual Basic
Imports System.Data.SqlServerCe


Usar los objetos de SQLServer MobileUsar los objetos de SQLServer Mobile

Después de agregar el espacio de nombres System.Data.SqlServerCe, puede empezar a usar código en él mediante los objetos de SQL Server Mobile. En el siguiente ejemplo de código se muestra cómo usar el objeto Engine para crear un archivo de base de datos de SQL Server Mobile.

C#
using System.Xml;
using System.Data;
using System.Data.SqlServerCe;
using System.Data.Common;
using System.Windows.Forms;
using System.IO;

public class NETCF_SqlCeEngine
{
public void CreateDB()
{
File.Delete("Test.sdf");
string connString = "Data Source='Test.sdf'; LCID=1033; Password=\"s$;2'!dS64\"; Encrypt = TRUE;";
SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();
}
}

Visual Basic

Imports System
Imports System.Xml
Imports System.Data
Imports System.Data.SqlServerCe
Imports System.Data.Common
Imports System.Windows.Forms
Imports System.IO

Public Class NETCF_SqlCeEngine

Public Sub CreateDB()
File.Delete("Test.sdf")
Dim connString As String = "Data Source='Test.sdf'; LCID=1033; Password=""s$;2'!dS64""; Encrypt = TRUE;"
Dim engine As New SqlCeEngine(connString)
engine.CreateDatabase()
End Sub
End Class


2-Un ejemplo sacado del MSDN

http://msdn2.microsoft.com/es-es/library/ms174006.aspx

3-Usar el método CreateDatabase

El método CreateDatabase permite crear una nueva base de datos de SQL Server 2005 Mobile Edition (SQL Server Mobile) en el entorno de desarrollo Microsoft Visual Studio .NET.
EjemplosEjemplos

El código siguiente muestra cómo crear un nuevo objeto SqlCeEngine y luego llamar el método CreateDatabase para crear una nueva base de datos de SQL Server Mobile. En este ejemplo, se utiliza un objeto System.IO.File para comprobar si el archivo de base de datos existe. Si existe, se elimina la base de datos. A continuación, se crea una nueva base de datos con el método CreateDatabase.

C#
if (File.Exists("Test.sdf"))
File.Delete("Test.sdf");

string connStr = "Data Source = Test.sdf; Password = ;";

SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();
Visual Basic
If File.Exists("Test.sdf") Then
File.Delete("Test.sdf")
End If
Dim connStr As String = "Data Source = Test.sdf; Password = ;"

Dim engine As New SqlCeEngine(connStr)
engine.CreateDatabase()
engine.Dispose()

Visual Basic - Extraer el codigo fuente de una Web

Para extraer el codigo fuente de una Web, usaremos el control Inet.

Para usar el control inet, añadimos el control Microsoft Internet Transfer Control.

Y asi extraeremos el codigo:


Dim Datos As String

Datos = Inet1.OpenURL("http://programaciontotal.blogspot.com")
Ahora la variable datos, contendrá el codigo fuente de la página.

BlackBerry - Pasar al Connector los datos del APN

Para usar los datos de la Apn en el momento de la conexión, sin tener que configurarlo en la Blackberry, usa este codigo en la conexión.

conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=TUAPN;tunnelauthusername=USUARIO;tunnelauthpassword=CONTRASEÑA");
Esto es un ejemplo de como seria con Vodafone:

conn = (HttpConnection)Connector.open(Url+";deviceside=true;apn=ac.vodafone.es;tunnelauthusername=vodafone;tunnelauthpassword=vodafone");

Visual Basic - Pasar un Recordset a Excel

Esto es una función, que le pasais, un Recorset Ado, un Spreadsheet (ahora lo defino), una Barra de progreso y un Label (para mostrar las cantidades) y pasara todo el recorset a un Excel

Spreadsheet es un control, es un libro Excel en si. Para utilizarlo, en componentes, añadis Microsoft Office Web Components. Os aparecera una serie de controles de Office, pues agregais al Formulario el de Excel.

¡Pues no necesitais mas! Aqui esta la función


Function RellenaExcel(Rs As ADODB.Recordset, ByRef Excel As Spreadsheet, ByRef Barra As ProgressBar, MostrarCantidades As Label) As Boolean

Dim Max As Integer
Dim Fila As Integer


Barra.Min = 0
Barra.Value = 0
If Rs.RecordCount <> 0 Then
Barra.Max = Rs.RecordCount
MostrarCantidades.Caption = "0 / " + Str(Barra.Max)
Else
MsgBox "El resultado de la consulta no contiene datos.", vbExclamation
Exit Function
End If
Max = Rs.Fields.Count - 1

For i = 0 To Max
Excel.ActiveSheet.Cells(1, i + 1).Value = Rs(i).Name
Next i


Fila = 2
Barra.Value = 1
MostrarCantidades.Caption = "1 / " + Str(Barra.Max)

While Not Rs.EOF

For i = 0 To Max
Excel.ActiveSheet.Cells(Fila, i + 1).Value = Rs(i).Value
Next i

Barra.Value = Fila - 1
DoEvents
MostrarCantidades.Caption = Str(Barra.Value) + " / " + Str(Barra.Max)
Fila = Fila + 1
Rs.MoveNext

Wend


With Excel.ActiveSheet.Range(Excel.Cells(1, 1), Excel.ActiveSheet.Cells(1, Max + 1))
.Font.Bold = True
.Font.Size = 10
.Font.Name = "Arial"
.Font.Color = vbWhite
'.Borders.Color = vbGreen
.Interior.Color = RGB(0, 0, 128)
.Borders.Color = RGB(0, 0, 0)

End With
With Excel.ActiveSheet.Range(Excel.Cells(2, 1), Excel.ActiveSheet.Cells(Fila - 1, Max + 1)).Font
.Size = 9
'.Bold = True
.Name = "Arial"
End With

Set rango = Excel.Worksheets("Hoja1").Range("A1:BV" + Trim(Fila + 1))
rango.Columns.AutoFit

RellenaExcel = True



End Function

Visual Basic - Conectar con Base de Datos Acces

Lo primero que hay que hacer es añadir la referencia Microsoft ADO.

Ahora, conectamos con las base de datos.

Set BaseDatos = Workspaces(0).OpenDatabase("RutadelaBD\bd.mdb", False, False)

Cuando conectamos, abrimos un recorset con la consulta que queremos realizar.

SQL = "SELECT * FROM Clientes"

Set Rs = BaseDatos.OpenRecordset(SQL, dbOpenSnapshot)

Luego imprimimos los resultados

Msgbox "Nombre: "+ Rs!Nombre

Si la consulta devuelve mas de una fila, para pasar de un registro a otro utilizamos, Rs.MoveNext

Un ejemplo sería:

while not Rs.EOF
combo1.addItem Rs!Nombre
Rs.MoveNext
end while

El while not Rs.EOF significa, Mientras no sea el final del RecordSet

BlackBerry - Pin, número de télefono e IMEI.

Para capturar el Pin y el teléfono (el teléfono que captura es el que esta configurado en la BlackBerry,(opciones avanzadas -> SIM)) usamos las clases DeviceInfo y Phone

String Pin = (Integer.toString(net.rim.device.api.system.DeviceInfo
.getDeviceId(),16)).toUpperCase();

String Tel = "" + net.rim.blackberry.api.phone.Phone
.getDevicePhoneNumber(fals
e)
;

String imei = new String(net.rim.device.api.system.GPRSInfo.imeiToString
(net.rim.device.api.system.GPRSInfo.getIMEI()));;

Como veis, para poder capturar el Pin correctamente, hemos tenido que pasar la información que recibimos a Hexadecimal.

BlackBerry - Crear icono para una Web

Aqui te pongo el código para crear un icono de acceso directo a una Web.



import net.rim.device.api.ui.UiApplication;
import net.rim.blackberry.api.browser.*;

public class IconoWeb extends UiApplication {

public IconoWeb() {
BrowserSession visita=Browser.getDefaultSession();
visita.displayPage("http://programaciontotal.blogspot.com");
visita.showBrowser();
System.exit(0);
}

public static void main(String[] args) {
IconoWeb iw = new IconoWeb();
iw.enterEventDispatcher();

}
}

Por último, en las propiedades del proyecto, le asignais un icono, y listo!

* Esta aplicación debe ser firmada con las Secure Apis de Rim