搜索
bottom↓
回复: 21

port already open 怎么解决,求救!

[复制链接]

出0入0汤圆

发表于 2009-8-27 09:34:39 | 显示全部楼层 |阅读模式
再问下 port already open 怎么解决?
说明:这框我没写的,而自己写 的        打开串口失败则弹出AfxMessageBox("cannot open serial port")框框的,但是失败时没弹出!却弹出port already open这个框框,这到底是why呢?郁闷。。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2009-8-27 09:35:04 | 显示全部楼层
在线等。。。。

出0入0汤圆

 楼主| 发表于 2009-8-27 09:47:12 | 显示全部楼层
怎么没人看的?

出0入0汤圆

发表于 2009-8-27 11:00:35 | 显示全部楼层
懒得理你,乱改帖子!

出0入0汤圆

 楼主| 发表于 2009-8-27 11:27:58 | 显示全部楼层
明白,谢谢LS,再问下 port already open 怎么解决?

出0入0汤圆

发表于 2009-8-27 19:08:39 | 显示全部楼层
貌似在调试串口程序吧?
port already open

try
{
   Comm.Open()
}
catch(CException &e)
{

}
//
问奇怪的问题最好先贴代码

出0入0汤圆

 楼主| 发表于 2009-8-27 22:08:45 | 显示全部楼层
回【5楼】 xukaiming
是在调串口的,第一次写的串口程序,就头疼了。。。
void CSCOMMTESTDlg::OnComm()
{
        // TODO: Add your control notification handler code here
    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    LONG len,k;
    BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
    CString strtemp;
    if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
    {            
        variant_inp=m_ctrlComm.GetInput(); //读缓冲区
        safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
        len=safearray_inp.GetOneDimSize(); //得到有效数据长度
        for(k=0;k<len;k++)
            safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
        for(k=0;k<len;k++) //将数组转换为Cstring型变量
        {
            BYTE bt=*(char*)(rxdata+k); //字符型
            strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
            m_strRXData+=strtemp; //加入接收编辑框对应字符串
        }
        }
}

void CSCOMMTESTDlg::OnOpenportbutton()
{
        // TODO: Add your control notification handler code here
        if(m_ctrlComm.GetPortOpen())
                m_ctrlComm.SetPortOpen(FALSE);

        m_ctrlComm.SetCommPort(3);   //选择com3
        if( !m_ctrlComm.GetPortOpen())
        {
                m_ctrlComm.SetPortOpen(TRUE);//打开串口
                AfxMessageBox("open serial port");
        }
        else
        AfxMessageBox("cannot open serial port");

        m_ctrlComm.SetSettings("4800,n,8,1"); //波特率4800,无校验,8个数据位,1个停止位

        m_ctrlComm.SetInputMode(1);  // 以二进制方式检取数据
        m_ctrlComm.SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
        m_ctrlComm.SetInputLen(0);   //设置当前接收区数据长度为0
        m_ctrlComm.GetInput();       //先预读缓冲区以清除残留数据       
}
看看有问题不?再声明下用的是USB转的串口的!!

出0入0汤圆

发表于 2009-8-27 22:25:38 | 显示全部楼层
弹出port already open这个框框

是因为MSComm控件可以捕获错误8013,自己弹出的。端口已经打开。

出0入0汤圆

 楼主| 发表于 2009-8-27 23:00:14 | 显示全部楼层
但是还是通信不了啊。?

出0入0汤圆

发表于 2009-8-27 23:07:12 | 显示全部楼层
哦,你说的这个意思啊。

com3是系统他用的,你不能使用。

出0入0汤圆

发表于 2009-8-27 23:15:55 | 显示全部楼层
一般分配给 Modem


(原文件名:com3.JPG)

出0入0汤圆

 楼主| 发表于 2009-8-27 23:21:09 | 显示全部楼层
不是的,我详细检查过了,com3是USB转的串口来的,是不是VC程序有问题啊?一直都通信不了。。

出0入0汤圆

发表于 2009-8-27 23:24:27 | 显示全部楼层
仔细看了一下,你等会。我帮你试一下。

出0入0汤圆

 楼主| 发表于 2009-8-27 23:43:26 | 显示全部楼层
你太好了。。。

出0入0汤圆

发表于 2009-8-27 23:55:32 | 显示全部楼层
好像程序不会出现这个问题,还是串口被占用了。

安装usb串口的时候可以选择其它串口吗?

出0入328汤圆

发表于 2009-8-28 00:05:33 | 显示全部楼层
建议:
1、把所有用到这个串口的软件关闭。
2、运行串口调试助手,看可不可以打开 ----- 如果不可以打开,重启试试,有可能是某个后台程序占用串口
3、如果串口调试助手可以打开,则把串口调试助手关闭,运行你的程序 ------ 如果此时报错,则检查你的程序有没有可能多次打开串口

出0入0汤圆

发表于 2009-8-28 00:20:38 | 显示全部楼层
发两个软件,一个虚拟串口,一个串口助手。

先用串口助手看能不能打开COM3。如果不能检查自己的COM3。


用虚拟串口虚拟出COM4,COM5。

串口助手设置成COM4,自己程序设置成COM5。2个互发调试。

点击此处下载 ourdev_475375.rar(文件大小:2.81M) (原文件名:Virtual Serial Port Driverv6.rar)
点击此处下载 ourdev_475376.rar(文件大小:114K) (原文件名:串口调试助手V2.2.rar)

出0入0汤圆

 楼主| 发表于 2009-8-28 01:04:56 | 显示全部楼层
用串口调试时,是可以打开的,所以我就怀疑是不是不VC程序的问题了,但是我对vc了解又不多。所以问题就还不会解决。
好的,我试下用虚拟串口自发自收行不行先。。

出0入0汤圆

发表于 2009-8-31 21:03:06 | 显示全部楼层
奇怪了啊,你那个程序在我的电脑上没问题 啊

出0入0汤圆

 楼主| 发表于 2009-9-1 22:42:40 | 显示全部楼层
是程序的问题,谢谢各位!

出0入0汤圆

发表于 2011-5-3 11:07:50 | 显示全部楼层
说明一下,Mscomm控件的GetPortOpen函数仅能判断本程序自身的串口状态,其他程序改变的串口状态由事件响应自动处理,顶一下zhenke发的虚拟串口Virtual Serial Port Driverv6.rar工具,不错!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 12:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表