Mostrando entradas con la etiqueta C#. Mostrar todas las entradas
Mostrando entradas con la etiqueta C#. Mostrar todas las entradas

martes, 10 de abril de 2007

Leer datos de un puerto

Hola a todos. En esta entrada tratare de explicar, de forma muy simple, como realizar una lectura sobre un puerto COM en C#.
El metodo tendria como minimo las siguientes instrucciones:


SerialPort m_serialPort1 = new SerialPort(COM); //Puerto COM al que nos conectamos
m_serialPort1.ReadTimeout = 2000; //El timeout es esencial para parar la conexion pasado un tiempo. En este caso 2 segundos.
m_serialPort1.Open(); //Abrimos el puerto
try
{

lectura = m_serialPort1.ReadLine(); //Leemos una linea del puerto
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.Message.ToString());
}
try
{
m_serialPort1.Close();//Cerramos puerto
m_serialPort1.Dispose();//Liberamos recursos
}

miércoles, 21 de marzo de 2007

Acceder a un directorio a traves de nuestro programa para la PDA

Muchas veces queremos acceder a una foto u otro fichero que tenemos asociado a nuestro proyecto. Con la PDA no es tan simple como en el PC. El problema esta en obtener la dirección raíz de nuestro programa. A continuación os expongo un metodo para acceder a esta dirección y a partir de ahi a cualquier directorio de nuestro proyecto.


///
/// Metodo que obtiene el path en la pda para acceder a recursos
///

/// String correspondiente al path

private string GetAppPath()
{
System.Reflection.Module[] modules =

System.Reflection.Assembly.GetExecutingAssembly().GetModules();
string aPath = System.IO.Path.GetDirectoryName(modules[0].FullyQualifiedName);
if ((aPath != "") && (aPath[aPath.Length - 1] != '\\'))
aPath += '\\';
return aPath;
}


A partir de este método podemos ya acceder a nuestro directorio y a cualquier archivo a traves de una simple llamada.
GetAppPath()+"directorio/archivo";
Un saludo

martes, 27 de febrero de 2007

Recibir datos via http

Bueno continuado con la entrada que puse hace unos días os paso el código para recuperar datos de un envío mediante el protocolo http.


HttpWebResponse HttpWResponse;
//Comprobamos que no haya una conexion previa
if(null != HttpWResponse)
{
HttpWResponse.Close();
HttpWResponse = null;
}

//Recordar que la respuesta la tnemos que hacer sobre una conexion ya creada
//En la anterior entrada pudimos ver como se creaba
HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();


//Ahora leemos el envio.
StreamReader sr = new StreamReader(HttpWResponse.GetResponseStream(), Encoding.ASCII);
//Convertimos lo que obtenemos en String
string s = sr.ReadToEnd();
sr.Close();


Esto es basicamente lo necesario para obtener datos. Ya cuando me meta más en el tema pondré alguna que otra cosa más. Un saludo.

viernes, 23 de febrero de 2007

Conexion y consulta a base de datos en ACCESS

Hola a todos. Hoy en el trabajo estuve liado con las bases de datos. He hecho un método que accede a una base de datos en access y hacemos una simple consulta.

try
{

//Realizamos una conexion odbc (base de datos access)
OdbcConnection MyConnection = new OdbcConnection();

//Cadena de conexion. Esto es lo que hay que poner para acceder
//a una base de datos en access. Si teneis una base de datos en
//oracle o alguna otra plataforma solo tendreis que cambiar esto.
String cadenaConexion = "Driver={Microsoft Access Driver (*.mdb)};Dbq="+this.path+"NombreBaseDatos.mdb;Uid=;Pwd=;";
MyConnection.ConnectionString = cadenaConexion;
String consulta = "SELECT * FROM TABLA";

//Creamos un dataadapter donde depositaremos los resultados.
OdbcDataAdapter adaptador = new OdbcDataAdapter(consulta,MyConnection);

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataTable.Locale = System.Globalization.CultureInfo.InvariantCulture;

//Incluimos en el datatable lo que hemos obtenido de la consulta
adaptador.Fill(dataTable);
//El bindingSource es el que tenemos relacionado con la base de datos

bindingSource1.DataSource = dataTable;
//Por ultimo actulizamos el datagridview para ver los datos.
dataGridView1.DataSource = bindingSource1;
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace);
}


Bueno este método es muy sencillo y da muy buen resultado. Si teneis alguna duda comentadla. Un saludo.

miércoles, 21 de febrero de 2007

Envio datos por HTTP utilizando método POST

Muchas veces necesitamos enviar algun mensaje via http. El problema surge si el mensaje contiene espacios. El método de envío recomendado es el método POST. A continuación os pongo el codigo:


//Crea el request con la url que le especifiquemos
HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(this.url);

//Importante poner los credenciales sino no podremos realizar bien el envio
//Si nuestro servidor tiene credenciales tendremos que añadirle password y
//contraseña. Para eelo utilizamos el siguiente codigo:
//
//NetworkCredential myCred=new NetworkCredential("usuario", "password");
//CredentialCache MyCrendentialCache = new CredentialCache();
//MyCrendentialCache.Add(URL, "Basic", myCred);
//HttpWRequest.Credentials = MyCrendentialCache;


HttpWRequest.Credentials = CredentialCache.DefaultCredentials;
HttpWRequest.UserAgent = "EJEMPLO";
HttpWRequest.KeepAlive = true;
HttpWRequest.Headers.Set("Pragma", "no-cache");
//Le hemos puesto un timeout de 5 min

HttpWRequest.Timeout = 300000;
// El metodo que usaremos es el POST
HttpWRequest.Method = "POST";
// add the content type so we can handle form data
HttpWRequest.ContentType = "application/x-www-form-urlencoded";
//Pasamos a bytes el mensaje.Recordar que tenemos que poner antes el nombre del id

//que apuntara al mensaje enviado. En este caso hemos escogido param1.
byte[] PostData = System.Text.Encoding.ASCII.GetBytes("param1="+m);
HttpWRequest.ContentLength = PostData.Length;
Stream tempStream = HttpWRequest.GetRequestStream();
//Escribimos los datos
tempStream.Write(PostData, 0, PostData.Length);
tempStream.Close();


Como veis el método es bastante sencillo.

lunes, 19 de febrero de 2007

Calculo de área mediante productos cruzados

En algunas ocasiones es necesario calcular el área de un poligono. Esto resulta bastante sencillo si sabemos de que polígono se trata. En cambio si no se tiene el poligono predefinido, es decir, puede ser un triangulo, pentagono, etc; entonces utilizamo el metodo de productos cruzados. A continuación os expongo el código de dicho método:
p --> Es una lista de puntos que defnen el poligono


public float calculoAreaProductosCruzados(List p)
{
float area = 0;
Point p1, p2;
for (int i = 0; i < p.Count; i++)
{
if ((i + 1) == p.Count)
{
p1 = p[i];
p2 = p[0];
}
else
{
p1 = p[i];
p2 = p[i + 1];
}
area = area + ((p2.X * p1.Y) - (p1.X * p2.Y));
}
return Math.Abs(area / 2);
}

El metodo es bastante sencillo y da muy buen resultado.