vs2005串口通信怎样获取设备串口号

VS2010,VS2005串口控件MSComm加入方法
首先,我用的是VC2010,但在VC2010下没有这个控件,所以要借用一下VC6。控件名是MSCOMM32.OCX,如果安装了VC6或VB6的话,就能在/WINDOWS/System32下找到MSCOMM32.OCX,MSCOMM32.SRG,MSCOMM32.DEP三个文件。如果在开发的机器上没有安装VC6或VB6,同时也没有安装过使用的这个控件,则首先要对这个控件进行注册。注册方法是使用命令regsvr32
MSCOMM32.OCX,比如我就直接把找来的这三个文件放到我的System32下,同时新建一个文本文件,把命令regsvr32
MSCOMM32.OCX写到文本文件中,改扩展名为bat,直接双击这个bat就完成空间注册。另外,为了在VC2005中开发的时候能正常使用这个控件,还需要修改一下注册表,否则会出错。修改方法是将以下内容写到一个文本文件中,扩展名改为reg,然后双击这个文件导入就可以了。(此处注册表修改的内容也可以在MSCOMM32.SRG中找到)
HKEY_CLASSES_ROOT\Licenses = Licensing: Copying the keys
may be a violation of established copyrights.
// Comm Control
6.0 license key
HKEY_CLASSES_ROOT\Licenses\AC2-11cf-8ADB-00AA00C00905
= kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
完成以上的控件注册和注册表的修改后就可以开始程序的开发了。首先新建一个MFC对话框程序。然后在IDE的右侧打开“工具箱”,鼠标右击,在弹出菜单中点击“选择项”,在COM组件下找到Microsoft
Communications
Control,在其前面的选择框中打勾,一个黄色电话图标就会出现在工具箱里,用鼠标把这个图标拖进对话框资源编辑器里,控件就被添加到项目的程序中。
为了便于使用,我们可以给这个控件绑定一个控件变量,比如叫做m_mscomm,程序会自动添加一个CMscomm类封装这个控件,而m_mscomm就是这个类的一个对象。接下来就可以以此控件变量来使用控件了。
在正式开始收发数据前,要给控件设置适当的几个参数来初始化。
首先是指定端口号,使用方法m_mscomm.put_CommPort(1);,参数就是端口号,比如此处程序要使用COM1端口。
然后是波特率、奇偶校验、数据位和停止位,使用方法put_Settings(LPCTSTR
newValue),参数是一个形如”*,*,*,*”字符串,比如我需要波特率4800,无奇偶校验,8位数据位和1作为停止位就可以如此操作,m_mscomm.put_Settings(_T(“4800,
n, 8, 1”))。
m_mscomm.put_RThreshold(1)和m_mscomm.put_SThreshold(0)分别设定接收和发送数据的时候,引发接收数据的OnComm事件时缓冲区中的字符数量,0表示不触发OnComm事件,比如put_RThreshold(1)表示每接收到一个字符就处罚OnComm事件。
m_mscomm.put_InputLen(100)设定当前接收区数据长度为0,表示全部读取。
m_mscomm.put_InputMode(0)用来设定数据接收模式,1表示二进制,0表示文本。
m_mscomm.put_OutBufferSize(1024)和m_mscomm.put_InBufferSize(1024)分别设定输出和接收的缓冲区大小,单位是字节。
比如,现在要接收数据的话,可以如下初始化程序。
view plaincopy to
clipboardprint?
&&&&&&&&&&&
m_mscomm.put_CommPort(1);&&
&&&&&&&&&&
m_mscomm.put_Settings(_T(“4800, n, 8,
&&&&&&&&&&
m_mscomm.put_RThreshold(1);&&
&&&&&&&&&&
m_mscomm.put_SThreshold(0);&&
&&&&&&&&&&
m_mscomm.put_InputLen(100);&&
&&&&&&&&&&
m_mscomm.put_InputMode(0);&&
&&&&&&&&&&
m_mscomm.put_InBufferSize(1024);&&
&m_mscomm.put_CommPort(1);
&&&&&&&&&&&
m_mscomm.put_Settings(_T(“4800, n, 8, 1”));
&&&&&&&&&&&
m_mscomm.put_RThreshold(1);
&&&&&&&&&&&
m_mscomm.put_SThreshold(0);
&&&&&&&&&&&
m_mscomm.put_InputLen(100);
&&&&&&&&&&&
m_mscomm.put_InputMode(0);
&&&&&&&&&&&
m_mscomm.put_InBufferSize(1024);
初始化完成后就可以用m_mscomm.put_PortOpen(TRUE)来打开端口开始接收数据了。
根据我们在RThreshold中设定的参数,程序会在接收到参数中指定的字符后触发一个OnComm事件,我们就需要处理这个事件来提取接收到的数据。我们需要通过查询m_mscomm.get_CommEvent()来确定具体的事件类型,比如可能是发送也可能接收到了数据,比如在此我们要提取接收数据,事件对应的返回值应当是2。然后获得的数据就可以用m_mscomm.get_Input()来获得,这个函数返回一个VARIANT结构变量,如果我们接收的是字符串数据,那就是保存在bstrVal中,比如下面的代码就是在接收到数据时将接收到的字符串保存在str变量中。
view plaincopy to
clipboardprint?
CMScomDlg::OnCommMscomm()&&
&&&&&&&&&&&
&&&&&&&&&&&
在此处添加消息处理程序代码&&
&&&&&&&&&&&
&&&&&&&&&&&
switch(m_mscomm.get_CommEvent())&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
str=CString(m_mscomm.get_Input().bstrVal);&&
&&&&&&&&&&&
&&&&&&&&&&&
default:&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
CMScomDlg::OnCommMscomm()
&&&&&&&&&&&
&&&&&&&&&&&
// TODO: 在此处添加消息处理程序代码
&&&&&&&&&&&
&&&&&&&&&&&
switch(m_mscomm.get_CommEvent())
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
str=CString(m_mscomm.get_Input().bstrVal);
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
} 如果要发送数据的话,只需调用m_mscomm.put_Output(VARIANT
newValue)将保存在newValue中的数据发送出去。在此我们可以使用一个COleVariant类对象来代替直接使用VARIANT类型变量,COleVariant直接提供了将字符串变量转化为兼容VARIANT类型的构造函数,比如我们将数据保存在CString类型的str变量中,然后用COleVariant
包一下送给put_Output
,如m_mscomm.put_Output(COleVariant(str))就可以将str中的字符通过串口发送出去。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。VS2005中串口通信的实现--《信息技术》2009年04期
VS2005中串口通信的实现
【摘要】:串口是常用的计算机与外部串行设备之间的数据传输通道。串行通信使用方便,应用广泛。介绍了串行端口的结构以及串口通信程序开发方法,给出了利用通信控件MSComm实现PC机与设备之间串行通信的程序实例,并描述了在VS2005开发平台中串口通信的实现方法。
【作者单位】:
【关键词】:
【基金】:
【分类号】:TP311.11【正文快照】:
Visual Studio.NET是微软发布的一款量化程度高,功能强大,运用灵活的开发工具。它拥有成千上万的特征和功能,大大提高了开发者的生活效率。它不仅仅是一个代码编写器,编译器,调试器,它还包含了压力测试,分析,代码优化,代码文档整合,生成报告,以及PocketPC等智能设备上的程序
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【共引文献】
中国期刊全文数据库
魏青松,傅汝霖;[J];成都理工学院学报;2001年01期
余强,姚晓光,汪广,黄义雄;[J];电气传动;1999年02期
张玘,张连超,王玉平,杨波,淳静;[J];电子工程师;2001年07期
郭胜江,陈朝阳;[J];电子工程师;2004年03期
吴翠娟;[J];电子工程师;2005年05期
刘国福,张屺,廖巍;[J];电子技术应用;2001年01期
窦立君,薛小锋;[J];福建电脑;2004年05期
杜军,邱瑞学;[J];国外电子元器件;2003年09期
孙林,张杰,杨琳,李海燕,陈勇民;[J];河南科学;2005年05期
吴金龙;[J];华侨大学学报(自然科学版);2000年04期
中国硕士学位论文全文数据库
陈凯;[D];西北工业大学;2001年
郑宇;[D];广西大学;2002年
曾辉;[D];武汉理工大学;2002年
郑长征;[D];武汉理工大学;2003年
章泓;[D];西北工业大学;2002年
余国华;[D];华中科技大学;2004年
张亮;[D];长春理工大学;2005年
郭兆仁;[D];北京化工大学;2007年
丛德文;[D];大庆石油学院;2007年
昌琪;[D];武汉理工大学;2008年
【同被引文献】
中国期刊全文数据库
李娟;[J];国外电子元器件;2005年07期
【相似文献】
中国期刊全文数据库
武力;贾艳丽;张冰洋;徐文;陈亚光;;[J];计算机与数字工程;2011年07期
鄢化彪;万海龙;;[J];电脑知识与技术;2011年25期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
;[J];;年期
中国重要会议论文全文数据库
魏权利;;[A];中国仪器仪表学会测控技术在资源节约和环境保护中的应用学术会议论文集[C];2001年
姚岚;林建涵;张淼;;[A];农业工程科技创新与建设现代农业——2005年中国农业工程学会学术年会论文集第三分册[C];2005年
韩守红;刘永进;傅长铎;;[A];第六届全国计算机应用联合学术会议论文集[C];2002年
中国重要报纸全文数据库
王强;[N];电子报;2002年
陈建华;[N];中国计算机报;2001年
中国硕士学位论文全文数据库
李军;[D];哈尔滨工程大学;2003年
周志坚;[D];吉林大学;2006年
李敏;[D];电子科技大学;2010年
张笑;[D];电子科技大学;2010年
焦瑞萍;[D];太原理工大学;2010年
杨平;[D];吉林大学;2012年
李荀;[D];电子科技大学;2011年
吴凌云;[D];云南大学;2011年
魏胜;[D];广东工业大学;2003年
李海斌;[D];河北工业大学;2002年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备74号用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
前进不会遗憾,若是美好,那叫精彩,若是糟糕,那叫经历!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2129)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'通过串口号获得该串口号对应的设备信息(如设备范例ID等)',
blogAbstract:'本文来自CSDN博客,转载请标明出处:'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}VS2005串口编程示例_百度知道
VS2005串口编程示例
我有更好的答案
百度文库里 有 例程去 搜搜 看
其他类似问题
为您推荐:
您可能关注的推广
vs2005的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁VS2005和Win7系统下编写基于控件的MFC串口程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
VS2005和Win7系统下编写基于控件的MFC串口程序
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢}

我要回帖

更多关于 vs2005串口通信 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信