Autor Tema: Puerto serie  (Leído 5669 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Puerto serie
« en: 16 de Febrero de 2011, 12:54:26 »
Bien, supongamos que del lado del pc tenemos una variable que va cambiando: 1,2,3,4,3,4,2... y que está almacenada dentro de la variable "x".  ¿Cómo hago para que al enviar ese dato al recibirla se la asigne de nuevo a la variable "x"?

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Puerto serie
« Respuesta #1 en: 16 de Febrero de 2011, 13:57:38 »
Bien, supongamos que del lado del pc tenemos una variable que va cambiando: 1,2,3,4,3,4,2... y que está almacenada dentro de la variable "x".  ¿Cómo hago para que al enviar ese dato al recibirla se la asigne de nuevo a la variable "x"?

Busca ejemplos de ambas partes (PC y microcontrolador) de como trabajar con el puerto serie. Hay ejemplos de todo tipo.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Puerto serie
« Respuesta #2 en: 16 de Febrero de 2011, 14:11:47 »
Bien, supongamos que del lado del pc tenemos una variable que va cambiando: 1,2,3,4,3,4,2... y que está almacenada dentro de la variable "x".  ¿Cómo hago para que al enviar ese dato al recibirla se la asigne de nuevo a la variable "x"?

Sí, estudia antes de preguntar.

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: Puerto serie
« Respuesta #3 en: 16 de Febrero de 2011, 14:19:32 »
Ummm.
« Última modificación: 16 de Febrero de 2011, 16:10:07 por antoniojdobarro »

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Puerto serie
« Respuesta #4 en: 16 de Febrero de 2011, 15:05:52 »
Equivocado estas, quien se ha esforzado en aprender sabe quien lo hace y quien no. Hay mucho para leer de ambas partes (PC y micro). Cuando tengas algo hecho, ahí puedes plantear dudas  :?
No contesto mensajes privados, las consultas en el foro

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Puerto serie
« Respuesta #5 en: 16 de Febrero de 2011, 19:43:39 »
Ummm.

Qué mal que modifiques tus comentarios.

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: Puerto serie
« Respuesta #6 en: 18 de Febrero de 2011, 07:14:15 »
Bien, luego de leer, y probar mucho tengo lo siguiente:

 byte[] mBuffer = new byte[1];
 mBuffer[0] = 0x65; //ASCII letra"e".
 serialPort1.Write(mBuffer, 0, mBuffer.Length);

Con ello consigo enviar un caracter y al recibirlo desencadenar una acción. No hay problema.

Supongamos ahora que tengo una variable en el pc "x" y que tiene un valor determinado.
¿Cómo puedo hacer para enviar dicha variable y que la guarde el pic como tal?

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Puerto serie
« Respuesta #7 en: 18 de Febrero de 2011, 09:35:07 »
Envías el valor que tenga esa variable por el puerto de la PC, la recibís en el microcontrolador y la guardas en una variable creada en él. Si son varias tu conoces el orden, la cantidad de variables y bytes a enviar, así que no te puedes perder al diseñar el algoritmo.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: Puerto serie
« Respuesta #8 en: 18 de Febrero de 2011, 09:46:29 »
Bien, pero como sería el código para una variable, supongamos "coordenada", luego lo demás ya lo entendí, lo de recibirlas e ir almacenando sus valores en el pic.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Puerto serie
« Respuesta #9 en: 18 de Febrero de 2011, 12:18:39 »
Bien, pero como sería el código para una variable, supongamos "coordenada", luego lo demás ya lo entendí, lo de recibirlas e ir almacenando sus valores en el pic.

Pero en tu caso mBuffer es un arreglo de variables, o sea ya está!

Si tienes otra variable global, por ejemplo Coord_X, entonces solo haces:

mBuffer[0] = Coord_X;


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado antoniojdobarro

  • PIC12
  • **
  • Mensajes: 84
Re: Puerto serie
« Respuesta #10 en: 18 de Febrero de 2011, 12:55:55 »
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX.DirectInput;
using System.IO.Ports;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //Codigo para iniciar el Joystick

        private Device joystick;
        private void carga_panzer(object sender, EventArgs e)
        {
            this.InitDevices();
        }

        // Iniciando el Joystick

        private void InitDevices()
        {
            //Cargando todos los joysticks posibles

            foreach (
                DeviceInstance di in
                Manager.GetDevices(
                    DeviceClass.GameControl,
                    EnumDevicesFlags.AttachedOnly))
            {
                joystick = new Device(di.InstanceGuid);
                break;
            }

            if (joystick == null)
            {
                //Si no encontramos ningún Joystrick

                throw new Exception("No joystick found.");
            }


            ////Configurando los dispositivos 

            //Configurando los ejes del Joystick

            foreach (DeviceObjectInstance doi in joystick.Objects)
            {
                if ((doi.ObjectId & (int)DeviceObjectTypeFlags.Axis) != 0)
                {
                    joystick.Properties.SetRange(
                        ParameterHow.ById,
                        doi.ObjectId,
                        new InputRange(-100, 100));
                }
            }

            joystick.Properties.AxisModeAbsolute = true;

            //Nivel cooperativo

            joystick.SetCooperativeLevel(
                this,
                CooperativeLevelFlags.NonExclusive |
                CooperativeLevelFlags.Background);

            //Adquiriendo datos del joystick

            joystick.Acquire();

        }


        private void UpdateJoystick()
        {
            string coordenada_x = "Eje: ";
            string coordenada_y = "Eje: ";
            string coordenada_z = "Eje: ";
            string info = "Joystick: ";

            //Estado del joystick

            JoystickState state = joystick.CurrentJoystickState;

            //Posición

            coordenada_x += "X:" + state.X + " ";
            coordenada_y += "Y:" + state.Y + " ";
            coordenada_z += "Z:" + state.Z + " ";

            //Botones

            byte[] buttons = state.GetButtons();
            for (int i = 0; i < buttons.Length; i++)
            {
                if (buttons != 0)
                {
                    info += "Boton:" + i + " ";
                }
               
            }

            label1.Text = info;
            label2.Text = coordenada_x;
            label3.Text = coordenada_y;
            label4.Text = coordenada_z;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            UpdateJoystick();                   
        }

     


       
    }
}


Este es todo el código, y lo que realmente quiero es que las coordenadas x,y me las envie al pic por el puerto com.

Las coordenadas son state.X, state.Y,state.Z, como puedo hacer eso?
« Última modificación: 18 de Febrero de 2011, 13:03:31 por antoniojdobarro »


 

anything