写C#代码,用Zigbee控制智能小车

叶帆
博客专家认证
业界专家认证
2010-10-26 11:42:29

开发板上的控制程序如下(非常简单,就是串口接收和小车控制程序):

//打开串口,并设置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
...全文
1052 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶帆 2010-10-27
  • 打赏
  • 举报
回复
程序就是C#,接收串口数据,然后执行。
Zigbee模块不需要握手,如果设置为透明传输模式,其实就相当于一个串口线。如果是二进制模式,传输时有一套协议,向指定地址的模块发数据即可。
可以参考我以前写的博客文章《Zigbee在.Net Micro Framework系统中的应用》
http://blog.csdn.net/yefanqiu/archive/2010/05/14/5588551.aspx
叶帆 2010-10-27
  • 打赏
  • 举报
回复
不是单片机,是Cortex-M3 32位ARM芯片,在其上构建了而一个.net micro framework框架,也就是轻量级CLR(TinyCLR)这样开发C#程序就可以控制硬件了。其开发环境就是VS2008/VS2010,安装一个.net mf SDK即可。
hjx398 2010-10-27
  • 打赏
  • 举报
回复
不就是单片机和pc机串口通信吗?有什么问题?
mayonglong 2010-10-27
  • 打赏
  • 举报
回复
niu ,学习~
天地英豪 2010-10-27
  • 打赏
  • 举报
回复
不错,up!
threenewbee 2010-10-26
  • 打赏
  • 举报
回复
哦,串口控制的。
兔子-顾问 2010-10-26
  • 打赏
  • 举报
回复
这个Zigbee如何握手的?和蓝牙一样需要先搜索,配对的么?多个终端在一起,如何建立对应1对1连接?
wyx382978297 2010-10-26
  • 打赏
  • 举报
回复
这个只是发控制命令就行了么;车上的程序是怎么搞的,是C写的?控制硬件的很感兴趣
叶帆 2010-10-26
  • 打赏
  • 举报
回复
兔子-顾问 2010-10-26
  • 打赏
  • 举报
回复

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧