写C#代码,用Zigbee控制智能小车
开发板上的控制程序如下(非常简单,就是串口接收和小车控制程序):
//打开串口,并设置zigbee模块为透明传输模式
serial = new SerialPort("COM2", 115200, Parity.None, 8, StopBits.One);
serial.Open();
serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);
string strCommand = "---2-";
byte[] byteData = System.Text.Encoding.UTF8.GetBytes(strCommand);
serial.Write(byteData, 0, byteData.Length);
//读取数据
static void serial_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (serial.BytesToRead > 0)
{
byte[] bytData = new byte[serial.BytesToRead];
serial.Read(bytData, 0, bytData.Length);
serial.Write(bytData, 0, bytData.Length);
string KeyName = "";
switch (bytData[0])
{
case 48: //'0'
KeyName = "Forward";
MoveForward();
break;
case 49: //'1'
KeyName = "Left";
MoveLeft();
break;
case 50: //'2'
KeyName = "Right";
MoveRight();
break;
case 51: //'3'
KeyName = "Back";
MoveBack();
break;
case 52: //'4'
KeyName = "Stop";
MoveStop();
break;
}
Debug.Print(KeyName);
}
}
上面的程序进行了简化,关于小车PWM控制部分的代码,请参考我以前写的博文《用PWM驱动智能小车》及《红外遥控智能小车》。
为了便于控制,我们需要在PC上编写一个最简单的串口发送程序,以控制智能小车的运转,相关代码如下:
//串口
SerialPort serial = null;
public frmMain()
{
InitializeComponent();
serial = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);
serial.Open();
string strCommand = "---1-";
byte[] byteData = System.Text.Encoding.UTF8.GetBytes(strCommand);
serial.Write(byteData, 0, byteData.Length);
}
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
serial.Close();
}
private void btnForward_Click(object sender, EventArgs e)
{
serial.Write("0");
serial.DiscardInBuffer();
}
private void btnLeft_Click(object sender, EventArgs e)
{
serial.Write("1");
serial.DiscardInBuffer();
}
private void btnRight_Click(object sender, EventArgs e)
{
serial.Write("2");
serial.DiscardInBuffer();
}
private void btnBack_Click(object sender, EventArgs e)
{
serial.Write("3");
serial.DiscardInBuffer();
}
private void btnStop_Click(object sender, EventArgs e)
{
serial.Write("4");
serial.DiscardInBuffer();
}
运行后的界面如下:
博客文章:http://blog.csdn.net/yefanqiu/archive/2010/10/26/5967931.aspx
遥控视频:http://video.sina.com.cn/v/b/40292033-1804832611.html
--------------------编程问答-------------------- --------------------编程问答-------------------- 视频链接:http://video.sina.com.cn/v/b/40292033-1804832611.html --------------------编程问答-------------------- 这个只是发控制命令就行了么;车上的程序是怎么搞的,是C写的?控制硬件的很感兴趣 --------------------编程问答-------------------- 这个Zigbee如何握手的?和蓝牙一样需要先搜索,配对的么?多个终端在一起,如何建立对应1对1连接? --------------------编程问答-------------------- 哦,串口控制的。 --------------------编程问答-------------------- 程序就是C#,接收串口数据,然后执行。
Zigbee模块不需要握手,如果设置为透明传输模式,其实就相当于一个串口线。如果是二进制模式,传输时有一套协议,向指定地址的模块发数据即可。
可以参考我以前写的博客文章《Zigbee在.Net Micro Framework系统中的应用》
http://blog.csdn.net/yefanqiu/archive/2010/05/14/5588551.aspx --------------------编程问答-------------------- 不错,up! --------------------编程问答-------------------- niu ,学习~ --------------------编程问答-------------------- 不就是单片机和pc机串口通信吗?有什么问题? --------------------编程问答-------------------- 不是单片机,是Cortex-M3 32位ARM芯片,在其上构建了而一个.net micro framework框架,也就是轻量级CLR(TinyCLR)这样开发C#程序就可以控制硬件了。其开发环境就是VS2008/VS2010,安装一个.net mf SDK即可。
补充:.NET技术 , C#