怎样将串口收发数据 作成一个别的程序调用的dll啊一无所之 请各位详细指导谢谢了
解决方案 »
- vb界面置顶与取消
- ListView1.Icons = Me.ImageList1提示说:Invalid object(无效对象)
- 高手请进!!!!问题解决不了...在线等!!!!
- LoadImage 用法(在线等...)
- vb问题,请指教,
- https://www.macau-slot.com/cust?action=dflt_sgl&ev_class_id=18
- 学了一段时间的VB,兄弟们给我很大的帮助,现在要重回c的阵营.给我帮助最大的(分,我来了)..如果看到这个帖子,请来拿我的最后一份祝福100分.
- 专家急救!如何用WEBBROWSE获取一个网页内多个被选中的CHECK按钮后面相关的标题与连接地址啊?
- 怎么把一目录下所有文件(包括子目录)显示出来
- 有没有将 Flash文件转换成 .dat 格式的软件??
- 奇怪,WebBrowser控件的WebBrowser.ToolBar属性不可用???在线等...
- 怎么根据表中的自动编号的那个关键字段来更改当前记录呢
如果不行,我发给你也可以!
End Sub
这里面怎样写代码 mscomm的oncom事件怎样触发啊
它传输时就象时间控件一样,自动激活.
Option Explicit
Private Declare Function GetCurrentTime Lib "kernel32" Alias "GetTickCount" () As Long'*************************************************************************
Private Sub cmdSend_Click()
Dim bytData(10) As Byte
bytData(0) = &HA 'Êý¾Ý
txtMsg.Text = SendData(1, bytData, 1) '·¢ËÍÃüÁî
End Sub
Private Sub Form_Load()
OpenPort 1 '´ò¿ª´®¿Ú
End Sub'*************************************************************************
Public Function OpenPort(PortNo As Integer, Optional InBufferSize As Integer = 1024, Optional OutBufferSize As Integer = 512) As Long
On Error GoTo ErrExit
MSComm1.CommPort = PortNo '²ÉÓÃCOM¶Ë¿Ú
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeBinary '²ÉÓöþ½øÖÆ´«Êä
MSComm1.NullDiscard = False 'NULL×Ö·û´Ó¶Ë¿Ú´«Ë͵½½ÓÊÜ»º³åÇø
MSComm1.DTREnable = False 'DTRÏßÎÞЧ
MSComm1.EOFEnable = False '²»Ñ°ÕÒEOF·û
MSComm1.RTSEnable = False 'RTSÏßÎÞЧ
MSComm1.InBufferCount = 0 'Çå¿Õ½ÓÊÜ»º³åÇø
MSComm1.OutBufferCount = 0 'Çå¿Õ´«Ê仺³åÇø
MSComm1.SThreshold = 1 'Èç¹û´«Ê仺³åÇøÍêÈ«¿Õʱ²úÉúMSCommʼþ
MSComm1.RThreshold = 0 '²»²úÉúMSCommʼþ
MSComm1.InBufferSize = InBufferSize '½ÓÊÕ»º³åÇø ĬÈÏΪ1024¸ö×Ö½Ú
MSComm1.OutBufferSize = OutBufferSize '·¢ËÍ»º³åÇø ĬÈÏΪ512¸ö×Ö½Ú
MSComm1.PortOpen = True '´ò¿ª¶Ë¿Ú
OpenPort = 0
Exit Function
ErrExit:
OpenPort = 1
End Function
'*************************************************************************
Public Sub ClosePort()
On Error GoTo ErrExit
MSComm1.PortOpen = False '¹Ø±Õ¶Ë¿Ú
Exit Sub
ErrExit:
End Sub'*************************************************************************
Public Function SendData(bytAddr As Byte, bytData() As Byte, Optional bytNum As Byte = 1) As Long
On Error GoTo ErrExit Dim bytSendArray() As Byte '·¢ËÍÊý¾Ý»º³åÇø
Dim intGetDataLen As Integer 'Òª½ÓÊÕµÄÊý¾Ý³¤¶È
Dim sngTimeSpace As Single 'ÑÓʱʱ¼ä
Dim sngTime As Single
Dim bytReceiveArray() As Byte '½ÓÊÕµÄÊý¾Ý
Dim VarReceiveData As Variant '½ÓÊյıäÌåÊý¾Ý Dim i As Long ReDim bytSendArray(0 To bytNum * 2 + 2) As Byte '·¢ËÍÊý¾Ý»º³åÇø bytSendArray(0) = &HAC 'ͬ²½×ÖÍ·
bytSendArray(1) = bytAddr 'ÏÂλ»úµØÖ·
bytSendArray(2) = bytAddr '¸±±¾ 'Êý¾Ý
For i = 0 To bytNum * 2 - 1 Step 2
bytSendArray(i + 3) = bytData(i / 2)
bytSendArray(i + 4) = bytData(i / 2)
Next MSComm1.InBufferCount = 0 'Çå¿Õ½ÓÊÕ»º³åÇø
MSComm1.Output = bytSendArray '·¢ËÍÊý¾Ý Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0 'µÈ´ý£¬Ö±µ½Êý¾Ý·¢ËÍÍê±Ï intGetDataLen = 5
sngTimeSpace = intGetDataLen * (11000# / 9600#) * 10# sngTime = GetCurrentTime() ' Do While True 'Êý¾Ý½ÓÊÕ DoEvents
If MSComm1.InBufferCount >= intGetDataLen Then Exit Do '³¬Ê±´¦Àí
If Abs(GetCurrentTime() - sngTime) > sngTimeSpace Then '³¬Ê±
SendData = 1
Exit Function
End If Loop VarReceiveData = MSComm1.Input
bytReceiveArray = VarReceiveData '·µ»Ø֡УÑé
SendData = 2 'Ïȸ³Öµ½ÓÊÕµÄÊý¾Ý´íÎó
If bytReceiveArray(0) = &HAC Then '×ÖÍ·
If bytReceiveArray(1) = bytReceiveArray(2) And bytReceiveArray(3) = bytReceiveArray(4) Then
'Õ¾ºÅ£¬ÃüÁîÅжÏ
If bytReceiveArray(1) = bytSendArray(1) And bytReceiveArray(3) = &HAA Then
SendData = 0 'ÃüÁîÕýÈ·
End If
End If
End IfExit FunctionErrExit:
SendData = 3
End Function'*************************************************************************
Private Sub Form_Unload(Cancel As Integer)
ClosePort '¹Ø±Õ´®¿Ú
End Sub