- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC串口通信(接收).doc
VC++MSComm串口接收程序制做(原创)
2010-6-21 11:09:25 制作者 济南职业学院 电子工程系 电气二班 朱志强
参考程序:龚建伟技术之串口调试助手源程序。
原地址:
本程序是一个简单的基于windows的程序。
学习了VC就是为了整出来个上位机软件,现在总算是有点收获了……
抄别人的程序,把接收部分的程序作出来了。。。。和大家分享一下吧,菜鸟们自己摸索着学真的是好辛苦啊…………
这个程序可以接收4×4键盘的按键号,在电脑上显示出16进制的数据。
下面是做的具体步骤:
1.新建工程
启动VC6 ,创建一个基于对话框的可执行工程,名为串口接收。如图1。
图1 新建工程
2.进入了窗口界面后,直接删除TODO:那行的控件。如图2。
图2 删除控件
3.加入MSComm控件
工程 添加到工程 Components and Controls… 我用的是中文版,新手嘛,用中文版的有利于初学啊…… 。弹出如图3对话框。
图3 添加MSComm控件
按照图上所选的,打开寻找MSComm控件即可。如图4所示。(注意:安装的软件要是小于100MB的绿色版软件是没有这两个文件夹的,估计需要手动添加,具体的步骤我不知道,大家要是找不到的话,可以去网上找找。或者和我一样,下载一个破解安装版的。)
图4 MSComm控件(小电话)
图5 确定添加MSComm控件?
图6 点击OK
添加完之后就可以在控件里找到了。如图7:
图7 MSComm控件添加完成
4.给对话框添加控件
添加的控件为一个编辑框和一个MSComm控件。
添加MSComm控件的方法是直接把它拖进编辑框里既可以了。运行后不会显示那个小电话的图标。
添加后就如图8所示。
图8 添加控件
5.设置控件的属性和添加变量。
首先是设置编辑框的属性,为多行,垂直滚动。如图9所示。
图9 设置编辑框的属性
图10 编辑框效果
下面更改一下控件的名字,把编辑框的ID改为IDC_EDIT_RXDATA,如图11所示。改动的方法是右击编辑框,选择属性。
图11 更改编辑框ID
随后是添加变量,打开类向导(Ctrl+W),为编辑框添加CString变量m_strRXData,为MSComm控件(IDC_MSCOMM1)CMyDlg::OnInitDialog 打开串口,加入如下代码:
// TODO: Add extra initialization hereif m_ctrlComm.GetPortOpen m_ctrlComm.SetPortOpen FALSE ;m_ctrlComm.SetCommPort 1 ; //选择com1if !m_ctrlComm.GetPortOpen m_ctrlComm.SetPortOpen TRUE ;//打开串口elseAfxMessageBox cannot open serial port ;m_ctrlComm.SetSettings 9600,n,8,1 ; //波特率9600,无校验,8个数据位,1个停止位
m_ctrlComm.SetInputModel 1 ; //1:表示以二进制方式检取数据m_ctrlComm.SetRThreshold 1 ;?//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlComm.SetInputLen 0 ; //设置当前接收区数据长度为0m_ctrlComm.GetInput ;//先预读缓冲区以清除残留数据
//*****************************代码来源同上(未作修改)
这个代码使用了几次,发现不大适合我安装的VC6,因为这个代码来自的文章是2001年发表的,现在都是2010 年了。。。。呵呵,不过也可能你的不会出现这种情况。
在直接进行编译的时候,系统会提示有一个错误。错误如图17.
图17 编译中出现的错误2
出现这种错的原因是我的vc6的版本中没有使用程序设置MODE的选项。。。所以只有注销掉这句话,手动设置。方法是打开MSComm控件的属性。如图18、19所示。
图18 COMM属性1
图19 COMM属性2
从图19可以看出,没有MODE项!!!!!只能在全部里面设置了……如图20。
图20 COMM属性3
这样设置完之后,那句话注销了就可以了……如图21所示。
图21 修改二进制方式后编译结果
好了,现在在编译一下,没有错误了……这个小程序也可以用了。打开之后,它自动占用COMM1口,用单片机连接comm1口,发送数据,程序运行结果如图22所示。
图22 接收效果
如果函数中的%02x改为大写%02X,如图23
文档评论(0)