VB上位机软件与下位机之间通信协议 20
本人做流量积算仪课题,在通信协议方面不是很懂,希望达人帮忙做一个参考一下,谢谢!具体要求:主要是对下位机进行实时信号采集,其中主要包括流量温度压力,精度不用很高采用MSC...
本人做流量积算仪课题,在通信协议方面不是很懂,希望达人帮忙做一个参考一下,谢谢!
具体要求:主要是对下位机进行实时信号采集,其中主要包括流量 温度 压力, 精度不用很高 采用MSCOMM控件
下位机发送的应该是2进制 到电脑上它是怎样转换的???
不知道协议部分应该如何设置? 我觉得不能用数组做 长度不确定 展开
具体要求:主要是对下位机进行实时信号采集,其中主要包括流量 温度 压力, 精度不用很高 采用MSCOMM控件
下位机发送的应该是2进制 到电脑上它是怎样转换的???
不知道协议部分应该如何设置? 我觉得不能用数组做 长度不确定 展开
1个回答
展开全部
下位机发送的是ASC码,你做的应该是油田那一块的吧
我也在做,给你个例子你看看吧!
在模块中写一个延时程序如下
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function delay(number)
Call Sleep(number)
DoEvents
End Function
'在窗体中增加2个命令按钮,2个LABEL,1个TEXT文本框,将TEXT的多行属性选择为TURE
Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 100
If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
MSComm1.Output = Chr("80") & Chr("67") '发送检测信息
delay (500) '延时1秒等待串口回应
MSComm1.PortOpen = False
End If
Next i
End Sub
Private Sub Command2_Click()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
End
End Sub
Private Sub Form_Load()
Text1.Text = ""
If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
End If
MSComm1.Output = Chr("80") & Chr("67") '发送检测信息
delay (500) '延时1秒等待串口回应
MSComm1.PortOpen = False '关闭串口
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent '假设comm事件
Case comEvReceive '假设comm是接收事件
Dim Buf As Variant
Buf = MSComm1.Input
st1 = InStr(1, Buf, "PC")
If st1 <> 1 Then MSComm1.Output = Chr("80") & Chr("67")
If st1 = 1 Then
MSComm1.InputLen = 0
Label1.Caption = "单片机的返回数据为:"
Label2.Caption = "计算机与单片机连机成功"
Text1.Text = Text1.Text + Buf
End If
Case comEvSend
End Select
End Sub
'将COM口的2,3短接即可看到有字符“PC”输出!!
'此程序仅供个人使用,如转载请著名出处,否则后果自负!
我也在做,给你个例子你看看吧!
在模块中写一个延时程序如下
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function delay(number)
Call Sleep(number)
DoEvents
End Function
'在窗体中增加2个命令按钮,2个LABEL,1个TEXT文本框,将TEXT的多行属性选择为TURE
Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 100
If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
MSComm1.Output = Chr("80") & Chr("67") '发送检测信息
delay (500) '延时1秒等待串口回应
MSComm1.PortOpen = False
End If
Next i
End Sub
Private Sub Command2_Click()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
End
End Sub
Private Sub Form_Load()
Text1.Text = ""
If MSComm1.PortOpen = False Then
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
End If
MSComm1.Output = Chr("80") & Chr("67") '发送检测信息
delay (500) '延时1秒等待串口回应
MSComm1.PortOpen = False '关闭串口
End Sub
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent '假设comm事件
Case comEvReceive '假设comm是接收事件
Dim Buf As Variant
Buf = MSComm1.Input
st1 = InStr(1, Buf, "PC")
If st1 <> 1 Then MSComm1.Output = Chr("80") & Chr("67")
If st1 = 1 Then
MSComm1.InputLen = 0
Label1.Caption = "单片机的返回数据为:"
Label2.Caption = "计算机与单片机连机成功"
Text1.Text = Text1.Text + Buf
End If
Case comEvSend
End Select
End Sub
'将COM口的2,3短接即可看到有字符“PC”输出!!
'此程序仅供个人使用,如转载请著名出处,否则后果自负!
参考资料: 自创程序,为了新手而做
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询