Usuario
.: Ayuda URGENTE puerto serie VISUAL BASIC 2010 (preferentemente) o VISUAL BASIC 06 :.

Debate general
-
.: Buen dia/tarde/noche
Trabajo en visual basic 2010 express (debido a que en el 06 no manejaba funciones trigonometricas inversas) y he estado trabajando en un programa que me pide una coordenada en X; Y, y Z como coordenadas, y estos parametros seran usados para calcular en la posicion y los movimientos de unos servomotores en un brazo robot, ya esa parte esta totalmente terminada, el problema es la comunicacion serial.... :.
.: Si la respuesta me la pueden dar en visual 06 por mi no hay problema, trabajo en ambos, pero en visual 06 no habia funciones inversas :.
.: Segun he leido, creas un 'buffer' en tipo byte y ya solo 'editas' el interior del buffer para saber que envias....aunque en lo personal no tengo ni la minima idea.... :.
.: Para sacar el pulso y demas, usare una servocontroladora, al inicio pide que se le envie un 255, posteriormente la posicion de mi servo (de 0 a 255 pues es el pulso que la tarjeta interpreta) y finalmente el servo a controlar (del 1 al 12) :.
.: He aqui mi codigo....y se los comento brevemente....
' el codigo se ejecuta apartir de que se hace click en un boton con el nombre de 'inicio'
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Parte 1 ................
'----------------------------------------------------------------
Dim l1 As Double
Dim l2 As Double
Dim l3 As Double
Dim d1 As Double
l1 = 16 ' eslabon 1
l2 = 12 ' eslabon 2
l3 = 3 ' eslabon 3 (alcance de la pinza)
d1 = 1 ' dist. de eslabon
'----------------------------------------------------------------
Dim y As Double
Dim x As Double
Dim z As Double
Dim q1 As Double
Dim q2 As Double
Dim q3 As Double
Dim q1a As Double
Dim q2a As Double
Dim q3a As Double
Dim a As Double
Dim b As Double
Dim q1f As Double ' q1f = q1 en radianes ;q1 sera en grados
Dim q3f As Double 'q3f falsp ^^
Dim q2f As Double
x = Val(TextBox1.Text) '* Math.PI / 180)
y = Val(TextBox2.Text) '* Math.PI / 180)
z = Val(TextBox3.Text) '* Math.PI / 180)
q1f = Math.Atan(y / x)
q1 = (Val(q1f * 180)) / Math.PI
q3f = Math.Acos((((x ^ 2) + (y ^ 2)) + ((z - d1) ^ 2)) / (2 * l3 * l2))
q3 = (Val(q3f * 180)) / Math.PI
a = Math.Atan((z - d1) / (Math.Sqrt((x ^ 2) + (y ^ 2))))
b = Math.Atan(l3 * Math.Sin(q3f)) / (l2 + l3 * Math.Cos(q3f))
q2f = a - b
q2 = (Val(q2f * 180)) / Math.PI
' regla de 3 si 0 - 0g (ó 180g=255) entonces cuantos grados es q1 q2 y q3?
'Valor del pulso
q1a = ((255 * q1) / 180)
q2a = ((255 * q2) / 180)
q3a = ((255 * q3) / 180)
'desplegando los valores
TextBox7.Text = q1
TextBox8.Text = q2
TextBox9.Text = q3
TextBox13.Text = q1a
TextBox14.Text = q2a
TextBox15.Text = q3a
'-------------------------------------------Parte 2; el mismo codigo pero con condiciones finales
Dim xn As Double
Dim yn As Double
Dim zn As Double
xn = Val(TextBox4.Text) '* Math.PI / 180)
yn = Val(TextBox5.Text) '* Math.PI / 180)
zn = Val(TextBox6.Text) '* Math.PI / 180)
Dim q1nf As Double
Dim q1n As Double
Dim q3nf As Double
Dim q3n As Double
Dim q2nf As Double
Dim q2n As Double
Dim an As Double
Dim bn As Double
q1nf = Math.Atan(yn / xn)
q1n = (Val(q1nf * 180)) / Math.PI
q3nf = Math.Acos((((xn ^ 2) + (yn ^ 2)) + ((zn - d1) ^ 2)) / (2 * l3 * l2))
q3n = (Val(q3nf * 180)) / Math.PI
an = Math.Atan((zn - d1) / (Math.Sqrt((xn ^ 2) + (yn ^ 2))))
bn = Math.Atan(l3 * Math.Sin(q3nf)) / (l2 + l3 * Math.Cos(q3nf))
q2nf = an - bn
q2n = (Val(q2nf * 180)) / Math.PI
'regla de 3 si 0 - 0g (ó 180g=255) entonces cuantos grados es q1 q2 y q3?
'Valor del pulso
Dim q1an As Double
Dim q2an As Double
Dim q3an As Double
q1an = ((255 * q1n) / 180)
q2an = ((255 * q2n) / 180)
q3an = ((255 * q3n) / 180)
TextBox10.Text = q1n
TextBox11.Text = q2n
TextBox12.Text = q3n
TextBox16.Text = q1an
TextBox17.Text = q2an
TextBox18.Text = q3an
' ------------------------------------------ enviando datos al puerto
' Dim p1 As Byte 'tiene q cambiar la variable tipo double a byte
' Dim p2 As Byte
'Dim p3 As Byte
'Dim p4 As Byte
'p1 = CByte(q1an)
'p2 = p1 'seran los dos servos base
' p3 = CByte(q2an)
' p4 = CByte(q3an)
Dim servobase(3) As Byte
servobase(0) = 255
servobase(1) = 1
servobase(2) = q1an
SerialPort1.Write(servobase, 0)
SerialPort1.Write(servobase, 1)
SerialPort1.Write(servobase, 2)
End Sub
End Class
.: He aqui mi pregunta, intento convertir mis valores en bytes, pero existen valores negativos, por ende, este no me enviara los valores, pero tengo esa duda, porq solamente falta enviar los valores que se nececitan, pero en verdad no se como iniciar el puerto, o el 'COM' etc
espero que puedan ayudarme hoy mismo 4/dic/11 :.
.: Saludos y gracias d antemano :.
.: Cualquier cosa pueden enviarmela a mi mail
avfaev_01@hotmail.com
o por este mismo post que seguire al cabo de estas horas :.
- Editado Erick_Lawiet domingo, 4 de diciembre de 2011 20:24