解决方案 »

  1.   

    我改成
    m_cComm.put_InBufferSize(2048);//设置输入缓冲区
    m_cComm.put_OutBufferSize(2048);//设置输出缓冲区
    还是不好使
      

  2.   

    byte rxdata[512];//设置BYTE数组
    这个是不是小了?
      

  3.   

    不行改成这样还是一样的
    byte rxdata[2048];//设置BYTE数组
      

  4.   

    mscomm很复杂的 换第三方吧
    http://blog.csdn.net/sunnyloves/article/details/5575995
      

  5.   

    检查DoDataExchange里是否有控件ID和成员变量关联的代码DDX_Control(pDX,MSCOMM_ID,cComm);
      

  6.   

    好像没有
    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    }
    问题出在这里?
      

  7.   


    void CSerialPortCommDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_LBString(pDX, IDC_LIST1, m_strRecvdata);
    DDX_Text(pDX, IDC_EDIT1, m_strRecvdata1);
    }
      

  8.   

    不过这里有void CDialog1::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_COMBO1, m_combo1);
    DDX_Control(pDX, IDC_COMBO2, m_combo2);
    DDX_Control(pDX, IDC_COMBO3, m_combo3);
    DDX_Control(pDX, IDC_COMBO4, m_combo4);
    DDX_Control(pDX, IDC_COMBO5, m_combo5);
    DDX_Control(pDX, IDC_MSCOMM1, m_cComm);
    }
      

  9.   

    不过这里有void CDialog1::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_COMBO1, m_combo1);
    DDX_Control(pDX, IDC_COMBO2, m_combo2);
    DDX_Control(pDX, IDC_COMBO3, m_combo3);
    DDX_Control(pDX, IDC_COMBO4, m_combo4);
    DDX_Control(pDX, IDC_COMBO5, m_combo5);
    DDX_Control(pDX, IDC_MSCOMM1, m_cComm);
    }
    哇擦,你开那么多通信控件干嘛?开一个就足够了
    另外,你通信控件的有没有进行初始化?端口号,速率,校验方式等
      

  10.   

    不过这里有void CDialog1::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_COMBO1, m_combo1);
    DDX_Control(pDX, IDC_COMBO2, m_combo2);
    DDX_Control(pDX, IDC_COMBO3, m_combo3);
    DDX_Control(pDX, IDC_COMBO4, m_combo4);
    DDX_Control(pDX, IDC_COMBO5, m_combo5);
    DDX_Control(pDX, IDC_MSCOMM1, m_cComm);
    }
    哇擦,你开那么多通信控件干嘛?开一个就足够了
    另外,你通信控件的有没有进行初始化?端口号,速率,校验方式等
    我只开了一个控件,有初始化,能打开串口,发不了数据
    点击发送你会出现第一张图的错误
    请指教,不胜感激
      

  11.   

    不过这里有void CDialog1::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_COMBO1, m_combo1);
    DDX_Control(pDX, IDC_COMBO2, m_combo2);
    DDX_Control(pDX, IDC_COMBO3, m_combo3);
    DDX_Control(pDX, IDC_COMBO4, m_combo4);
    DDX_Control(pDX, IDC_COMBO5, m_combo5);
    DDX_Control(pDX, IDC_MSCOMM1, m_cComm);
    }
    哇擦,你开那么多通信控件干嘛?开一个就足够了
    另外,你通信控件的有没有进行初始化?端口号,速率,校验方式等
    你指的初始化是什么意思?是串口配置还是和对话框一起初始化时串口初始化,附上我的对话框初始化
    BOOL CSerialPortCommDlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE); // 设置大图标
    SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码
    sendbuf = ""; return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    }
    我的控件不在主对话框上,在Dialog对话框上
      

  12.   

    void CDialog1::OnBnClickedOk()
    有啊你看这个函数
      

  13.   

    真不行,你就使用CreateControl代码创建