其实参考资料已经写的非常清楚了,哪些方法会触发oncomm事件!
麻烦阁下问问题之前多找资料先!
麻烦阁下问问题之前多找资料先!
解决方案 »
- 在一个窗体中定义的全局变量,为何这个窗体没有show的情况下,窗体中的全局变量依然可以被赋值,可以使用呢?
- 关于声明变量的问题
- 求pegasus smartscan icr v3.0 及ImagXpress 6.0版本
- 高手帮忙,vb调用word生成表格以后,提示“远程服务器不存在或不能使用,不知是何原因?”
- VB中该如何编写这样的键盘事件
- 大家给看看问题在哪里?谢谢
- VB6的Ado控件如何连接远程Access数据库?
- 跪求vb连接公网外sqlserver2000的代码
- 我的程序使用了API REGCREATEVALUE函数实现自动加载,但在卸载后发现键值依然还存在,我该怎么办?
- 如何根据IP地址获得其MAC地址?
- 請大家幫忙看看這是為什么?
- 关于SQL中BETWEEN.....AND
Dim strIn
Dim a, i, j As Integer
Dim TempNumber(10) As String
Dim CardLen As Integer
'如果不是返回 值事件退出
If MSComm1.CommEvent <> 2 Then
Exit Sub
End If
strIn = MSComm1.Input
i = UBound(strIn)
Select Case MSComm1.CommEvent
Case comEvReceive
For j = 1 To i
If strIn(a) = "HD" Then
CardLen = 0
Exit For
End If
TempNumber(CardLen) = Hex(strIn(a))
SBar.Panels(2).Text = SBar.Panels(2).Text & Hex(strIn(a)) & " "
CardLen = CardLen + 1
Next j
'处理划卡
Case comEvSend
...
Case comEvRing
...
End Select
End Sub
不行啊,我把你的代码复制过来还是不响应。
但是这样安全吗?
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
If Err = 8002 Then
MsgBox "网卡通讯口设置错误,请重新设置!", 16, "错误"
Exit Sub
End If
If Err = 8005 Then
MsgBox "网卡通讯口设置错误,串口" & MSComm1.CommPort & "已被其它程序占用,请重新设置!", 16, "错误"
Exit Sub
End If
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
你也可以通过oncomm来触发,前提是Rthreshold和Sthreshold属性不能为0,如果为0了,comEvReceive和comEvSend事件就无效。
数量的限制一般跟硬件方面是有传输的通讯协议的,按照格式发送和接收。
但是我发现一个很奇怪的问题,就是我不能连续发2个码给对方,否则的话就要丢失一部分的码。
如第一次发了“1234567”,然后紧接着发“ABCDEFG”的话
接收方会收到“1234567A”
我定义的inbuffersize=7
而且每次发送前,接收后,我都会把各自的inbuffercount和outbuffercount清零的。怎么还会收到多的呢?
If strIn(a) = "HD" Then
CardLen = 0
Exit For
End If
它是我临时规定的协议,当遇到HD时候,我认为一个串已经完成了。你自己定义好协议做什么都行了.
你是把收到的字符一个一个的存到字符数组里的,我是直接拿来用的:inString=com2.input
呵呵,然后就对inString操作就可以了。
我现在已经基本解决我的通信问题了,差不多达到要求了,至于完善嘛,要看实际应用了,呵呵,谢谢。