VB 为什么在使用MSComm控件之前要先进行判断,然后再对端口号进行处理,然后再打开.
问题的侧重点在为什么要先判断,可不可以用删除上面的第一行和第三行,即不判断,而直接把端口关上。事实证明不可以,否则出现错误“端口未打开”(我的目的就是要先关上端口啊),谁...
问题的侧重点在为什么要先判断,可不可以用删除上面的第一行和第三行,即不判断,而直接把端口关上。事实证明不可以,否则出现错误“端口未打开”(我的目的就是要先关上端口啊),谁知道这是什么原因?为什么必须用if判断一下?
展开
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
端口在未打开的情况下是无法执行关闭操作的,就像一盏灯在未打开的状态下也是无法对它进行关闭的,正确的流程是:如果灯开着,那么关闭它,否则就默默飘过,什么也不用干。
有些控件在遇到同样情况时,会自动进行容错处理,就是说如果指定的设备或端口已关闭,会自动忽略用户的关闭命令,也就是说这时候程序仍然可以发出关闭命令,只不过是没有任何效果而已。但是MSComm这个控件也许是年代太久远,也许是它本身就是这样的设计理念,总之它没有上述的智能容错功能,所以就只能通过程序来判断了。
有些控件在遇到同样情况时,会自动进行容错处理,就是说如果指定的设备或端口已关闭,会自动忽略用户的关闭命令,也就是说这时候程序仍然可以发出关闭命令,只不过是没有任何效果而已。但是MSComm这个控件也许是年代太久远,也许是它本身就是这样的设计理念,总之它没有上述的智能容错功能,所以就只能通过程序来判断了。
追问
MSComm控件的portopen属性是否该理解成和enable一样的属性呢?即控制这个控件的有效性,从上面那个代码来看,在判断之前根本不用考虑我当前的commport等于几,即portopen属性和我选择的是哪个串口无关,我这样理解对吗?大神
追答
不对,因为同一个MSComm控件在某一个时刻只能控制一个端口,所以PartOpen属性所关联的就是当前CommPort属性所指定的那个串口,并不是说与串口无关的。另外,CommPort是有默认值(即1),即使你在操作PartOpen之前未对CommPort属性进行任何改动,也并不意味着就没有当前端口,其实这时候你操作的就是串口1
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询