MSComm控件出错
我做了一个简单的MSComm控件的程序,但是一旦运行到串口控件初始化时就出错,如下图:具体代码如下:(我只是在初始化对话窗口时,增加了串口初始化)BOOLCSerialC...
我做了一个简单的MSComm控件的程序,但是一旦运行到串口控件初始化时就出错,如下图:
具体代码如下:(我只是在初始化对话窗口时,增加了串口初始化)
BOOL CSerialCOMDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_ctrlComm.put_CommPort(1);
m_ctrlComm.put_InputMode(1);//输入方式为二进制方式
m_ctrlComm.put_InBufferSize(1024);//输入缓冲区大小为1024byte
m_ctrlComm.put_OutBufferSize(512);//输出缓冲区大小为512byte
m_ctrlComm.put_Settings(_T("9600,n,8,1"));//设置串口参数:9600波特率,无奇偶校验,8个数据位,1个停止位
if(!m_ctrlComm.get_PortOpen())
m_ctrlComm.put_PortOpen(1);//打开串口
m_ctrlComm.put_RThreshold(1);//每当串口接收缓冲区有多余或等于1个字符时将引发一个接收数据的oncomm事件
m_ctrlComm.put_InputLen(0);//设置当前接收区数据长度为0
m_ctrlComm.get_Input();//预读缓冲区以清空残留数据
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
} 展开
具体代码如下:(我只是在初始化对话窗口时,增加了串口初始化)
BOOL CSerialCOMDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
m_ctrlComm.put_CommPort(1);
m_ctrlComm.put_InputMode(1);//输入方式为二进制方式
m_ctrlComm.put_InBufferSize(1024);//输入缓冲区大小为1024byte
m_ctrlComm.put_OutBufferSize(512);//输出缓冲区大小为512byte
m_ctrlComm.put_Settings(_T("9600,n,8,1"));//设置串口参数:9600波特率,无奇偶校验,8个数据位,1个停止位
if(!m_ctrlComm.get_PortOpen())
m_ctrlComm.put_PortOpen(1);//打开串口
m_ctrlComm.put_RThreshold(1);//每当串口接收缓冲区有多余或等于1个字符时将引发一个接收数据的oncomm事件
m_ctrlComm.put_InputLen(0);//设置当前接收区数据长度为0
m_ctrlComm.get_Input();//预读缓冲区以清空残留数据
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询