Windows下多串口的配置与使用

时间:2024-03-07 10:05:39

在实际工作中,我们可能遇到这样的问题:我们需要Windows同时控制多个串口和多个外设进行通讯。比如说,一个机关或一个实验室的门禁系统,希望一台微机控制多个划卡机和多个门禁设备,这时,普通微机能够提供的一个或两个串口显然就不够使用了。为了解决这样的问题,我们采用了配置多功能卡作为Windows的COM3和COM4的办法,在实际中取得了很好的效果。

一、设置多功能卡作为多串口卡
*MOXA公司提供多种类型的多串口卡,但是它提供的功能在Windows下受到限制,并且也没有提供相应的Windows驱动程序,要在Windows下开发自己的驱动程序是件很麻烦的事。而现在市面上流行的多功能卡大都具有硬盘口、软盘口、游戏口、两个串行口和两个并行口,我们利用多功能卡的两个串行口,就可以方便地以很便宜的价格得到Windows下的多个串口。
从市场上买来一块多功能卡后,首先用QAPLUS或其它工具软件测试一下你的微机的硬件配置,主要是I/O端口基地址和中断信息。一般来说,COM1占用了中断4和I/O地址0x3f8,COM2占用了中断3和I/O地址0x2f8,中断5、中断9和中断11一般情况下空闲,COM3和COM4需要的I/O地址0x3e8和0x2e8也都空闲。接下来要做的是按照多功能卡的使用说明将硬盘口、软盘口、游戏口和并行口的功能屏蔽掉(设置成disable),将串行口设置成COM3和COM4,并设置其相应的中断,如中断5和中断9(一般情况下通过跳线设置)。最后将机箱打开,把多功能卡插入扩展槽,这样多功能卡就设置成了多串口卡。这时候,再用QAPLUS检测,就可以看到COM3和COM4占用的中断和I/O地址。

二、配置Windows的多个串口
多功能卡设置好之后,启动Windows,选择并激活控制面板,然后进入端口设置程序。在端口设置窗口中选择相应端口(如COM3)并点击"设置"按钮,则弹出如图1所示设定窗口。
图1
在设定窗口中,可以修改串行口的通信协议,如上面的例子中,将COM3设为2400bps的波特率,7位数据位,无奇偶校验,1位停止位,使用Xon/Xoff流控制。设置完通信协议后,点击"高级"按钮进入高级设定如图2。
图2
高级设定用来设置串行口的I/O地址和中断号,如本例中将COM3的I/O端口基地址设为0x3E8,中断请求线设为5。这里的设定必须和前面提到的用QAPLUS检测到的COM3的I/O地址和中断号一致。
设置好后点击"确定"按钮回到上一级窗口,使用同样的办法设置好其它串行口。当所有的串行口都设置好后,重新启动Windows,使刚才的设定生效。Windows再次启动之后,就可以使用多个串口进行通讯了。

三、在Windows下使用多串口
下面我们用一个实验室门禁系统中使用的一个实际应用程序为例来介绍Windows下对多串口的编程。在我们的系统中,使用了3个串行口COM1、COM2和COM3,每个串行口与一个划卡器、一个门禁设备相连。和串行口打交道的程序叫serial,它完成下面的工作:启动时serial完成对串行口COM1、COM2和COM3的初始化;然后它等待串行口的事件通知消息,当划卡器上划过一个卡时,它提供8个ASCII码数据给串行口,Windows收到8个字符时给应用程序一个WM-COMMNOTIFY消息。serial在响应这个消息时,它先接收数据,然后广播一个WM-ASK消息,并等待门禁系统控制程序发回一个WM-ANSWER消息。在响应WM-ANSWER消息时,serial用WM-CHAR消息的形式向门禁系统控制程序发送从串行口接收到的数据。另外,当门禁系统控制程序发来WM-OPENDOOR消息时,serial程序向指定串行口写入一个字符‘A’开启门禁设备,以让一个合法者进入。