我们的生活离不开单片机,单片机要和上位机通信,通信最简单的方式是靠串口。
本文介绍,如何编写一个程序,在电脑上向串口那一头的单片机发送信息,以及接收从串口传回的信息。
这种程序(通常叫做串口调试程序),网络上其实到处都是;但是如果大家学会自己去写,就可以定制属于自己的上位机,和其他代码结合,实现丰富多彩的功能。
比如,我可以写一个3D小游戏,从串口获取单片机上陀螺仪给出的姿态数据,控制游戏中物体的动态。
动手之前,你需要:
一个已经编程,可以通过串口接受和发送数据的单片机;
一台电脑,安装了Visual Studio 2010/2012和 .NET Framework 4;考虑到兼容性(win7/vista用户默认安装3.5),可以换用NET Framework 3.5
电脑上的串口可以是原生串口,也可以是USB转串口。
微软开发工具(包括VS2012)到这里下载:
XXXXXXXXXXXXXXXXXXXXXXXX/t/57141把我写好的程序发上来做个参考:
我在上面的文本框中输入一串字符,点TX按钮发送给单片机;单片机收到这些字符之后,把它们的ascii代码,用十进制数字表示出来,结合一些说明字符(如"recv"),通过串口发回到电脑。电脑收到字符之后产生一个应用程序事件,在事件处理程序中将收到的内容加到界面下方的文本框中。
在这个例子里,串口一次性发送了4个字符,如果单片机接收一个字符,用printf()函数输出一次(每次十几个字符),显然,printf()函数在完成之前,由电脑发来的下一个字符已经到达,这会导致一些字符的丢失。
例子中使用了STM8单片机的中断功能接管收发,并且软件上实现了FIFO缓存(先入先出缓存),所以单片机可以在正常工作不被打扰的情况下,轻松地处理来自串口的数据。
200字以内,仅用于支线交流,主线讨论请采用回复功能。