初学VB,想做个通信的程序,大虾帮小弟看看,谢谢!1.发送数据(send)
通过调用此函数,完成向串口发送数据。
Public Function send(send_byte As Byte)
frmSet.MSComm1.Output = send_byte
Do
DoEvents
Loop Until frmSet.MSComm1.OutBufferCount = 0End Function
2.接收数据(resv)
通过调用此函数,完成通过串口接收数据。
Public Function resv()
Dim resv_byte As Variant '定义串口接收数据
Dim resv_data(0) As Byte
Do
DoEvents
Loop Until frmSet.MSComm1.InBufferCount > 0resv_byte = frmSet.MSComm1.Input
resv = resv_byte(0)
End Function'如果调用函数,这样行不行呀
Dim resv_data(0) as Byte
'发送170,接收170
send(170)
resv_data(0)=resv()
发送不用返回值,接收不用传递参数,总感觉有毛病。
由于现在没有下位机调试 不知道可行否?恳请指点。。
通过调用此函数,完成向串口发送数据。
Public Function send(send_byte As Byte)
frmSet.MSComm1.Output = send_byte
Do
DoEvents
Loop Until frmSet.MSComm1.OutBufferCount = 0End Function
2.接收数据(resv)
通过调用此函数,完成通过串口接收数据。
Public Function resv()
Dim resv_byte As Variant '定义串口接收数据
Dim resv_data(0) As Byte
Do
DoEvents
Loop Until frmSet.MSComm1.InBufferCount > 0resv_byte = frmSet.MSComm1.Input
resv = resv_byte(0)
End Function'如果调用函数,这样行不行呀
Dim resv_data(0) as Byte
'发送170,接收170
send(170)
resv_data(0)=resv()
发送不用返回值,接收不用传递参数,总感觉有毛病。
由于现在没有下位机调试 不知道可行否?恳请指点。。
Option Explicit
Dim BytReceived() As Byte
Dim strData As String
Dim lenInput As Integer
Dim bytSendByte() As Byte '发送二进制数据
Dim strSendText As String '发送文本数据
Dim blnAutoSendFlag As Boolean
Dim openFlag As BooleanPrivate Sub cmdOpen_Click()
On Error GoTo erruser
If openFlag Then
cmdOpen.Caption = "打开串口"
MSComm1.PortOpen = False '打开端口
Timer2.Enabled = False
Shape1.FillColor = vbRed
Label5 = "关闭"
Else
cmdOpen.Caption = "关闭串口"
Shape1.FillColor = vbGreen
Label5 = "打开"
MSComm1.PortOpen = True '打开端口
If blnAutoSendFlag = True Then
Timer2.Enabled = True
End If
End If
openFlag = Not openFlag
erruser:
End SubPrivate Sub cmdSendHex_Click()'按2进制发送
Dim sj() As Byte
Dim sj_Txt As String
Dim i As Integer
sj_Txt = TxtSend
'TxtSend = "800A00113135323634389794"
ReDim sj(Len(sj_Txt) / 2 - 1)
For i = 0 To Len(sj_Txt) - 1 Step 2
sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2))
Next
If MSComm1.PortOpen = True Then
MSComm1.Output = sj
Else
MSComm1.PortOpen = True
Shape1.FillColor = vbGreen
Label5.Caption = "打开"
MSComm1.Output = sj
End If
End Sub
'字符串表示的十六进制数据转化为相应的字节串,返回转化后的字节数Private Sub cmdAutoSend_Click()
If blnAutoSendFlag Then
Me.Timer2.Enabled = False
Me.cmdAutoSend.Caption = "自动发送"
Else
Me.Timer2.Enabled = True
Me.cmdAutoSend.Caption = "停止发送"
End If
blnAutoSendFlag = Not blnAutoSendFlag
End SubPrivate Sub cmdSendASc_Click()'按文本发送
Dim sj_Txt As String
sj_Txt = TxtSend
If MSComm1.PortOpen = True Then
MSComm1.Output = sj_Txt
End If
End Sub