4.3串行通信性能的提高
1)错误处理
在串口通信中,可能会发生很多的错误,造成少读字节数,使用ClearCommError()函数可以检测错误并且清除错误条件。
2)控制命令
本程序可以使用自己的流控:利用 EscapeCommFunction()函数来模拟特殊字符XON和XOFF,将硬件信号设置为"ON"和"OFF"。
EscapeCommFunction( COMDEV( npTTYInfo ), SETDTR ) ; // 发送DTR信号 …… EscapeCommFunction( COMDEV( npTTYInfo ), CLRDTR ) ; //清除DTR信号3)引入Sleep函数 |
由于Windows操作系统的消息处理机制,使用Timer控件和定时函数来确定的间隔时间,不能适合实际应用。这是因为Windows的多任务处理方式。如果计算机在执行串行通信程序的同时还执行其它程序,那么就要等待较长时间才能响应串行通信程序,定时不准确。因此,采用Sleep函数,可以在定时的时间范围内停止进程的所有动作,定时的精确性有了保障。
另外,引入多线程,为串行通信程序赋予较高的优先级,避免在接收过程中被打断,也能提高串行通信的性能。
5、结论
Windows环境下的应用程序编程是目前的主要趋势。它提供了丰富的资源,VC++还提供了面向对象程序设计的功能。Windows的API技术可以清楚地掌握串口通信的机制,且探制手段灵活,功能强大。用API技术开发的串行通信程序在实际应用中,很大地提高了通讯性能和通信的可靠性。本设计利用 VC++的强大功能, 在 Windows环境下开发了PC机与单片机的串行通信软件,对于国内的中、小型企业具有现实意义。本软件经过在一个实际的工业集散系统中的应用表明,运行状态良好,灵活方便。
查看本文来源