24/9/2007 22:29
El Bruno
[VS2005] Nanocoptero + VB.Net + InfraRed + Mobile = Enfermeras poco contentas
Buenas,
las enfermeras siguen poco contentas conmigo; un hospital es un lugar donde no se puede hacer mucho ruido (casi nada creo); y eso crea un ambiente bastante aburrido. Para matar este aburrimiento decidí traer uno de los últimos juguetes que me regalo mi chica: el Nanocóptero (además me han prohibido publicar los videos del nanocóptero en una persecución cuerpo a cuerpo con uno de mis gatos)
Pero bueno, unas fotos en la pieza del hospital puedo mostrar:
Bases de un juguete complejo
Para aquellas personas como yo que no tenemos mucho mundo arriba, los secretos de la aerodinámica son algo complejos. Gracias a mi padre que es físico me entero que en realidad la base es que:
La fuerza vertical que eleve un avión o helicóptero tendrá que ser igual o mayor que la fuerza de su peso.
En el Nanocóptero el paso del aire para crear sustentación se consigue impulsando las alas circularmente, es decir creando un fuerza vertical para abajo. Además se utiliza el rotor de cola para dar estabilidad horizontal al mismo. Con esta base y después de jugar un rato, pude controlar muy precariamente los movimientos del nanocóptero.
Introducing Mobile
Y aquí comenzó el desafío, aquellos que sean detallistas habrán notado que además del nanocóptero, mi Dell Latitude D620 me hacía compania; eso significa Visual Studio, acceso a internet y ganas de probar algo nuevo.
Como el control del nanocóptero se comunica con el mismo a través de infrarrojos, y mi PDA tiene un control de infrarrojos, supuse que tal vez el .Net Compact Framework me podía ayudar a realizar algo tan simple como un pequeño soft para controlar el nanocoptero desde la PDA.
Dentro de MSDN podemos encontrar mucha información al respecto, por ejemplo la librería de referencia central: Infrared Connections.
Sin embargo después de tirar algunas líneas las enfermeras me quitaron el nanocóptero descubrí que la librería incluida en el .Net Compact Framework solo soporta el estandar IrDA (a seguir leyendo, ahora cambiamos desde MSDN a http://www.irda.org/), y parece que el nanocóptero como viene de China tiene su propia idiosincracia.
Sin embargo he dejado preparados las siguientes líneas para completar cuando me respondan los fabricantes del nanocóptero con las especificaciones técnicas del mismo:
1 Imports System.Net
2 Imports System.Net.IrDAEndPoint
3 Imports System.Net.Sockets
4 Imports System.IO
5
6 Public Class Form1
7 Dim irClient As IrDAClient
8 Dim irServiceName As String = "IrDANanocopteroTest"
9 Dim irDevices() As IrDADeviceInfo
10 Dim buffersize As Integer = 256
11
12 ''' <summary>
13 ''' Moves the nanocopter.
14 ''' </summary>
15 Public Sub MoveNanocopter()
16 irClient = New IrDAClient()
17
18 ' coneccion al IrDA
19 If Not GetInfraredDevice() Then Exit Sub
20
21 irClient.GetStream()
22
23 ' stream para enviar datos
24 Dim fs As Stream
25 fs = New MemoryStream(1024)
26
27 ' obtener un stream para la comunicacion ...
28 Dim baseStream As Stream = irClient.GetStream()
29
30 ' COMPLETE ...
31
32 ' dispose
33 fs.Close()
34 baseStream.Close()
35 irClient.Close()
36
37 End Sub
38
39 ''' <summary>
40 ''' Gets the infrared device.
41 ''' </summary>
42 ''' <returns>True if the connection was successful</returns>
43 Private Function GetInfraredDevice() As Boolean
44 Dim connected As Boolean = True
45
46 ' obtiene el dispositivo infrarrojo
47 irDevices = irClient.DiscoverDevices(1)
48
49 ' valida si se pudo conectar al dispositivo de infrarojos
50 If irDevices.Length = 0 Then
51 MsgBox("No remote infrared devices found.")
52 connected = False
53 End If
54 Try
55 Dim irEndP As New IrDAEndPoint(irDevices(0).DeviceID, irServiceName)
56 Dim irListen As New IrDAListener(irEndP)
57 irListen.Start()
58 irClient = irListen.AcceptIrDAClient()
59 MsgBox("Nanocoptero conectado !!!")
60
61 Catch ex As Exception
62 Dim msg As String = String.Format("No se pudo conectar al dispositivo: {0}", ex.ToString())
63 MsgBox(msg)
64 connected = False
65 End Try
66
67 ' retorna el estado de la conexion
68 Return connected
69 End Function
70
71 End Class
Pues bien, la persona que dijo la frase: "nunca subestimes el poder del aburrimiento" ... tenia mucha pero mucha razón.
(creo que fueron Ricardo Varela y Chema Alonso en el CodeCamp del 2006)
Saludos @ Hospital
El Bruno
Crossposting from
ElBruno.com
Archivado en: Visual Studio,Lego Mindstorms / Microsoft Robotics,VSTS
Comparte este post: