打印

c++保存mfc的程序出错!!!求助高手啊!

[复制链接]
3298|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxlyyr3|  楼主 | 2011-9-20 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C++, MFC, TE, hb, RAM
本帖最后由 jxlyyr3 于 2011-9-20 22:07 编辑

各位大师好,我是刚学c++的,在论坛高手的指导下,编写了一个mfc读取的程序,程序如下:
LONG CSerialPortTestDlg::OnComm(WPARAM ch, LPARAM port)
{
INT  temp;
// UINT Hbyte,Lbyte;
//INT i=0;
i++;
if (i==1)
{
  Hbyte=ch;
}
if (i==2)
{
  
  Lbyte=ch;
        temp = Hbyte;
        temp = temp << 8;   //高八位
        temp |= Lbyte;         //低八位
        CString hexCh;
        hexCh.Format(TEXT("%.2f "), ((temp*10.0/4095.0-5.0)*1000.0*3/5.0));
        m_strEditReceiveMsg = hexCh;
  i=0;
        
}
UpdateData(FALSE);
CFile   file;
    file.Open( "D:\\1.txt ",CFile::modeReadWrite);
    CString       str     =   _T( " ");      
    m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量
    file.Write(str,str.GetLength());
    file.Close();
编译的时候没有错误,点击调式后,弹出错误:
提示For information on how your program cause an assertion failure,See the visual c++ documation on asserts.
File:filecore.cpp

求高手指导
Line:238

相关帖子

沙发
jxlyyr3|  楼主 | 2011-9-20 20:58 | 只看该作者
这是我根据别的高手的指点,找到了别人的程序,如下
  CFile file;  
  file.Open( "D:\\1.txt ",cfile::modeReadWrite);  
  CString str = _T( " ");   
  m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量  
  file.Write(str,str.GetLength());  
  file.close();

UpdateData(FALSE);
        CFile   file;
    file.Open( "D:\\1.txt ",cfile::modeReadWrite);
    CString       str     =   _T( " ");      
    m_strEditReceiveMsg.GetWindowText(str);//编辑框控件的control的绑定变量
    file.Write(str,str.GetLength());
    file.close();
引用之后出现了以下错误,
error C2653: 'cfile' : is not a class or namespace name
error C2065: 'modeReadWrite' : undeclared identifier
error C2065: 'm_Edit' : undeclared identifier
error C2228: left of '.GetWindowTextA' must have class/struct/union type
error C2039: 'close' : is not a member of 'CStdioFile'
请高手们再帮我改改吧,谢谢了!
我的编辑框的ID是IDC_EDIT_RECEIVEMESSAGE,谢谢指点了!

使用特权

评论回复
板凳
zhoujiewen| | 2011-9-21 12:53 | 只看该作者
你可以把源程序给我看看。zhoujiewenxtu@yahoo.com

使用特权

评论回复
地板
airwill| | 2011-9-21 13:00 | 只看该作者
问题出在 cfile 上面, 怎么定义的呢?

使用特权

评论回复
5
jxlyyr3|  楼主 | 2011-9-21 14:10 | 只看该作者
谢谢您了,我问题已经解决了。原因是,我没有在d盘建立相应的文本。现在可以显示,也可以保存了。下面是部分程序
hexCh.Format(TEXT("%.2f "), ((temp*10.0/4095.0-5.0)*1000.0*3/5.0));
        m_strEditReceiveMsg = hexCh;
  i=0;
        
}
UpdateData(FALSE);
CFile   file;
    file.Open( "D:\\1.txt ",CFile::modeReadWrite);
    //CString       str     =   _T( " ");      
    //m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量
    m_Edit.GetWindowText(m_strEditReceiveMsg);
    file.Write(m_strEditReceiveMsg,m_strEditReceiveMsg.GetLength());
    file.Close();
显示程序就是你指点的那样,我现在只是把+=换成了=号。因此可以只显示一个数据了。我现在最关心的问题是能否让这个程序保存每次显示的那个数据。我做完实验时候,在向你请教。谢谢了! 3# zhoujiewen

使用特权

评论回复
6
jxlyyr3|  楼主 | 2011-9-21 14:12 | 只看该作者
不用定义,我是大小写搞错了。
4# airwill

使用特权

评论回复
7
jxlyyr3|  楼主 | 2011-9-21 16:26 | 只看该作者
我的程序已经可以了。我想再问你一下。我的硬件是用两个ad1674采取两个通道的模拟信号,我现在想通过一个器件,仅使用一个ad1674就可以轮流读取两个通道的模拟信号,请问一下什么器件可以让ad1674轮流读取信号啊?谢谢了!
3# zhoujiewen

使用特权

评论回复
8
zhoujiewen| | 2011-9-22 14:11 | 只看该作者
你可以使用模拟开关,你AD模拟输入是-5~5V吧,可以用8选1通道的模拟开关CD4051.

使用特权

评论回复
9
jxlyyr3|  楼主 | 2011-9-22 20:49 | 只看该作者
谢谢您的指导了!师兄让我现在先把两个芯片轮流工作的程序编好。现在先不考虑模拟开关的问题了。接下来还有很多向你请教的!您多多指点哈!谢谢了!
8# zhoujiewen

使用特权

评论回复
10
jxlyyr3|  楼主 | 2011-9-24 08:47 | 只看该作者
3# zhoujiewen

使用特权

评论回复
11
jxlyyr3|  楼主 | 2011-9-24 08:47 | 只看该作者
您好,非常感谢之前您对我的指点!现在我还想请教你一个问题。我设计了两个编辑框,分别通过一个按钮,使他们保存数据。程序如下:
void CSerialPortTestDlg::OnButtonSave()
{
        CFile   file;
        file.Open( "D:\\电压.txt ",CFile::modeReadWrite);
       //CString       str     =   _T( " ");      
       //m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量
       //m_Edit.GetWindowText(m_strEditReceiveMsg);
        file.Write(m_Editsave,m_Editsave.GetLength());
        file.Close();
// TODO: Add your control notification handler code here
}
void CSerialPortTestDlg::OnButtonSavepow()
{
m_ctrlSave.SetWindowText("暂停保存");
        CFile   file1;
        file1.Open( "D:\\力矩.txt ",CFile::modeReadWrite);
       //CString       str     =   _T( " ");      
       //m_Edit.GetWindowText(str);//编辑框控件的control的绑定变量
       //m_Edit.GetWindowText(m_strEditReceiveMsg);
        file1.Write(m_Powersave,m_Powersave.GetLength());
        file1.Close();
// TODO: Add your control notification handler code here
}
可是调式之后,只有第一个txt里面保存了数据,第二个没有任何数据。请您指点我一下是什么问题啊?谢谢了! 3# zhoujiewen

使用特权

评论回复
12
liuzhengwu4| | 2011-9-24 09:53 | 只看该作者
你的OPEN方式要求下次写前定位文件中已写的位置。。。用seektoend....

使用特权

评论回复
13
jxlyyr3|  楼主 | 2011-9-24 11:24 | 只看该作者
非常感谢您的指点。在各位高手的帮助下,我的程序已经可以显示并且保存数据了。但是现在我希望可以对保存数据的txt文件清空。麻烦您指点我一下,谢谢了!
12# liuzhengwu4

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

45

帖子

1

粉丝