The Media Center Sandbox

Resources and discussion for developing experiences in the Windows Media Center platform.
Welcome to The Media Center Sandbox Sign in | Join | Help
in Search

ZigBee GUI using C#

Last post 06-03-2008, 11:07 PM by matthew. 0 replies.
Sort Posts: Previous Next
  •  06-03-2008, 11:07 PM 7619

    ZigBee GUI using C#

    hi everyone,

    i am writing a program on ZigBee using Microsoft visual Studio 2005 C#. But currently i couldn't get the result i desired. I was able to establish PAN and scan for node, but i couldn't get my node to read temperature, sound the buzzer and ON/OFF the LEDs. So if possible, can someone out there please help me check and recorrect my program. Thanks.

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    using System.IO;

    using System.IO.Ports;

    using System.Text.RegularExpressions;

    namespace Telegesis_ZigBee_Kit_Control_Terminal

    {

    public enum textmsgtype { Incoming };

    public partial class terminal : Form

    {

    SerialPort port1 = new SerialPort();//Declaring serialport

    public terminal()

    {

    InitializeComponent();

    InitializeComports();

    btnrefresh.Enabled = false;

    btnsend.Enabled = true;

    btnclear.Enabled = true;

    button1.Enabled = true;

    }

    //Check the available COM ports and list in the combobox

    private void InitializeComports()

    {

    cmbcom.Items.Clear();

    foreach (string s in SerialPort.GetPortNames())

    {

    cmbcom.Items.Add(s);

    }

    }

    private void btnsetup_Click(object sender, EventArgs e)

    {

    if (cmbcom.Text.Equals(""))

    {

    MessageBox.Show("Please Choose COM port!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

    }

    else if (cmbbaud.Text.Equals(""))

    {

    MessageBox.Show("Please Choose Baud Rate!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

    }

    else

    {

    port1.Close();

    port1.PortName = cmbcom.Text;//Declare COM name

    port1.BaudRate = Convert.ToInt32(cmbbaud.Text);//Set Baudrate of COM port

    port1.Parity = Parity.None;

    port1.DataBits = 8;

    port1.Open();

    byte[] serialData = new byte[6];//Declare NO. of byte

    //Enter command to setup PAN

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x2B;//+

    serialData[3] = 0x45;//E

    serialData[4] = 0x4E;//N

    serialData[5] = 0x0D;//Enter

    port1.Write(serialData, 0, 6);

    btnsetup.Enabled = true;

    btnrefresh.Enabled = true;

    }

    }

    private void btnpan_Click(object sender, EventArgs e)

    {

    byte[] serialData = new byte[5];//Declare NO. of byte;

    //Display network parameters

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x2B;//+

    serialData[3] = 0x4E;//N

    serialData[4] = 0x0D;//Enter

    port1.Write(serialData, 0, 5);

    btnpan.Enabled = true;

    btnrefresh.Enabled = true;

    }

    private void btnscan_Click(object sender, EventArgs e)

    {

    timer1.Enabled = false;

    timer2.Enabled = true;

    byte[] serialData = new byte[6];//Declare NO. of byte

    //Scan network for other nodes

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x2B;//+

    serialData[3] = 0x53;//S

    serialData[4] = 0x4E;//N

    serialData[5] = 0x0D;//Enter

    port1.Write(serialData, 0, 6);

    btnsetup.Enabled = true;

    btnrefresh.Enabled = true;

    }

    private void btnbuzzer_Click(object sender, EventArgs e)

    {

    timer2.Enabled = false;

    timer1.Enabled = true;

    string IDRight = textBox00.Text;

    byte[] serialData = new byte[27];//Declare NO. of byte

    //Send command to activate buzzer

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x2B;//+

    serialData[3] = 0x49;//I

    serialData[4] = 0x44;//D

    serialData[5] = 0x45;//E

    serialData[6] = 0x4E;//N

    serialData[7] = 0x54;//T

    serialData[8] = 0x3A;//:

    for (int i = 0; i <= 15; i++)

    {

    serialData[i + 9] = Convert.ToByte(System.Convert.ToInt32(IDRight[i+1]));

    }

    serialData[26] = 0x0D;//Enter

    port1.Write(serialData, 0, 27);

    btnsetup.Enabled = true;

    btnrefresh.Enabled = true;

    }

    private void btnled_Click(object sender, EventArgs e)

    {

    byte[] IDRight = Encoding.ASCII.GetBytes(textBox00.Text);

    byte[] serialData = new byte[31];//Declare NO. of byte

    //Send command to turn on LED

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x53;//S

    serialData[3] = 0x52;//R

    serialData[4] = 0x45;//E

    serialData[5] = 0x4D;//M

    serialData[6] = 0x30;//0

    serialData[7] = 0x46;//F

    serialData[8] = 0x3A;//:

    int bytes =port1.BytesToWrite;

    for (int i = 0; i <= 15; i++)

    {

    serialData[i + 9] = IDRight[i+1];

    }

    serialData[25] = 0x3D;//=

    serialData[26] = 0x30;//0

    serialData[27] = 0x30;//0

    serialData[28] = 0x30;//0

    serialData[29] = 0x30;//0

    serialData[30] = 0x0D;//Enter

    port1.Write(serialData, 0, 31);

    btnsetup.Enabled = true;

    btnrefresh.Enabled = true;

    }

    private void btnexit_Click(object sender, EventArgs e)

    {

    byte[] serialData = new byte[9];//Declare NO. of byte

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x2B;//+

    serialData[3] = 0x44;//D

    serialData[4] = 0x41;//A

    serialData[5] = 0x53;//S

    serialData[6] = 0x53;//S

    serialData[7] = 0x4C;//L

    serialData[8] = 0x0D;//Enter

    port1.Write(serialData, 0, 9);

    btnexit.Enabled = true;

    btnrefresh.Enabled = true;

    }

    private void btnsend_Click(object sender, EventArgs e)

    {

    //Write line to serial port

    port1.WriteLine(txtcmd.Text);

    //Clear the text box

    txtcmd.Text = "";

    }

    private void btnrefresh_Click(object sender, EventArgs e)

    {

    txtmsg.Text = "";

    }

    private void btnclear_Click(object sender, EventArgs e)

    {

    NodeIDList.Text = "";

    }

    private void timer1_Tick(object sender, EventArgs e)

    {

    try

    {

    // Obtain the number of bytes waiting in the port's buffer

    int bytes = port1.BytesToRead;

    if (bytes != 0)

    {

    byte[] buffer = new byte[bytes];

    // Read the data from the port and store it in our buffer

    port1.Read(buffer, 0, bytes);

    // Show the user the incoming data in hex format

    txtmsg.Text += ByteArrayToAsciiString(buffer) + Environment.NewLine;

    }

    }

    catch (Exception exc)

    {

    // An exception is raised when there is no information to read.

    // Don't do anything here, just let the exception go.

    }

    }

    //Convert Byte Array To Hex String

    private string ByteArrayToHexString(byte[] data)

    {

    StringBuilder sb = new StringBuilder(data.Length * 3);

    foreach (byte b in data)

    sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));

    return sb.ToString().ToUpper();

    }

    //Convert Byte Array To Ascii String

    private string ByteArrayToAsciiString(byte[] data)

    {

    StringBuilder sb = new StringBuilder(data.Length * 3);

    foreach (byte b in data)

    sb.Append(Convert.ToChar(b));

    return sb.ToString().ToUpper();

    }

    private void timer2_Tick(object sender, EventArgs e)

    {

    timer1.Enabled = false;

    try

    {

    // Obtain the number of bytes waiting in the port's buffer

    int bytes = port1.BytesToRead;

    if (bytes != 0)

    {

    byte[] buffer = new byte[bytes];

    // Read the data from the port and store it in our buffer

    port1.Read(buffer, 0, bytes);

    // Show the user the incoming data in hex format

    textBox0.Text += ByteArrayToAsciiString(buffer) + Environment.NewLine;

    if (textBox0.Text.Contains("FFD"))

    {

    string NodeID = textBox0.Text;

    string[] field = NodeID.Split(new Char[] { ':' },17);

    textBox00.Text = field[1];

    NodeIDList.Text += textBox00.Text;

    }

    else

    {

    txtmsg.Text = txtmsg.Text + textBox0.Text;

    }

    if(txtmsg.Text.Contains("S13"))

    {

    string Hex = textBox0.Text;

    string[] field = Hex.Split(new char[] { ':' },4);

    int i = Convert.ToInt32(field[1], 16);

    int tem = (i - 600) / 10;

    txttemp.Text="The Current Temperature is:" + tem.ToString()+"degree";

    }

    }

    }

    catch (Exception exc)

    {

    // An exception is raised when there is no information to read.

    // Don't do anything here, just let the exception go.

    }

    }

    private void btntem_Click(object sender, EventArgs e)

    {

    string IDRight = textBox00.Text;

    byte[] serialData = new byte[28];//Declare NO. of byte

    //Send command to activate temperature reading

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x53;//S

    serialData[3] = 0x52;//R

    serialData[4] = 0x45;//E

    serialData[5] = 0x4D;//M

    serialData[6] = 0x31;//1

    serialData[7] = 0x33;//3

    serialData[8] = 0x3A;//:

    for (int i = 0; i <= 15; i++)

    {

    serialData[i + 9] = Convert.ToByte(System.Convert.ToInt32(IDRight[i+1]));

    }

    serialData[25] = 0x3F;//?

    serialData[26] = 0x0D;//Enter

    port1.Write(serialData, 0, 27);

    btnsetup.Enabled = true;

    btnrefresh.Enabled = true;

    }

    private void btnledoff_Click(object sender, EventArgs e)

    {

    byte[] IDRight = Encoding.ASCII.GetBytes(textBox00.Text);

    byte[] serialData = new byte[32];//Declare NO. of byte

    //Send command to turn off LED

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x53;//S

    serialData[3] = 0x52;//R

    serialData[4] = 0x45;//E

    serialData[5] = 0x4D;//M

    serialData[6] = 0x30;//0

    serialData[7] = 0x46;//F

    serialData[8] = 0x3A;//:

    int bytes = port1.BytesToWrite;

    for (int i = 0; i <= 15; i++)

    {

    serialData[i + 9] = IDRight[i + 1];

    }

    serialData[25] = 0x3D;//=

    serialData[26] = 0x30;//0

    serialData[27] = 0x30;//0

    serialData[28] = 0x46;//F

    serialData[29] = 0x30;//0

    serialData[30] = 0x0D;//Enter

    port1.Write(serialData, 0, 31);

    btnsetup.Enabled = true;

    btnrefresh.Enabled = true;

    }

     

    private void txtmsg_TextChanged_1(object sender, EventArgs e)

    {

    //Make sure the message display the last line

    txtmsg.SelectionStart = txtmsg.TextLength;

    // Scrolls the contents of the control to the current caret position.

    txtmsg.ScrollToCaret();

    }

    private void button1_Click(object sender, EventArgs e)

    {

    txttemp.Text = "";

    }

    private void btnjoin_Click(object sender, EventArgs e)

    {

    byte[] serialData = new byte[6];//Declare NO. of byte;

    //Display network parameters

    serialData[0] = 0x41;//A

    serialData[1] = 0x54;//T

    serialData[2] = 0x2B;//+

    serialData[3] = 0x4A;//J

    serialData[4] = 0x4E;//N

    serialData[5] = 0x0D;//Enter

    port1.Write(serialData, 0, 6);

    btnpan.Enabled = true;

    btnrefresh.Enabled = true;

    }

    }

    }

View as RSS news feed in XML
Powered by Community Server, by Telligent Systems