部分引用 http://www.vckbase.com/document/viewdoc/?id=1734
《接口与通信》这本书,虽然说的比较久,都是IBM和Intel古老的IC技术,但是有些还是通用的。我们通过了解这些IC可以知道一台电脑是怎么样进行软件编程和硬件结合。
其中有个Intel的8250异步串口 。其中的管脚。我就不说了。但是我们可以像编写汇编一样控制他。
例如 : BIOS分配了IC8250的地址是3F8H-3FFH(COM1)的话。
MOV AL,80H
MOV DX,3FBH
OUT DX, AL ;给控制位最高位写上1 ,这个1的作用就是确定化吧。因为这个位置的值是不定的。要是0的话寻址就不对了。
MOV AL,
MOW DX,3F8H
OUT DX,AL
这样我们就可以控制这个芯片(IC)来接收波特的属性。例如,你要接收的是多少频率。多少位的。打开哪个口来接收都可以控制。
但是通过C++编程是怎么得到的呢?
在DOS的系统接口中。DOS INT 21H 的03H和04H 号的功能 就是调用 异步串口通信的接收和发送功能, 而BIOS INT 14H 有4组 功能调用为串口通信服务的。正是因为如此在DOS中采用寄存器直接读写,BIOS调用,通信中断程序等方法可以比较容易地实现串口通信。但是在Windows中由于 Windows采用消息驱动 和设备统一管理 ,以及利用消息队列进行程序控制 。所以DOS下的方法都不宜采用。在Windows中为实现串口通信,Windows的SDK提供了完备的API函数和以中断方式驱动的通信驱动程序。使编程变得较为容易,
Windows提供的标准通信API函数 有很多。一般来说要实现串口通信。在32位模式下有以下4中方法:
1. 应用CreateFile方式打开串口
根据直译你会以为是打开文件的。其实非也。
API函数CreateFile()定义如下:
<