使用 VB 中的 MSComm 控件实现 RS-232 串口通信 实验准备:需要准备一些与串口通信有关的设备,如(外置式)调制解调器、计算机串口与调制解调器的连接线、一根 DTE 到 DTE 的无调制解调器连接线(接法见本章有关习题的参考答案),在实验前检查计算机的两个串口是否能够正常工作。 实验环境:Window s 95/98 操作系统,Microsoft VB 5.0 以上程序设计环境。对例题中涉及调制解调器的内容,采用计算机与调制解调器连接的方式;对在例题中设计数据传输的内容,须事先将 DTE 到 DTE 的无调制解调器连接线的两端,分别插入 Com1 和 Com2 串口。 实验说明: VB中的MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm 控件提供下列两种处理通讯的方式: (1)事件驱动(实时)方式,这是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在 Carrier Detect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。在这些清况下,可以利用 MSComm控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。 (2)轮询方式,在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“OK”响应。 每个使用的 MSComm 控件都对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。可以在 Window s“控制面板”中改变端口地址和中断地址。 下面这个简单的例子采用了轮询方法演示了用调制解调器进行基本的串行通讯: Private Sub Form_Load() Dim Instring As String '保存输入子串的缓冲区 MSCOmm1.CommPort=3 '使用 COM3。 MSComm1.Settings="2400,N,8,1" '2400 波特率,无奇偶校验,8 位数据位,一位停止位 MSComm1.InputLen=0 '当输入占用时,告诉控件读人整个缓冲区。 MSComm1.PortOpen=True '打开端口。 MSComm1.Output="AT"+Chr$(13) '将调制解调器的 Attention 命令送到调制解调器。 Do '等待数据返回到串行端口。 DoEvents Loop Until MSComm1.InBufferCount>=2 Instring=MSComm1.Input '从串行端口读”OK“响应。 '进行相应...