24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 982  |  回复: 7

zhangqinfu

新虫 (初入文坛)

[交流] 【求助】用MSComm控件编程DEBUG生成的程序只能收数据不能发数据?已有5人参与

本人初学VC++,想用MSComm控件编一个简单串口通信的程序,按照龚老师书上的例子写了一个程序,在DEBUG下生成的程序只能发数据不能收数据。收数据时弹出窗口:"0x5f5624b0"指令引用的"0x0000205d"内存。该内存不能为"read".但是在release下生成的程序可以运行。请高手指点,如何在DEBUG也能正常运行呀。串口的响应函数如下:
void CSCommTestDlg::OnComm()
{
        // TODO: Add your control notification handler code here
        VARIANT variant_inp;
        COleSafeArray safearray_inp;
        LONG len,k;
        BYTE rxdata[2048];
        CString strtemp;
        if(m_ctrlComm.GetCommEvent()==2)
        {
                variant_inp=m_ctrlComm.GetInput();
                safearray_inp=variant_inp;
                len=safearray_inp.GetOneDimSize();
                for(k=0;k                         safearray_inp.GetElement(&k,rxdata+k);
                for(k=0;k                 {
                        BYTE bt=*(char*)(rxdata+k);
                        strtemp.Format("%c",bt);
                        m_strEditRXData+=strtemp;
                }
        }
        UpdateData(FALSE);
       
}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
没用过MSComm,搂住自己研究下吧,看哪个函数出错了,查下函数的文档
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
2楼2010-07-02 13:01:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

simthhuang

木虫 (小有名气)

★ ★ ★
zhangqinfu(金币+1):谢谢参与
余泽成(金币+2):谢谢参与应助! 2010-07-05 10:37:06
错误不在mscomm,而在VARIANT、和COLESAFEARRAY的使用上。改成如下形式就OK了:
void CMsCommDlg::OnOnCommMscomm1()
{
        // TODO: Add your control notification handler code here
        COleVariant variant_inp;
       
        if(m_ctrlComm.GetCommEvent()==2)
        {
                variant_inp=m_ctrlComm.GetInput();
                m_strEditRXData = variant_inp.bstrVal;
        }
        UpdateData(FALSE);
}

[ Last edited by simthhuang on 2010-7-4 at 23:11 ]
一贯知足二目远眺三餐有节四季不懒五谷皆食六欲不张七分忍让八方交往九薄烟断十分坦荡
3楼2010-07-04 22:41:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangqinfu

新虫 (初入文坛)

引用回帖:
Originally posted by simthhuang at 2010-07-04 22:41:05:
错误不在mscomm,而在VARIANT、和COLESAFEARRAY的使用上。改成如下形式就OK了:
void CMsCommDlg::OnOnCommMscomm1()
{
        // TODO: Add your control notification handler code here
        COleVariant variant_i ...

改成你的形式之后,显示的是r?r,这是怎么会是呀?
4楼2010-07-09 17:14:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

simthhuang

木虫 (小有名气)

可能是波特率设置不对。
一贯知足二目远眺三餐有节四季不懒五谷皆食六欲不张七分忍让八方交往九薄烟断十分坦荡
5楼2010-07-09 21:31:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cc023061227

新虫 (初入文坛)

★ ★
zhangqinfu(金币+1):谢谢参与
余泽成(金币+1):谢谢参与应助! 2010-07-28 08:25:51
程序没问题。
讲Project->setting ->general  中Uue MFC  in a share dll   改为 static dll
6楼2010-07-27 23:43:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

syh2010

银虫 (小有名气)


zhangqinfu(金币+1):谢谢参与
抱歉啊,我也是初学者。请问下为什么要改成这个,他们各对程序有什么样的影响??
希望一切都能变好!
7楼2010-07-31 20:24:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cc023061227

新虫 (初入文坛)

这个吗  我也不太清楚!!! 哈哈
8楼2010-08-25 19:11:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhangqinfu 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见