TODOPIC
Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: antoniojdobarro 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"?
-
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!
-
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.
-
Ummm.
-
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 :?
-
Ummm.
Qué mal que modifiques tus comentarios.
-
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?
-
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!
-
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.
-
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!
-
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?