一般对真实串口来说
MSComm1.CommPort := nPortNum;   
MSComm1.PortOpen := True;而nPortNum就是真实串口对应的端口号,如Com1对应的是1,Com2对应的是2,Com3对应的是3。(这个是为什么呢??不知道)真正的问题是:
我用第三方软件虚拟出虚拟串口出来,串口名分别为:‘VCOM1’,‘VCOM2’,‘VCOM3’....虚拟的串口跟真实的串口名都可以从注册表 ‘HARDWARE\DEVICEMAP\SERIALCOMM’中读出来。
但是端口号呢。 我不知道该怎么读。还有MSComm控件对真实的串口和虚拟串口都是一样的处理方式吗?请帮忙解决下?

解决方案 »

  1.   

    是不是顺着现有的往下排啊,如COm4,猜的。
      

  2.   

    我不知道你的问题,以前用过很长一段时间的MSCOMM32,但后来因为VISTA不再支持mscomm32.ocx控件,所以不得不放弃了,而选用别的控件.所以,如果你有其它的办法可以解决这个问题,建议不要再选用MSCOMM32了.必尽以后VISTA代替xp 就像当初XP代替win98一样.
      

  3.   

    这个与使用正常端口是一样的只是如果发送端口是COM3那接收就是COM4,总之不能重复。如果有问题,是否你的虚拟端口设置有问题,查一下虚拟 软件的虚拟端口设置方法。
      

  4.   

    感谢4楼,同意4楼说的虚拟串口操作跟正常的是一样的.
    但是我用MSCom控件该如何打开我的VCOM1串口呢?
    MSComm1.CommPort := nPortNum;  
    MSComm1.PortOpen := True; 这个nPortNum,我无法指定一个数值跟 'VCOM1'对应起来
      

  5.   

    不要用MSCOMM了。Delphi有许多原生的串口控件,比如SPCOMM和ComPortDriver。用CreateFile,ReadFile,WriteFile等API自己写也可以。
      

  6.   


    看看那个虚拟软件虚拟的数值,或是在设备管理器里面看一下.就像USB转串口差不多.
      

  7.   

    算了,如果MSCOMM无法实现对虚拟串口的操作
    那我就听6楼了使用SPCOM控件
      

  8.   

    使用VSPM虚拟串口之类的虚拟串口管理软件,可以看到正在使用的虚拟串口号,一般从COM3~COM256都可以设置成虚拟串口。