TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: pitillo en 02 de Mayo de 2006, 16:31:17

Título: ayuda con el codigo de visual
Publicado por: pitillo en 02 de Mayo de 2006, 16:31:17
Hola buenas, os keria pedir una ayudita que estoy haciendo un programa en visual basic, le he metido un option(mi idea de meter el boton opcion es que si le pusas una variable se pone a uno y si no le pusas la variable se queda a cero). Es algo sencillo pero no se muy bien que codigo meterle porque le pulso al punto y no me hace nada, solo me deja el punto fijo y la variable no me la cambia.
Sabeis que me puede estar pasando? si alguien tiene alguna idea o algun ejemplo aver si me lo podrias mandar

Muchas gracias.
Título: Re: ayuda con el codigo de visual
Publicado por: Toph en 02 de Mayo de 2006, 19:53:12
Citar
Hola buenas, os keria pedir una ayudita que estoy haciendo un programa en visual basic, le he metido un option(mi idea de meter el boton opcion es que si le pusas una variable se pone a uno y si no le pusas la variable se queda a cero). Es algo sencillo pero no se muy bien que codigo meterle porque le pulso al punto y no me hace nada, solo me deja el punto fijo y la variable no me la cambia.
Sabeis que me puede estar pasando? si alguien tiene alguna idea o algun ejemplo aver si me lo podrias mandar

pues mira no te entiendo muy bien :?, seria bueno que pusieras el codigo que has utilizado porque con los OptionButton es asi de sencillo:

Código: [Seleccionar]
Option Explicit
Dim variable As Integer

Private Sub Option1_Click()
variable = 1
End Sub

con este codigo si presionas el optionbutton, variable se pone a 1 mas adelante tendrias que ponerla a cero porque si no se va a quedar con el valor de uno.

como te digo no se si entendi bien, cualquier cosa posteala   8)
 
Título: Re: ayuda con el codigo de visual
Publicado por: atlasdelcarinakeel en 02 de Mayo de 2006, 20:47:10
Pues yo te recomiendo usar el CheckBox, ya que el Option parece que cuando se carga el Form aparece activado, entonces creo que necesitas otro Option para desactivar el primero (creo que asi es que trabaja), en cambio con el CheckBox puedes usar uno solo. Algo asi seria el codigo del Check:

Código: Visual Basic
  1. Private Sub Check1_Click()
  2. If Check1.Value = 1 Then
  3. variable = 1
  4. Else
  5. variable = 0
  6. End If
  7. End Sub

No digo que con el Option no se pueda, pero creo que no es tan simple como el CheckBox  :).
Título: Re: ayuda con el codigo de visual
Publicado por: pitillo en 03 de Mayo de 2006, 12:06:53
Lo primero gracias esos ejemplos me han ayudado. Alfinal he cogido la opcion del checkBox. Pero no se como puedo hacer para que lo detecte el pic el checkBox. Ami se me a ocurrido que si pulso el checkBox me ponga un 1 en la variable si no un cero. Asi cuando le de al boton aceptar si en la variable hay un uno le sumo por ejemplo 500 y si no no le sumo nada. En mi programa del pic lo que hago es comparar donde recibo los datos, si es mayor que 500 asi sabre si lo ha pulsado o no.
Esto lo he probado y no me funciona solo me va alque es menor que 500 pulse o no pulse, he probado varias cosas y ya no se me ocurre nada, si alguien supiera que estoy haciendo mal se lo agradeceria que me lo dijera. Aqui dejo el codigo del visual:

Private Sub Check1_Click()
If Check1.Value = 1 Then
variable = 1
Else
variable = 0
End If
End Sub

Private Sub CmdEnviar_Click()
MSComm1.InBufferCount = 0   

    If a = 1 Then
    TxtEnviar.Text = TxtEnviar.Text + 500
    MSComm1.Output = TxtEnviar.Text & Chr$(13)

    Else
    MSComm1.Output = TxtEnviar.Text & Chr$(13)
    End If
   
Do While MSComm1.OutBufferCount > 0
DoEvents
Loop
End Sub
 

La parte del codigo del pic, en steps guardo el dato enviado por el visual y lo comparo con 500
   steps = getc();
         if(steps > 500)
         {
            dir = 'r';
            printf("left    ");
            steps = steps - 500;
            drive_stepper(dir, steps);
         }
         else
         {
            dir = 'f';
            printf(" PC right    ");
            drive_stepper(dir, steps);

Un saludo
Título: Re: ayuda con el codigo de visual
Publicado por: BrunoF en 03 de Mayo de 2006, 16:02:57
Private Sub Check1_Click()
If Check1.Value = 1 Then
variable = 1
Else
variable = 0
End If
End Sub

Private Sub CmdEnviar_Click()
MSComm1.InBufferCount = 0   

    If a = 1 Then
    TxtEnviar.Text = TxtEnviar.Text + 500
    MSComm1.Output = TxtEnviar.Text & Chr$(13)

    Else
    MSComm1.Output = TxtEnviar.Text & Chr$(13)
    End If
   
Do While MSComm1.OutBufferCount > 0
DoEvents
Loop
End Sub

Hola, aca te retoco un poco el programa de vb

Código: Visual Basic
  1. Private Sub Check1_Click()
  2. variable= Check1.Value
  3. End Sub
  4.  
  5. Private Sub CmdEnviar_Click()
  6.  
  7. MSComm1.InBufferCount = 0
  8.  
  9.     If a = 1 Then TxtEnviar.Text = TxtEnviar.Text + 500 '¿a...? ¿no sera If variable= 1 Then TxtEnviar.Text = TxtEnviar.Text + 500?
  10.    MSComm1.Output = TxtEnviar.Text & Chr$(13)
  11.  
  12. Do While MSComm1.OutBufferCount > 0
  13. DoEvents
  14. Loop
  15. End Sub

En el programa del PIC, steps ¿que tipo de variable es? ya que sumar o restar 500 excede el byte, y puede que si el tipo de variable es muy pequeño produzca un over o underflow.
Título: Re: ayuda con el codigo de visual
Publicado por: atlasdelcarinakeel en 03 de Mayo de 2006, 16:27:55
Que tal, yo tambien creo que deberia ser

if variable=1 then .......


Aunque que creo que tambien serviria asi:

Código: Visual Basic
  1. Private Sub CmdEnviar_Click()
  2. MSComm1.InBufferCount = 0
  3.  
  4. If   Check1.Value = 1 Then      'Aqui se pregunta si el Check se presiono
  5.    TxtEnviar.Text = TxtEnviar.Text + 500
  6.      MSComm1.Output = TxtEnviar.Text & Chr$(13)
  7. Else
  8.     MSComm1.Output = TxtEnviar.Text & Chr$(13)
  9.     End If
  10. Do While MSComm1.OutBufferCount > 0
  11. DoEvents
  12. Loop
  13. End Sub

Saludos.  :lol:
Título: Re: ayuda con el codigo de visual
Publicado por: pitillo en 04 de Mayo de 2006, 09:18:27
Muchas gracias por dedicarme unos minutos me esta siendo de gran ayuda todo lo que me decis.
Ya solo me queda un error que no consigo solucionar, he cambiado el 500 por el 100 ya que steps es un int, pero aun asi no me hace nada, igual estoy cometiendo algun fallo a la hora de sumar el 100 con lo que tengo en el texto porque cuando me llega el dato al pic no me llega sumado con 100

os dejo el codigo

Private Sub Check1_Click()
variable = Check1.Value
End Sub
Private Sub CmdEnviar_Click()
  MSComm1.InBufferCount = 0     'reseta el buffer de recepcion
  If Check1.Value = 1 Then   'Aqui se pregunta si el Check se presiono
  TxtEnviar.Text = (TxtEnviar.Text + 100) 
  MSComm1.Output = TxtEnviar.Text & Chr$(13)
  Else
  MSComm1.Output = TxtEnviar.Text & Chr$(13)
  End If

Do While MSComm1.OutBufferCount > 0
DoEvents
Loop
End Sub

Igual mi fallo tambien puede estar en el codigo del pic ya que uso un int y solo me coge los numeros del 0 al 9, del numero 10 adelante no me los coge, mi instruccion en el pic para que me coja los numeros es

int steps;
steps = getc();
si sabes otra instruccion os agradeceria que me la dijerias

Muchas gracias
Un saludo