搜索
bottom↓
12
返回列表 发新帖
楼主: bqmcu

从零开始学VC系列教程 三. 串口通信及自定义消息【恢复】

[复制链接]

出0入0汤圆

发表于 2010-6-16 16:47:14 | 显示全部楼层
回复【99楼】coolwater
-----------------------------------------------------------------------

很是鼓舞人心

出0入0汤圆

发表于 2010-7-8 13:01:01 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2010-7-21 11:15:50 | 显示全部楼层
回复【71楼】jerico

如果我创建的是cformview的时候,好像下面的函数不起作用啊!?程序好像收不到wm_pcomm消息!
///////////////////////////串口中断回调函数//////////////////////////////////  
void callback cntirq(int port)   
{  
        if(::afxgetmainwnd())   
{  
if(::afxgetmainwnd()->m_hwnd)  
{  
::postmessage(::afxgetmainwnd()->m_hwnd,wm_pcomm,0,0);   
}  
}  
}
-----------------------------------------------------------------------

我也遇到这个情况,经调试发现cntirq有被回调,但if(::afxgetmainwnd())  ,永远为0,无法向后发消息,
我修改了发送按扭的代码:
char buf[200];
        int end=sio_read(Port,buf,100);
        if(end)
        {
                CString a,b=L"";
                GetDlgItemText(IDC_EDIT_RECMSG,b);
                buf[end]=0;
                for(int i=0;i<end;i++)
                {
                        a.Format(L"%c",(unsigned char)buf);
                        b+=a;
                }
                SetDlgItemText(IDC_EDIT_RECMSG,b);

                a.Format(L"%d",testirq);
                b=a;
                SetDlgItemText(IDC_EDIT_SEDMSG,b);

发现按发送时可以显示接收到数据,
希望有人指教一下。

出0入0汤圆

发表于 2010-7-21 11:15:51 | 显示全部楼层
回复【71楼】jerico

如果我创建的是cformview的时候,好像下面的函数不起作用啊!?程序好像收不到wm_pcomm消息!
///////////////////////////串口中断回调函数//////////////////////////////////  
void callback cntirq(int port)   
{  
        if(::afxgetmainwnd())   
{  
if(::afxgetmainwnd()-&gt;m_hwnd)  
{  
::postmessage(::afxgetmainwnd()-&gt;m_hwnd,wm_pcomm,0,0);   
}  
}  
}
-----------------------------------------------------------------------

我也遇到这个情况,经调试发现cntirq有被回调,但if(::afxgetmainwnd())  ,永远为0,无法向后发消息,
我修改了发送按扭的代码:
char buf[200];
        int end=sio_read(Port,buf,100);
        if(end)
        {
                CString a,b=L"";
                GetDlgItemText(IDC_EDIT_RECMSG,b);
                buf[end]=0;
                for(int i=0;i<end;i++)
                {
                        a.Format(L"%c",(unsigned char)buf);
                        b+=a;
                }
                SetDlgItemText(IDC_EDIT_RECMSG,b);

                a.Format(L"%d",testirq);
                b=a;
                SetDlgItemText(IDC_EDIT_SEDMSG,b);

发现按发送时可以显示接收到数据,
希望有人指教一下。

出0入0汤圆

发表于 2010-7-21 11:15:52 | 显示全部楼层
回复【71楼】jerico

如果我创建的是cformview的时候,好像下面的函数不起作用啊!?程序好像收不到wm_pcomm消息!
///////////////////////////串口中断回调函数//////////////////////////////////  
void callback cntirq(int port)   
{  
        if(::afxgetmainwnd())   
{  
if(::afxgetmainwnd()-&gt;m_hwnd)  
{  
::postmessage(::afxgetmainwnd()-&gt;m_hwnd,wm_pcomm,0,0);   
}  
}  
}
-----------------------------------------------------------------------

我也遇到这个情况,经调试发现cntirq有被回调,但if(::afxgetmainwnd())  ,永远为0,无法向后发消息,
我修改了发送按扭的代码:
char buf[200];
        int end=sio_read(Port,buf,100);
        if(end)
        {
                CString a,b=L"";
                GetDlgItemText(IDC_EDIT_RECMSG,b);
                buf[end]=0;
                for(int i=0;i<end;i++)
                {
                        a.Format(L"%c",(unsigned char)buf);
                        b+=a;
                }
                SetDlgItemText(IDC_EDIT_RECMSG,b);

                a.Format(L"%d",testirq);
                b=a;
                SetDlgItemText(IDC_EDIT_SEDMSG,b);

发现按发送时可以显示接收到数据,
希望有人指教一下。

出0入0汤圆

发表于 2010-7-21 11:15:52 | 显示全部楼层
回复【71楼】jerico

如果我创建的是cformview的时候,好像下面的函数不起作用啊!?程序好像收不到wm_pcomm消息!
///////////////////////////串口中断回调函数//////////////////////////////////  
void callback cntirq(int port)   
{  
        if(::afxgetmainwnd())   
{  
if(::afxgetmainwnd()-&gt;m_hwnd)  
{  
::postmessage(::afxgetmainwnd()-&gt;m_hwnd,wm_pcomm,0,0);   
}  
}  
}
-----------------------------------------------------------------------

我也遇到这个情况,经调试发现cntirq有被回调,但if(::afxgetmainwnd())  ,永远为0,无法向后发消息,
我修改了发送按扭的代码:
char buf[200];
        int end=sio_read(Port,buf,100);
        if(end)
        {
                CString a,b=L"";
                GetDlgItemText(IDC_EDIT_RECMSG,b);
                buf[end]=0;
                for(int i=0;i<end;i++)
                {
                        a.Format(L"%c",(unsigned char)buf);
                        b+=a;
                }
                SetDlgItemText(IDC_EDIT_RECMSG,b);

                a.Format(L"%d",testirq);
                b=a;
                SetDlgItemText(IDC_EDIT_SEDMSG,b);

发现按发送时可以显示接收到数据,
希望有人指教一下。

出0入0汤圆

发表于 2010-7-21 11:45:35 | 显示全部楼层
回复【107楼】ldskendy2
-----------------------------------------------------------------------
已找到解决方法,环境是在VC2005

解决方法1:
CWnd* m_pCWnd = NULL;
在OnInitDialog里 m_pCWnd = AfxGetMainWnd();
然后把AfxGetMainWnd()替换为m_pCWnd;

解决方法2:
调用AfxGetMainWnd()的地方替换成AfxGetApp()->m_pMainWnd
改后的代码:
---------------------------------------------------------------------
///////////////////////////串口中断回调函数//////////////////////////////////
VOID CALLBACK CntIrq(int port)
{
       
       
//        if(::AfxGetMainWnd())
//        if(AfxGetApp()->m_pMainWnd)
        if(m_pCWnd)
        {
                testirq++;
//                if(::AfxGetMainWnd()->m_hWnd)
                if(AfxGetApp()->m_pMainWnd->m_hWnd)
//                if(m_pCWnd->m_hWnd)
                {
//                        ::PostMessage(::AfxGetMainWnd()->m_hWnd,WM_PCOMM,0,0);
//                        ::PostMessage(AfxGetApp()->m_pMainWnd->m_hWnd,WM_PCOMM,0,0);
                        ::PostMessage(m_pCWnd->m_hWnd,WM_PCOMM,0,0);
                       
                }
        }
}

出0入0汤圆

发表于 2010-8-13 21:36:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-4 12:29:37 | 显示全部楼层
回复【楼主位】bqmcu 飞雪浪子
-----------------------------------------------------------------------

我想把代码移到基于文档程序里.收发咋没反应呢.单片机没问题,用串口调试软件试过好的.
请高手帮我看一下.问题出在哪里.
工程文件ourdev_580274RVHUIU.rar(文件大小:1.90M) (原文件名:com.rar)

出0入0汤圆

发表于 2010-9-4 23:46:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-5 20:37:24 | 显示全部楼层
东西大苏打

出0入0汤圆

发表于 2010-9-7 08:50:13 | 显示全部楼层
谢谢,学习中……

出0入0汤圆

发表于 2010-9-18 18:34:25 | 显示全部楼层
LZ 辛苦了。比书书上写得详细多了。
按步就搬照帖子做下来,不过却没能成功,首先遇到的是:error C2065: 'CntIrq' : undeclared identifier
不知有没人做成功的。   对照了下源码,发现里面有些代码帖子上没写出来。折腾了一天最后还是搞不定,非常郁闷!


(原文件名:ck.JPG)
最近借了两本VC串口通信原书来学习,照着书学MSCOMM控件实例,文档模式对话框模式都把我卡死,随书光盘的源码却可以通过编译,对照着书,发现书上缺少很多细节,能百度的方法都用上了,研究了一星期最后才做出一个,我真的想不通那么重要的细节为什么作者却不写出来?? 我不知道别人是怎么学的,对于我一样的菜鸟反正是越看越上火,害我走了N多弯路,把一个简单的问题搞得非常复杂,TNND真的很想捅几刀写书的。

出0入0汤圆

发表于 2010-9-19 10:56:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-28 07:52:12 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2010-10-8 16:37:40 | 显示全部楼层
敢问一下:Pcomm.dll、Pcomm.Lib和Pcomm.h哪里可以下载啊?

出0入0汤圆

发表于 2010-10-25 21:11:39 | 显示全部楼层
太好了

出0入0汤圆

发表于 2010-11-12 14:08:22 | 显示全部楼层
Pcomm.dll、Pcomm.Lib和Pcomm.h哪里可以下载啊?

出0入0汤圆

发表于 2010-11-12 14:09:44 | 显示全部楼层
Pcomm.dll、Pcomm.Lib和Pcomm.h哪里可以下载啊?
哪位大哥有的话,麻烦发到邮箱sqsuper@126.com

出0入0汤圆

发表于 2010-11-12 16:07:50 | 显示全部楼层
再顶一个!

出0入0汤圆

发表于 2010-11-12 16:50:27 | 显示全部楼层
mark xiexie !

出0入0汤圆

发表于 2010-11-20 17:00:44 | 显示全部楼层
VC正在学习中,先收藏

出0入0汤圆

发表于 2010-11-29 16:44:45 | 显示全部楼层
回复【楼主位】bqmcu 飞雪浪子
-----------------------------------------------------------------------

Pcomm.文件在哪里添加啊??我找不到这个文件。。

出0入0汤圆

发表于 2010-12-1 14:45:16 | 显示全部楼层
点击此处下载 ourdev_601570XEG3RW.rar(文件大小:28K) (原文件名:Pcomm.rar)

我试过了,这个可以的,本来想发图片上来的,结果死活传不上去,所以就不传了,自己下载吧

出0入0汤圆

发表于 2010-12-1 17:03:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-1 19:27:45 | 显示全部楼层
回复【126楼】zhouting928
-----------------------------------------------------------------------

谢谢呀!!

出0入0汤圆

发表于 2010-12-3 14:58:15 | 显示全部楼层
markup

出0入0汤圆

发表于 2010-12-3 17:03:25 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-12-4 15:55:51 | 显示全部楼层
期待

出0入0汤圆

发表于 2010-12-12 18:26:28 | 显示全部楼层
前五章都出来了?

出0入0汤圆

发表于 2010-12-12 18:27:40 | 显示全部楼层
这里有:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3212618&bbs_page_no=1&search_mode=4&search_text=Quavarion&bbs_id=9999

出0入0汤圆

发表于 2010-12-14 15:59:24 | 显示全部楼层
记号.

出0入0汤圆

发表于 2010-12-23 22:02:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-23 23:53:34 | 显示全部楼层
这么好的控件怎么就没有人顶

出0入0汤圆

发表于 2010-12-25 20:49:01 | 显示全部楼层
收下 了!!

出0入0汤圆

发表于 2011-1-13 20:09:29 | 显示全部楼层
mark

出10入12汤圆

发表于 2011-1-14 14:21:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-19 22:33:29 | 显示全部楼层
为什么要转成16进制呢?比如在接收时,要format下。。

出0入0汤圆

发表于 2011-2-27 11:53:00 | 显示全部楼层
为什么还有校验位  单片机和pC的异步通信 好像是10位的 有起始位 没校验位吧

出0入0汤圆

发表于 2011-3-25 10:44:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-25 17:39:04 | 显示全部楼层
好东西

出0入0汤圆

发表于 2011-4-17 10:19:03 | 显示全部楼层
回复【41楼】808cn
-----------------------------------------------------------------------

我也是遇到了同样的问题 release 版本就崩溃 ,一直没解决,要怪就怪自己没仔细读完这个帖子!

出0入0汤圆

发表于 2011-7-2 22:03:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-15 15:16:29 | 显示全部楼层
果断mark

出0入0汤圆

发表于 2011-9-16 10:21:06 | 显示全部楼层
楼主能把第四章以后的链接地址发一下吗?谢谢!

出0入0汤圆

发表于 2011-9-16 15:02:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-6 15:39:16 | 显示全部楼层
回复【楼主位】bqmcu 哆啦A梦
-----------------------------------------------------------------------
太感谢楼主了,虽然我工作3年了,但是刚刚入这行,是个愣头青,还是VC6用的亲切,教程很好。

出20入97汤圆

发表于 2011-11-5 19:13:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-10 16:21:48 | 显示全部楼层
强啊...

出0入0汤圆

发表于 2011-11-12 15:57:31 | 显示全部楼层
感谢楼主

出0入0汤圆

发表于 2011-11-12 16:53:17 | 显示全部楼层
必须MARK

出0入0汤圆

发表于 2011-11-13 12:20:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-13 15:56:08 | 显示全部楼层
回复【楼主位】bqmcu 哆啦A梦
-----------------------------------------------------------------------

mark

出0入0汤圆

发表于 2012-3-4 15:27:12 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2012-4-8 23:22:09 | 显示全部楼层
跟班,慢慢学

出0入0汤圆

发表于 2012-4-9 13:40:29 | 显示全部楼层
还在挖啊?

出0入0汤圆

发表于 2012-4-21 13:31:17 | 显示全部楼层
讲的很好

出0入0汤圆

发表于 2012-5-5 21:17:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-6-6 19:34:56 | 显示全部楼层
正是想要的 多谢楼主啊~

出0入0汤圆

发表于 2012-6-20 14:35:29 | 显示全部楼层
为什么还是不能下载啊?

出0入0汤圆

发表于 2012-6-24 10:07:15 | 显示全部楼层
非常好的东西,正好学习,在此感谢楼主的贡献~

出0入0汤圆

发表于 2012-6-26 10:22:50 | 显示全部楼层
学习到这,我又停止不动了,理解不过来了。。

出0入0汤圆

发表于 2012-6-26 17:09:12 | 显示全部楼层
这么久的写的如今依然有用,的确说明不错

出0入0汤圆

发表于 2012-7-6 14:09:27 | 显示全部楼层
内牛满面
学过一、二后,这三,按步骤一直没有编译过去。。。下载的例程又可以!

出0入0汤圆

发表于 2012-7-6 15:39:55 | 显示全部楼层
一直在这个例程停留,做了几次后。与下载的例程比较后。发在在BOOL CEG03Dlg::OnInitDialog() 函数中,有一点增加
BOOL CEG03Dlg::OnInitDialog()
{
        CDialog::OnInitDialog();

        // 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
        ((CComboBox *)GetDlgItem(IDC_COMPORT))->InsertString(0,"请选择");
        ((CComboBox *)GetDlgItem(IDC_COMPORT))->InsertString(1,"1");
        ((CComboBox *)GetDlgItem(IDC_COMPORT))->InsertString(2,"2");
        ((CComboBox *)GetDlgItem(IDC_COMPORT))->InsertString(3,"3");
        ((CComboBox *)GetDlgItem(IDC_COMPORT))->InsertString(4,"4");
        ((CComboBox *)GetDlgItem(IDC_COMPORT))->InsertString(5,"5");
        ((CComboBox *)GetDlgItem(IDC_COMPORT))->SetCurSel(1);       
        return TRUE;  // return TRUE  unless you set the focus to a control
}
编译过去,没有去收发数据。。但打开其它串口软件时来测试。提示串口占用,说明了程序是打开了串口。。

出0入0汤圆

发表于 2012-7-6 16:58:19 | 显示全部楼层
强!

出0入0汤圆

发表于 2012-7-23 14:12:54 | 显示全部楼层
好贴呀 刚好入手VC。。。

出0入0汤圆

发表于 2012-9-25 16:01:58 | 显示全部楼层
继续收藏···感激楼主

出0入0汤圆

发表于 2013-5-1 23:10:58 | 显示全部楼层
不错呀,顶一个

出0入0汤圆

发表于 2013-8-16 07:11:34 | 显示全部楼层
有完整的串口控制51单片机的出版物就好了
买的单片机与计算机串口通信实践 讲的还是不够详细
主要VC6.0设置的过程要具体就好了
然后又是用的  CF8051F020  89S51多好
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 16:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表