Windows 平台下 API调用与单片机进行串口通信
本博客并非完全原创,其中大部分内容由作者在网上教程结合自己的理解写成,如有侵权,请指出并联系我删除。作者现为嵌入式系统初学者,如有错误还请见谅
- API串口通信
- 使用Win32的API
API串口通信
串行端口是系统资源的一部分,其本质是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位(Bit); 接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(即打开串口),通信完成后再释放资源(即关闭串口)。
串行通信一般可以分为同步和异步两种操作方式。所谓同步方式是指在串口的接收缓冲区中读取规定数目的数据,直到规定数目的数据全部被读出或设定的超时时间已到才返回。如果规定的待读取数据量大且设定的超时时间也较长,而接收缓冲区较小,则可能引起线程阻塞。而异步方式是利用Windows的多线程结构,让串口的读写操作在后台进行,而应用程序的其他部分在前台执行。 如果按驱动方式分,串口通信也可分为查询和事件驱动两种操作类型。
通过Visual C++的标准通信函数_inp和_outp可直接通过串口输入和输出数据。一般来说,在Visual C++中开发串口通信程序主要有调用API函数和使用ActiveX控件技术两种方式。基本步骤为:打开串口设备,设置串口通信属性,进行串口读写操作,关闭串口。下面将较为详细地讨论在VC中实现串口通信的上述两种方法。