void CCommRDlg::OnCommMscomm1()
{
// TODO: 在此处添加消息处理程序代码
VARIANT m_Input1;
COleSafeArray m_Input2;
long length,i;
BYTE data[1024];
CString str;
if(m_comm.get_CommEvent()==2)
{
m_Input1=m_comm.get_Input();
m_Input2=m_Input1;
length=m_Input2.GetOneDimSize();
for(i=0;i<length;i++)
m_Input2.GetElement(&i,data+i);
for(i=0;i<length;i++)
{
char a=*(char *)(data+i);
str.Format(_T("%c"),a); sText+=str;
m_ReceiveData.SetWindowText(sText);
}
}
UpdateData(false);
}void CCommRDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if(!m_comm.get_PortOpen())
{
m_comm.put_PortOpen(true); }
UpdateData(true);
}void CCommRDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
m_ReceiveData.EmptyUndoBuffer();
UpdateData(false);
}这是我在MFC中用mscomm控件写的接受程序,
我接受传感器发来的数据,可是没有显示,请教高手
{
// TODO: 在此处添加消息处理程序代码
VARIANT m_Input1;
COleSafeArray m_Input2;
long length,i;
BYTE data[1024];
CString str;
if(m_comm.get_CommEvent()==2)
{
m_Input1=m_comm.get_Input();
m_Input2=m_Input1;
length=m_Input2.GetOneDimSize();
for(i=0;i<length;i++)
m_Input2.GetElement(&i,data+i);
for(i=0;i<length;i++)
{
char a=*(char *)(data+i);
str.Format(_T("%c"),a); sText+=str;
m_ReceiveData.SetWindowText(sText);
}
}
UpdateData(false);
}void CCommRDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if(!m_comm.get_PortOpen())
{
m_comm.put_PortOpen(true); }
UpdateData(true);
}void CCommRDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
m_ReceiveData.EmptyUndoBuffer();
UpdateData(false);
}这是我在MFC中用mscomm控件写的接受程序,
我接受传感器发来的数据,可是没有显示,请教高手
解决方案 »
- 求关于开发一个类似于虚拟网络文件系统的源代码工程。
- 怎样从存储过程里输出记录集?
- 请教一个关于CMPP2.0短信网关的问题
- ATL能否方便的实现container的功能
- 如下数组如何实现,算法问题
- 完全二叉树的问题,请教各路高手,熟悉二叉树性质的请进。
- 薪水调查--->(IT行业,软件开发),答者有分!!!!!!!!!
- 如何完全隐藏进程,包括用Ctrl+Alt+Del也查看不到?
- 请问国外有哪些有名而且人气旺的计算机科学论坛和编程论坛,谢谢
- CDC *rDC=pEditE->GetDC();//为什么这句会这样的错?Unhandled exception in dict.exe(MFC42D.dll):0xC0000005:Access Violation
- 用SKin++如何实时换肤?
- vc保存图片
str.Format(_T("%.2X "),a);sText+=str;
http://embeded-life.blog.163.com/blog/static/105932519200941001844838/
http://hi.baidu.com/%C7%E0%C8%B80401/blog/item/c239948a9a2bd0cffc1f1072.html
参考
if(m_Com.GetPortOpen())
m_Com.SetPortOpen(FALSE); m_Com.SetCommPort(m_nPort); //选择com1
if( !m_Com.GetPortOpen())
m_Com.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port"); m_Com.SetSettings(m_strSettings); //波特率9600,无校验,8个数据位,1个停止位
m_Com.SetRThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_Com.SetInputMode(1);
m_Com.SetInputLen(0); //设置当前接收区数据长度为0
m_Com.GetInput();//先预读缓冲区以清除残留数据
我用单步调试,每次都是在if(m_comm.get_CommEvent()==2)
就跳过了 好像就没有消息响应
{
CDialog::OnInitDialog();
``````` if(m_comm.get_PortOpen()) m_comm.put_PortOpen(FALSE); m_comm.put_CommPort(3); //选择com1 if( !m_comm.get_PortOpen()) m_comm.put_PortOpen(TRUE);//打开串口 else AfxMessageBox(_T("cannot open serial port"));
m_comm.put_InBufferSize(1024); //接收缓冲区
m_comm.put_OutBufferSize(512);//发送缓冲区 m_comm.put_Settings(_T("9600,n,8,1")); //波特率9600,无校验,8个数据位,1个停止位 m_comm.put_InputMode(1); //1:表示以二进制方式检取数据 m_comm.put_RThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_comm.put_InputLen(0); //设置当前接收区数据长度为0 m_comm.get_Input();//先预读缓冲区以清除残留数据
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}编译通过了 没有问题,在运行调试的时候就会发错误,如下
Com.exe 中的 0x7c812afb 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012f1f4 处的 COleDispatchException。
Warning: Uncaught exception in WindowProc (returning 0).
单步调试在 m_comm.put_InBufferSize(1024); //接收缓冲区
m_comm.put_OutBufferSize(512);//发送缓冲区
出现问题,是内存溢出吗,怎么修改啊,高人指点