您的位置:程序门 -> vb -> 控件



vb 怎样突破mscomm的串口号限制


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb 怎样突破mscomm的串口号限制
发表于:2007-04-05 14:11:25 楼主
最近在编写一个数据采集程序,需要连接的设备较多,mscomm的串口号限制到15   怎样才能突破这个限制?
本想采用api来做串口,但是不知道怎样用api来实现mscomm的oncomm事件机制。
因为如果采用定时器轮询,由于串口数量较多,同时对于数据采集的时间要求比较严格,所以无法实现。
saxcomm控件因为要求注册,所以无论是否有注册码都无法正常使用。
发表于:2007-04-05 14:28:231楼 得分:0
换通讯协议就可以,一对多!
发表于:2007-04-05 14:34:032楼 得分:0
使用多串口卡
发表于:2007-04-05 15:03:013楼 得分:0
多串口卡是物理上的多串口,moxa的多串口卡也用过。但是那个本机上还是要建立串口的。程序中一样要开启通道。
一对多行不通,因为这里每个串口要对应一个设备,该设备的通讯层上就决定了是一对一的结构。
发表于:2007-04-05 15:17:094楼 得分:0
自己用api做个comm控件,在控件里定时查询收到的数据。这样每个控件都有专门的数据接收检查。就无需每个串口轮询了。
发表于:2007-04-06 09:42:235楼 得分:0
定时是不可行的,因为数据的接收时间是到毫秒级的。目前用mscomm控件是不考虑传输的时间间隔。同时每秒钟都有20多组数据进来。定时查询的话时间间隔太小系统撑不住,太大的话数据已经不可用了。
发表于:2007-04-06 10:51:036楼 得分:0
把缓冲区设大一点就可以了。另外参考一下mscomm的写法,也弄个触发机制,貌似要截获底层硬件中断,这个比较麻烦。
发表于:2007-04-06 11:14:297楼 得分:0
使用串口hub看看,!!
发表于:2007-04-06 11:28:278楼 得分:0
还好没说不用串口……
发表于:2007-04-06 11:33:439楼 得分:0
刚才找了个api的触发机制的例子看了下,总是出现问题,在第一次打开串口的时候没有问题,关闭后再打开就不行了。查看问题出错在createfile中,返回值-1
comnum   =   createfile(comnumber,   &hc0000000,   0,   0,   3,   0,   0)
        if   comnum   =   -1   then
                msgbox   "com   port   "   &   comnumber   &   "   not   available.   use   serial   settings   (on   the   main   menu)   to   setup   your   ports. ",   48
                initcom   =   false
                exit   function
        end   if
关闭串口的代码如下:
这是关闭串口的函数---
public   function   fincom()
on   error   resume   next
        commtime.enabled   =   false
        set   commtime   =   nothing
        fincom   =   closehandle(comnum)
        comisopen   =   false
        if   err.number   <>   0   then   err.clear
end   function
调用该函数----
                        arccomm1.fincom
                        setcontrollslockstatus   "close ",   true
                        setcontrollslockstatus   "open ",   false
发表于:2007-04-09 10:36:3610楼 得分:0
vb2005支持多少个串口?
发表于:2007-04-12 08:39:4911楼 得分:0
要不   用虚拟串口吧
要有多少就有多少
发表于:2007-09-21 16:21:4512楼 得分:0
用多串口卡可以,没问题,我以前用过,一台机可接32个串口的串口卡。
发表于:2007-10-10 15:07:4113楼 得分:0
我也遇到了同样的问题,关注中...
发表于:2007-10-10 16:22:0714楼 得分:0
修改通讯协议,改用485通讯!
发表于:2007-10-10 22:18:2415楼 得分:0
<marquee   onstart   =   "javascript:now();"   direction=up   width=15   scrollamount=10> up </marquee>


快速检索

最新资讯
热门点击