• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 用CSerialPort类编写的modem测试程序遇到的问题!

用CSerialPort类编写的modem测试程序遇到的问题!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了cserialport,cserialport类,cserialport使用,cserialport类下载,cserialport实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 用CSerialPort类编写的modem测试程序遇到的问题!
描述:

小弟在尝试做一个测试程序时遇到一个难以解决的问题,耽搁了好多天。我用的是CSerialPort类编写,基本上所有功能都基本实现,但是在用check box 结合button做测试module基本function测试的时候发现一个问题,希望得到大家的解答:
这个问题是 当Check box选择在三个以上(包含三个)的时候,点测试button的时候只有头和尾2个测试选项起作用,中间的AT指令发送和反馈都丢失了,请问各位高手,这里是不是存在没有处理modem反馈数据导致堵塞的问题?但是前面有个OnComm()是对接受字符做处理的,难道还要做另外的处理?另外测试过程中用了sleep()做延迟,会不会在这出了问题?我在下面给出了大部分原代码,方便大家帮我查问题,也希望得到大家的指点
BEGIN_MESSAGE_MAP(CFidelixModuleTestToolDlg, CDialog)
//{{AFX_MSG_MAP(CFidelixModuleTestToolDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_COMM_RXCHAR,OnComm) //消息映射
ON_BN_CLICKED(IDC_BUTTON_OPEN, OnButtonOpen)
ON_BN_CLICKED(IDC_BUTTON_CLOSE, OnButtonClose)
ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)
ON_BN_CLICKED(IDC_BUTTON_ClearReceive, OnBUTTONClearReceive)
ON_BN_CLICKED(IDC_BUTTON_ClearSend, OnBUTTONClearSend)
ON_BN_CLICKED(IDC_CHECK_AutoSend, OnCHECKAutoSend)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON1, OnButtonTestModule)
ON_BN_CLICKED(IDC_CHECK_VER, OnCheckVer)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFidelixModuleTestToolDlg message handlers
BOOL CFidelixModuleTestToolDlg::OnInitDialog()
{
CDialog::OnInitDialog();
    m_ctrlComboComPort.SetCurSel(0); 
m_ctrlComboBaud.SetCurSel(0);
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
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);
}
}
// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_ctrlCheckVer.SetCheck(0);
//m_ctrlComboComPort.setCurSel(0);
//m_ctrlComboBaud.setCurSel(0);
return TRUE;  // return TRUE  unless you set the focus to a control
}
void CFidelixModuleTestToolDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.
void CFidelixModuleTestToolDlg::OnPaint() 
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
LONG CFidelixModuleTestToolDlg::OnComm(WPARAM ch,LPARAM port)
{
m_strEditRMsg+=ch;
UpdateData(FALSE);//将接收到的字符显示在接收编辑框中
return 0;
}
// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CFidelixModuleTestToolDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CFidelixModuleTestToolDlg::OnButtonOpen() 
{
// TODO: Add your control notification handler code here
int nPort=m_ctrlComboComPort.GetCurSel()+1;//
        int i=m_ctrlComboBaud.GetCurSel();
switch(i)
{
case 0:
i=9600;
break;
case 1:
i=19200;
break;
case 2:
i=38400;
break;
case 3:
i=57600;
break;
case 4:
i=115200;
break;
case 5:
i=230400;
break;
default:
break;
}
int nBaud=i;
if(m_SerialPort.InitPort(this,nPort,nBaud,'N',8,1,EV_RXFLAG|EV_RXCHAR,512))
{
m_SerialPort.StartMonitoring();
m_bSerialPortOpened=TRUE;
}
else
{
AfxMessageBox("没有发现此串口或被占用");
    m_bSerialPortOpened=FALSE;
}
GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
    GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
}
void CFidelixModuleTestToolDlg::OnButtonClose() 
{
// TODO: Add your control notification handler code here
m_SerialPort.ClosePort();//关闭串口
m_bSerialPortOpened=FALSE;
GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened);
    GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened);
}
void CFidelixModuleTestToolDlg::OnButtonSend() 
{
// TODO: Add your control notification handler code here
    if(!m_bSerialPortOpened) return;//检查串口是否打开
UpdateData(TRUE);//读入编辑框中的数据
m_SerialPort.WriteToPort((LPCTSTR)m_strEditSendMsg);//发送数据
}
void CFidelixModuleTestToolDlg::OnBUTTONClearReceive() 
{
// TODO: Add your control notification handler code here
m_strEditRMsg.Empty();
// m_ReceiveData.Empty();
UpdateData(FALSE);
}
void CFidelixModuleTestToolDlg::OnBUTTONClearSend() 
{
// TODO: Add your co

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • CSerialPort类接收数据的问题,急!!
  • 关于CSerialPort在win98上的错误!
  • 请教关于CSerialPort的问题
  • 请教关于CSerialPort写数据的问题
  • CSerialPort类的问题
  • CSerialPort类的问题
  • 关于CSerialPort类串口通信编程WriteToPort函数的问题
  • 求教高手,关于串口通信类CSerialPort类
  • CSerialPort定时的问题
  • vs2010下使用CSerialPort编写串口通信,如何触发消息啊?

相关文章

  • 2017-06-05 工作者线程内能不能调用domodal生成模式对话框?
  • 2017-06-04 如何向com传入窗口句柄和消息代号
  • 2017-06-05 这些API怎么调用?为何老是报“undeclaredidentifier”?#include<tlhelp32h>已经加了(内有源代码)
  • 2017-06-05 我是新手,请问:我在for循环中开了好几个线程,为什么只有一个线程运行?用的是信号灯)
  • 2017-06-04 c++和gdi画波形图
  • 2017-06-04 vc代码改vb
  • 2017-06-04 关于控件中右键菜单的问题
  • 2017-06-05 急!!!!!请问用vc做项目模块的具体实现????
  • 2017-06-05 IOleInPlaceSite这个接口如何实现?
  • 2017-06-05 IWebBrowser2调用Naviagate会不会屏蔽了原来网页的javasript

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关闭一个正处于Suspend状态的线程,是不是首先要Resume这个线程?
    • 求助容器控件的非常基础的问题
    • MSCommocx//Settings9600,n,8,1是什么意思???
    • 一个小问题,请指教
    • 哪里有《COM/DCOM编程指南》的SOURCECODE下载?
    • 关于全局钩子的条件设置
    • 为什么Ole容器的运行速度这么慢?有好的解决办法吗?
    • 如何在ie窗口中右键弹出我定义的菜单,并运行我的应用程序?
    • 请问:View类中怎么捕获ActiveX的事件?
    • 可不可以在一个com定义两个接口??为什么我定义了一个,另一个不能用呢??

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有