智能车制作
标题: 上位机设计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的使用。 [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必备函数
- // port initialisation
- BOOL CSerialPort::InitPort(CWnd* pPortOwner, // the owner (CWnd) of the port (receives message)
- UINT portnr, // portnumber (1..4) 串口号
- UINT baud, // baudrate波特率
- char parity, // parity 效验方式
- UINT databits, // databits 数据位
- UINT stopbits, // stopbits 停止位
- DWORD dwCommEvents, // EV_RXCHAR, EV_CTS etc
- UINT writebuffersize) // size to the writebuffer // start/stop comm watching
- BOOL StartMonitoring();
- BOOL RestartMonitoring();
- BOOL StopMonitoring();
- 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()
实现串口初始化,代码如下
- void CSerialDlg::OnOpenserial()
- {
- if(m_SerialPort.InitPort(this, 1, 9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512))
- {
- m_SerialPort.StartMonitoring();
- AfxMessageBox("com1打开,9600波特率,8位,无验证");
- }
- else
- {
- AfxMessageBox("没有发现此串口或被占用");
- }
- }
复制代码
按钮“关闭串口”,双击,创建消息函数void CSerialDlg::OnCloseserial()
函数功能为进行串口初始化,代码如下
- void CSerialDlg::OnCloseserial()
- {
- m_SerialPort.ClosePort();//关闭串口
- }
复制代码
STEP6.串口数据发送
按钮“发送”,双击,创建消息函数,代码如下
- void CSerialDlg::OnSend()
- {
- unsigned char buf[2];
- UpdateData(TRUE); //读入编辑框中的数据
- buf[0]=m_send1;
- buf[1]=m_send2;
- m_SerialPort.WriteToPort(buf,2);
- }
复制代码
作者: 模拟cmos 时间: 2012-3-25 13:52
STEP7.串口数据接收
手工建立WM_COMM_RXCHAR的消息映射处理函数OnComm()
首先在serialDlg.h中添加响应函数声明
[attach]21224[/attach]
在serialDlg.cpp中添加消息响应
[attach]21225[/attach]
在serialDlg.cpp中添加OnComm()函数
- LONG CSerialDlg::OnComm(WPARAM ch, LPARAM port)//此函数接收到一个字符执行一次
- {
- static int count=0;//计数用
- static unsigned char buf[2]; //存储数据用
- if(count==0)
- { m_rec1=ch;
- count=1;
- }
- if(count==1)
- { m_rec2=ch;
- count=0;
- }
- UpdateData(FALSE);//写入编辑框
- return 0;
- }
复制代码
At last,VC串口通讯程序基本功能,打开串口,关闭串口,接收数据,发送数据均以完成。
在此基础上,你可以添加复选框,选择串口号,选择波特率,可以添加图片框,显示图像,可以利用mfc绘图功能绘制速度曲线,pwm曲线。Vc6.0虽然已经被更先进的工具取代,但是作为一代经典,其功能还是非常强大的。掌握了vc6.0 ,无论c#还是QT,上手还是很快的。
附:此例源代码[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 |