智能车制作

标题: 上位机设计Step By Step——基于 MFC 的飞思卡尔智能车上位机设计 [打印本页]

作者: 模拟cmos    时间: 2012-3-25 13:45
标题: 上位机设计Step By Step——基于 MFC 的飞思卡尔智能车上位机设计
本帖最后由 模拟cmos 于 2012-3-25 13:54 编辑

众所周知,上位机在智能车调试中起着重要作用,尤其是通过无线串口,实现数据实时发送接收,极大方便了智能车调试。
作者以VC6.0为平台使用微软MFC,简单介绍串口上位机设计,抛砖引玉。
STEP1.新建MFC工程
[attach]21211[/attach]

如果觉得论坛看着不舒服
下载pdf文档[attach]21229[/attach]
本例源代码[attach]21228[/attach]


补充内容 (2012-3-31 16:42):
清明~~~小长假 大促销 全场6折!!!!!!!!!!!!!!!!!!!!!!!
店主一定尽最大努力提供给你 最可靠的技术支持!
作者: 模拟cmos    时间: 2012-3-25 13:47
STEP2.加入串口类
VC6.0进行串口开发主要有两种方式,一种是利用微软控件MScomm,一种是利用开源类CSerialPort。但是前者编译生成的程序在其他电脑上运行还要注册控件,略显麻烦。而后者属于对windows API封装,使用方便,兼容性强。本文重点介绍CSerialPort的使用。
http://www.naughter.com/serialport.html下载最新CSerialPort类,工程中添加.h 和.cpp文件,如下图。
[attach]21219[/attach]
在serialDlg.cpp和 serialDlg.h中包含Cserialport头文件
[attach]21220[/attach]
同时在serialDlg.h中 定义对象 CSerialPort  m_SerialPort; //CSerailPort类对象
[attach]21221[/attach]


作者: 模拟cmos    时间: 2012-3-25 13:49
STEP3. Cserialport必备函数
  1.    // port initialisation                                                                     
  2.        BOOL CSerialPort::InitPort(CWnd* pPortOwner, // the owner (CWnd) of the port (receives message)
  3.                                              UINT  portnr,          // portnumber (1..4) 串口号
  4.                                              UINT  baud,            // baudrate波特率
  5.                                              char  parity,            // parity 效验方式
  6.                                              UINT  databits,              // databits 数据位
  7.                                              UINT  stopbits,              // stopbits 停止位
  8.                                              DWORD dwCommEvents,       // EV_RXCHAR, EV_CTS etc
  9.                                              UINT  writebuffersize)    // size to the writebuffer      // start/stop comm watching
  10.        BOOL             StartMonitoring();
  11.        BOOL             RestartMonitoring();
  12.        BOOL             StopMonitoring();
  13.        void               WriteToPort(char* string,int n);
复制代码



作者: 模拟cmos    时间: 2012-3-25 13:49
STEP4.窗口布局
[attach]21222[/attach]
设置成员变量(Ctrl+W ),四个编辑框对应四个UNIT成员变量
[attach]21223[/attach]


作者: 模拟cmos    时间: 2012-3-25 13:50
STEP5.串口初始化
OK,所有前期工作准备完成,开始串口操作
按钮“打开串口”,双击,创建消息函数void CSerialDlg::OnOpenserial()
实现串口初始化,代码如下
  1. void CSerialDlg::OnOpenserial()
  2. {
  3.     if(m_SerialPort.InitPort(this, 1, 9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512))
  4.        {
  5.               m_SerialPort.StartMonitoring();
  6.               AfxMessageBox("com1打开,9600波特率,8位,无验证");
  7.        }
  8.        else
  9.        {
  10.               AfxMessageBox("没有发现此串口或被占用");
  11.        }
  12. }
复制代码

按钮“关闭串口”,双击,创建消息函数void CSerialDlg::OnCloseserial()
函数功能为进行串口初始化,代码如下
  1. void CSerialDlg::OnCloseserial()
  2. {
  3.        m_SerialPort.ClosePort();//关闭串口     
  4. }
复制代码

STEP6.串口数据发送
按钮“发送”,双击,创建消息函数,代码如下
  1. void CSerialDlg::OnSend()
  2. {     
  3.        unsigned char buf[2];
  4.        UpdateData(TRUE); //读入编辑框中的数据
  5.        buf[0]=m_send1;
  6.        buf[1]=m_send2;
  7.        m_SerialPort.WriteToPort(buf,2);
  8. }
复制代码



作者: 模拟cmos    时间: 2012-3-25 13:52
STEP7.串口数据接收
手工建立WM_COMM_RXCHAR的消息映射处理函数OnComm()
首先在serialDlg.h中添加响应函数声明
[attach]21224[/attach]
在serialDlg.cpp中添加消息响应
[attach]21225[/attach]
在serialDlg.cpp中添加OnComm()函数
  1. LONG CSerialDlg::OnComm(WPARAM ch, LPARAM port)//此函数接收到一个字符执行一次
  2. {
  3.        static int count=0;//计数用
  4.        static unsigned char buf[2]; //存储数据用
  5.        if(count==0)
  6.        {      m_rec1=ch;
  7.               count=1;
  8.        }
  9.        if(count==1)
  10.        {      m_rec2=ch;
  11.               count=0;
  12.        }
  13.        UpdateData(FALSE);//写入编辑框
  14. return 0;
  15. }
复制代码

At last,VC串口通讯程序基本功能,打开串口,关闭串口,接收数据,发送数据均以完成。
在此基础上,你可以添加复选框,选择串口号,选择波特率,可以添加图片框,显示图像,可以利用mfc绘图功能绘制速度曲线,pwm曲线。Vc6.0虽然已经被更先进的工具取代,但是作为一代经典,其功能还是非常强大的。掌握了vc6.0 ,无论c#还是QT,上手还是很快的。
当然,如果你没有兴趣或者没有时间去为智能车做一个上位机,那么访问作者淘宝店,我已经做好了成品,经过几个版本的修正,基本成熟,欢迎访问http://xiaohaizhu.taobao.com/

附:此例源代码[attach]21226[/attach]
PDF版教程[attach]21227[/attach]


作者: youmin90s    时间: 2012-3-25 14:23
顶一个
作者: Goolloo    时间: 2012-3-25 14:39
楼主很强大
作者: 我想换个ID    时间: 2012-3-25 15:34
顶顶`~~~
作者: 模拟cmos    时间: 2012-3-25 15:47
Goolloo 发表于 2012-3-25 14:39
楼主很强大

呵呵  谢谢

作者: 荔枝糖葫芦    时间: 2012-3-25 16:58
+ 1
作者: 模拟cmos    时间: 2012-3-25 19:21
荔枝糖葫芦 发表于 2012-3-25 16:58
+ 1



作者: 王其奇    时间: 2012-3-25 20:04
非常感谢啊


作者: 模拟cmos    时间: 2012-3-25 21:15
我想换个ID 发表于 2012-3-25 15:34
顶顶`~~~



作者: 代舜    时间: 2012-3-27 13:43
学习
作者: 南宫不凡    时间: 2012-3-27 14:33
很好的软件
作者: ieexplorer    时间: 2012-3-27 15:22
虽然是软广告,但是还是学习了,以前自己用API实在是太疼了,学习楼主
作者: 模拟cmos    时间: 2012-3-27 22:02
ieexplorer 发表于 2012-3-27 15:22
虽然是软广告,但是还是学习了,以前自己用API实在是太疼了,学习楼主

呵呵  确实是软广告,赚点钱
作者: 模拟cmos    时间: 2012-3-28 12:35

作者: 野火    时间: 2012-3-28 18:21
楼主强大啊……o(∩_∩)o 哈哈,有空也研究研究
作者: 小木偶    时间: 2012-3-28 18:28

作者: 模拟cmos    时间: 2012-3-28 20:04
3Q
作者: IT天下    时间: 2012-3-28 22:49
顶个
作者: linjk    时间: 2012-3-29 00:43
不错!
作者: 模拟cmos    时间: 2012-3-29 09:24

作者: 模拟cmos    时间: 2012-3-29 15:59

作者: 模拟cmos    时间: 2012-3-30 12:41

作者: cjinxing    时间: 2012-3-30 13:23

作者: 模拟cmos    时间: 2012-3-30 21:29

作者: 模拟cmos    时间: 2012-3-31 10:19

作者: 模拟cmos    时间: 2012-3-31 16:42

作者: 海驹    时间: 2012-3-31 22:19
必须顶一下
作者: 模拟cmos    时间: 2012-4-1 09:24

作者: 模拟cmos    时间: 2012-4-10 13:07

作者: 木未    时间: 2012-4-11 23:41
真心很强大啊~~~
作者: 模拟cmos    时间: 2012-4-15 18:28

作者: 模拟cmos    时间: 2012-4-29 21:31

作者: 87外泄    时间: 2012-5-17 20:21
强大
作者: 模拟cmos    时间: 2012-5-22 10:07

作者: lsdoo·    时间: 2012-5-22 10:30
顶,即教学也做了广告,这样的商家还是不错的
作者: 840149319    时间: 2012-5-22 17:04

作者: xiayayun    时间: 2012-5-22 22:28
这个很给力
作者: eve昔枫    时间: 2012-5-22 22:57
LZ强大!学习了
作者: 模拟cmos    时间: 2012-5-24 16:43

作者: …Danger……    时间: 2012-5-24 21:39

作者: usst313    时间: 2012-6-6 23:38
谢谢 正需要!
作者: 模拟cmos    时间: 2012-6-12 21:54
:)
作者: 仙帝将王    时间: 2012-7-3 11:20
求详细教程
作者: bluered    时间: 2012-7-4 00:21
自己学习制作吧。
作者: 柯南一梦    时间: 2012-7-4 15:54
强大。。
作者: bluered    时间: 2012-7-12 22:33
感谢楼主!!起码有了思路
作者: wang505    时间: 2012-8-2 14:19
谢谢
作者: 有-木-友    时间: 2012-8-12 01:13
好东西!!!先mark了!!
作者: bhwxl    时间: 2012-10-16 21:40
谢谢楼主
作者: Newborn    时间: 2012-12-7 22:52
支持楼主!
作者: pangfumin    时间: 2012-12-8 19:47
楼主,可以继续做一些显示图片的工作
作者: pangfumin    时间: 2012-12-8 22:36
e,楼主,都木有多线程支持啊
作者: 强者    时间: 2013-1-25 18:58
真心谢谢你啊!!!!LZ辛苦了啊
作者: 葱葱哥    时间: 2014-3-2 21:59
楼主很强大




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2