VC串口程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:18:58
我用VC编写了一个程序用于接收串口发送来的数据,对话框里只加了一个编辑框用来显示接收到的数据,并且是用十六进制的形式显示,但是每当接收到数据后,程序就会运行终止了,并会跳出一个框,提示出错了,我实在不知道为什么,谁能教教我???

初始化程序为:BOOL CPortDlg::OnInitDialog()
{ 中间部分省略
if(m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(false);
m_mscomm.SetCommPort(1);
if(!m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(true);
else
AfxMessageBox("serial port open error");
m_mscomm.SetSettings("9600,n,8,1");
m_mscomm.SetRThreshold(1);
m_mscomm.SetInputLen(0);
m_mscomm.GetInput();

return TRUE; // return TRUE unless you set the focus to a control
}
串口事件处理程序为:
VARIANT variant_tmp;
COleSafeArray safearray_tmp;
LONG len,i;
BYTE buf[2048];
CString str_tmp;
if(m_mscomm.GetCommEvent()==2)
{ MessageBox("hello"); 用来检验是否接收到数据了
variant_tmp=m_mscomm.GetInput();
safearray_tmp=variant_tmp;
len=safearray_tmp.GetOneDi

推荐 看 龚建伟 的 书

Visual C++_Turbo C串口通信编程实践

也可以 去 他 网站 看看

www.gjwtech.com

你好,希望我的回答能够对你有所帮助。

1.假如你现在正在学习VC串口编程,强烈建议你安装一个“虚拟串口软件vspdxp.exe”,再找个“sscom3.2串口通讯调试工具”。之后就可以完全用软件模拟串口通信来调试你的vc程序,很方便

2.我自己写了个程序实现你的要求,vc6下测试通过,工程下载地址:http://sites.google.com/site/qiujiejia1/Home/BaiDu_Answer_VC_SERIAL_2.zip

3. 萍水e相逢 推荐的 “ 龚建伟的个人主页,www.gjwtech.com ”绝对是学习串口通信的好网站,望有空多上去看看。

4.以下是主要代码,仅供参考。
/****************************************************************************
在OnInitDialog()里初始化
****************************************************************************/
BOOL CCommTest::OnInitDialog()
{
CDialog::OnInit