我用交叉线做一个自收发的程序,
代码如下:Private Sub RComm_OnComm()
If RComm.CommEvent = 2 Then
RsTxt.Text = RComm.Input
End If
SComm.PortOpen = False
RComm.PortOpen = False
End SubPrivate Sub SdCmd_Click()
SComm.CommPort = 1
SComm.Settings = "115200,n,8,1"
SComm.SThreshold = 1
SComm.PortOpen = TrueRComm.CommPort = 2
RComm.Settings = "115200,n,8,1"
RComm.InputMode = 0
RComm.PortOpen = True
RComm.RThreshold = 1SComm.Output = SdTxt.Text
End Sub现在我的问题是:
如果发送的数据为空,
我按两次发送按钮的时候,第二次会发生错误,
说端口已经打开。
我的想法是,第一次发送数据的时候,
运行到SComm.Output = SdTxt.Text
的时候已经触发了RComm_OnComm()事件了,
(因为我在它后面加msgbox RComm.CommEvent返回2。)
而如果触发了RComm_OnComm()事件,端口就应该被关闭呀。
为什么事实上没有被关闭呢?
代码如下:Private Sub RComm_OnComm()
If RComm.CommEvent = 2 Then
RsTxt.Text = RComm.Input
End If
SComm.PortOpen = False
RComm.PortOpen = False
End SubPrivate Sub SdCmd_Click()
SComm.CommPort = 1
SComm.Settings = "115200,n,8,1"
SComm.SThreshold = 1
SComm.PortOpen = TrueRComm.CommPort = 2
RComm.Settings = "115200,n,8,1"
RComm.InputMode = 0
RComm.PortOpen = True
RComm.RThreshold = 1SComm.Output = SdTxt.Text
End Sub现在我的问题是:
如果发送的数据为空,
我按两次发送按钮的时候,第二次会发生错误,
说端口已经打开。
我的想法是,第一次发送数据的时候,
运行到SComm.Output = SdTxt.Text
的时候已经触发了RComm_OnComm()事件了,
(因为我在它后面加msgbox RComm.CommEvent返回2。)
而如果触发了RComm_OnComm()事件,端口就应该被关闭呀。
为什么事实上没有被关闭呢?
解决方案 »
- 这几天老是有人问我图像获取的问题,其实这个问题很多人都回答过,我也总结过,可能没有写在CSDN的博客上,这里在转发一下,希望大家不要在为这个问题加我了。
- 我用vb打包后,在其它机器上出现.
- 我想做个程序,在我机子上运行,并且可以记录下我机子的键盘操作。
- 如何提高Access数据库读取速度??高手进(100分)在线等~~
- 很奇怪的Picture~~~帮忙看看~
- 关于启动问题.
- 请教朋友
- ???????如何统一时间格式?在线等待!!
- 关于用VB写通讯程序
- 如何实现dbgrid控件与combobox控件的结合
- 怎样监测另外一台机器的当前运行的进程???请高手指教~
- winsock的RemoteHost=xx,xx为IP地址时出错而用主机名时正常,在线等??????
当然不会关闭了,需要用MSComm1.PortOpen = False关闭所以当你点击一次按钮,串口连接并发送信息,而你第二次点击按钮,又会用PortOpen=true ,于是就报错了。正确的用法是,串口打开只一次,比如放到form_load里,按扭的事件只是发送。退出的时候加上MSComm1.PortOpen = False
就可以了
==============
这是你理解的错误 :)
没关的原因我想是因为没有触发RComm_OnComm()事件,
但我调试的时候它明明返回的是2,就是说已经触发了这个事件,
那到底是触发了还是没触发呢?郁闷~~~
if not SComm.PortOpen then SComm.PortOpen = True
方法象 samwzhang(分全给我)就可以了,看看有错没还