如果一台电脑有3个串口,(实际只使用一个口就够)当数据线插入任一端口,程序中如何得到当前是哪个端口在接收数据啊?
?(我想如果自动识别出这个端口号,就不需手动设置了)。谢谢!

解决方案 »

  1.   

    在通讯以前,自定一个检测串口函数,一般电脑的串口都是从COM1开始的(COM1、COM2、COM3) CString MyPort;//当前串口号
    for(int i=1;i<4;i++)
    {MyPort.Format("COM%d",i);
     //向串口发送消息
     //接收消息,在超时范围内接收不到正确的返回信息,表示当前使用不是此串口continu;
     //如果在超时范围内接收到正确的返回信息,break;
    }
    说明:一般串口通讯从PC到下位机发送设备检测信息或控制命令,下位机会通过串口向PC返回一个应答消息,所以利用此机制就可以检测当前使用的是哪个串口。
      

  2.   


    1、如何知道计算机中安装了几个串行口?注册表中找:【HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM】
    2、如何知道当前是哪个串行口接了设备?需要协议配合。比如:计算机向串行口发送一些数据,然后开始等待,在限定的时间内,如果可以接收到指定的数据,那说明这个串行口接了设备;如果超过限定的时间还没有接收到指定的数据,那说明这个串行口没有接设备。【Win32 API】读写串行口入门级文章:【http://vckbase.com/document/viewdoc/?id=1114】