给你说说如何终止Mscomm(是程序终止而非关闭).它时时刻刻是开着的(不管你刷几张卡),除非退出程序. Private Sub MSComm1_OnComm() 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我的是[email protected]
To: 风浪 你的方法应该可以,说白了我还是想用Mscomm 顺便问一下,要产生 Private Sub MSComm1_OnComm() End Sub 事件的前提,是不是一定要在本程序里Mscomm1打指定端口,就是用Mscomm2打开都没用? 如果是这样子的话,在另一个程序里用Mscomm读取Modem的数据就难办了?
哎~~~~,如果你真的认为2个程序可以同时对COM操作的话我也没办法帮你了(不要钻牛角尖)程序,程序,何谓程序.打到目的的方法.对Private Sub MSComm1_OnComm()操作的前提是对它初始化.打开指定的端口,程序完成可以关闭,在开新的端口.
我主要不是想控控制Modem.
我是在想,假如用Mscomm控件读取Com口数据(只是读取不用写),当然Com口已经打开,并且里面有数据。而我又不能用Mscomm来打开读取,那该怎样读取呢?这个问题已经困恼了我很久了?希望高手指点指点!
我是想直接读取地址里的数据呀
To: metin()
关闭Mscomm后,缓冲区里的数据还会在吗?
还有,那些刷卡机是不是刷一次卡时先打开Com口,刷完后再关闭它。
那数据就留在缓冲区里,我们就可以用Msomm打开Com口,读取其中的数据,是这样子吗?
to sunshinecom21(用VB):当然不在了,有网卡进行暂时存储就没问题了吧.还有别的方法 .
还有,刷卡机当然不关闭COM了,那样不累死它呀!我是这样做的定义一个通讯协议(不知道你们了解吗?通讯协议就是定义硬件和软件的接口动作的)
说明白点儿吧,如我定义AH开头的BH结尾的串,我认为是卡号.
谢谢你的热情参与!
我想知道更详细的知识,因为我真的很想知道如何用Mscomm读取刷卡数据,那个"通讯协议"该如何写。
我想"定义AH开头的BH结尾的串,认为是卡号" 的前提,还是要先读取它的数据吧?
E_mail : [email protected]
你的E_mail呢?,在线等待...
你还在吗?
Private Sub MSComm1_OnComm()
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我的是[email protected]
To: dreameasy(自由哥哥) 你那份可以给我参考吗?
To: dreameasy(自由哥哥) 你那份可以给我学习吗?
当然有了,不过有些为难!其实通讯程序设计和你用什么卡机没有太大的关系.(磁卡,射频卡,光电卡,指纹卡,等等)它们都有自己通讯模式.你想做的"自动和手动的刷卡待机模式"不知道自动是什么意思对于读卡命令发出并且刷卡后返回的数值是什么格式的?应该是2进制机器码吧,不太清楚.用Hex(strIn(a))以后为16进制数据.你在转换10进制应该不是问题了.
再次感谢你!
我的问题还是没有解决!
我目前只有Modem,我想在一个程序里用Mscomm打开它并拨号。而我又想在另个一个程序里读取所拨的数据(当然在一个程序里是可以实现)?有办法吗?
上午在线...
你的方法应该可以,说白了我还是想用Mscomm
顺便问一下,要产生
Private Sub MSComm1_OnComm()
End Sub
事件的前提,是不是一定要在本程序里Mscomm1打指定端口,就是用Mscomm2打开都没用? 如果是这样子的话,在另一个程序里用Mscomm读取Modem的数据就难办了?