串口通信的第一种实现方案:半双工通信方式;这适用于:下位机需要等待上位机的回复之后,方可继续发送下一个数据包的应用场合。在大多数的串口书籍中,串口通信的具体实现均是采用的该方案;但功能太简化、代码不细致。在本书中,全面考虑了菜单的使能/禁止、串口通信参数的保存等;MCU不是仅仅发送一个字符就结束通信了,而是向PC持续发送数据包,具有实际应用意义;PC程序包含着数字量到模拟量的计算,数据处理完善;PC方的串行通信事件设置为EV_RXFLAG,优于EV_RXCHAR,但仍一并列出了使用后者时的代码。
串口通信的第二、三种实现方案,均属于:全双工通信方式;它们适用于:下位机无需等待上位机的回复,即可发送下一个数据包的应用场合;其实,大多数的参数监测系统即是属于本种应用。为了内容的循序渐进、以及细化不同的应用场合,故分别实现了二种方案(全书的第二、三种方案),前者在传输错误时不重传数据、后者在传输错误时重传数据。
采用Cygnal公司(现归属于Silicon Laboratories公司)的C8051F020DK-U型单片机开发工具,进行与计算机的串口通信;MCU采用C51语言、PC采用VC++ 6.0语言。
测量了二路差分电压量、四路单端电压量,以及MCU自身的片内温度;精确记录单片机的上电后时间、串行通信时间。MCU将它们串行发送到PC,由PC计算出实际的电压值、温度值,并存储到以当前时刻命名的Excel文件。分析并尝试了单片机接收两个连续字符的串口通信模式,且串口通信均正确。
花费了大量的时间与精力,对文中所涉内容进行注解,力求对于每一个变量的定义,都要说明其使用目的,记录重要变量的变化过程;章节布局、通稿整理,整整花费了一年半的时间。详细列出各流程图、采用不同的字体标识不同通信方案之间的代码差异,易学、易用。
程序代码经过反复调试,可直接为串口编程者使用。更多详情、试读章节,可在百度中搜索书名,欢迎技术交流,诚挚接受批评与指正。
|