Você está na página 1de 5

Reporte Segunda Fase

AVU
Reporte No. 2

http://avuproject.wordpress.com Página 1
Reporte Segunda Fase

SEGUDA FASE:

Captura de Datos

Esta fase se refiere a colocar el dispositivo ultrasónico en la estructura de la Fase I. También se


programara el PIC para la conexión de dicho dispositivo, la captura de datos y el envió de estos al PC.
En esta fase también se interpretaran los datos decidiendo si la interpretación se realizara en el
dispositivo PIC o en la PC, ya q no sabemos si la cantidad de cálculos necesarios para esta
interpretación tendrán el tamaño necesario para caber dentro del dispositivo PIC.

Tecnología Utilizada

• Software: El Front-End que fue programado para esta fase fue realizado en C# .Net de la suite
.et 2008 Express Edition, en el cual se interpretan los datos y son almacenados.

• Hardware: El hardware principal en esta fase es la comunicación establecida por el cable


“USB-Serial” ya que por el se envían y reciben datos desde el chip configurado en la primera
fase.

El Programa:

http://avuproject.wordpress.com Página 2
Reporte Segunda Fase

El Código:

//Evento si hay dato en el puerto.


private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.Invoke(new EventHandler(DoUpdate)); //invoca al evento DoUpdate.
}

//receptor del evento y concatena a la variable salida.


private void DoUpdate(object s, EventArgs e)
{ string aux;
string tiempo, fi, theta;
double x, y, z,d1,d2;
int i = 0;

if (sp.BytesToRead >= 11 ) //Si es mayor que 11 el número de bytes que los lea.
{
try
{
Entrada = sp.ReadExisting(); //lee los bytes existentes en el buffer del puerto serial.
}
catch (System.Exception ex)
{
baudRatelLabel = ex.Message;
}
sp.DiscardInBuffer(); //libera el buffer, para no volver a leer los mismos datos.

salida = salida +Entrada; // Concatenacion a la variable Salida.


textBox1.Text = Entrada.ToString(); //Muestra los datos leídos en el combo box.
}
}

http://avuproject.wordpress.com Página 3
Reporte Segunda Fase

//Envía cadena de inicio al puerto serial, para ser leída por el PIC.
private void Enviar(string send)
{
int cant = send.Length;
int i;
char[] cant1;
cant1 = new Char[send.Length];
cant1 = send.ToCharArray(); //Convierte a un vector char la cadena send.

try
{
sp.Write(cant1, 0, send.Length); //Se envía el vector char cant1, desde el índice 0 hasta la
longitud
sp.Write(send); //envía send.

}
catch (System.Exception ex)
{
baudRatelLabel = ex.Message;
}
}

//Interpreta los datos y los convierte en a las coordenadas X, Y y Z.


private void Parser()
{
double Distancia=0;
double theta=0;
double fi=0;
double x, y, z,d1;
int i=0;
int nopol = 0;
int novert = 0;
string aux="";
int j=1;
string parte;
string parte2="";
while (i < salida.Length)
{
parte=salida.Substring(i, 1);
if (parte.CompareTo(" ") == 0)
{

http://avuproject.wordpress.com Página 4
Reporte Segunda Fase

if (j == 1){
Distancia = Double.Parse(parte2) /10000*343 ; //Convierte el tiempo en distancia,
porque la velocidad del sonido es constante. A 20° en el aire es 343Metros/segundo.
}

if (j == 2) {
theta = (Double.Parse(parte2)-65); //Calcula el ángulo.
if (theta > 90) { theta = 180 - theta; }
}
if (j == 3){
fi = (200-Double.Parse(parte2));
if (fi> 90) { fi = 180 - fi; }
z = Distancia * Math.Sin(((90 - fi) * (Math.PI/2)) / 90); // Genera el valor de Z.
d1 = Distancia * Math.Sin((fi * (Math.PI / 2)) / 90);
x = d1 * Math.Sin(theta * (Math.PI / 2) / 90); // Genera el valor de X.
y = d1 * Math.Sin(((90 - theta) * (Math.PI / 2)) / 90); // Genera el valor de Y.

//Extra para la fase 2:


aux = "f"+nopol.ToString(); //Define una cara, en blender
if (novert % 4 == 0) {
Salida = Salida + aux + "=NMesh.Face() \n"; //Asigna una cara, en Blender
}

Salida = Salida + "v= NMesh.Vert(" + x.ToString() + "," + y.ToString() + "," +


z.ToString() + ")\n"; //Crea un nuevo vértice llamado “V”.
Salida = Salida + "poly.verts.append(v)\n"; //Agrega el código del vértice al archivo de
salida.
Salida = Salida + aux + ".v.append(poly.verts[" + novert + "])\n";
novert++;
//Cada cara puede tener de 4 a 5 vertices. Y se crea una nueva cara.
if (novert % 4 == 0) { Salida = Salida + "poly.faces.append(" + aux + ")\n\n"; nopol++;
}
j = 0;
}
j++;

parte2 = "";
}
else
{
parte2 = parte2 + parte;
}
i++;
}
http://avuproject.wordpress.com Página 5

Você também pode gostar