按你说的,应该是仪表不断的自动送数据出去吧,这个很容易, 用MSCOMM控件吧,在Oncomm事件里把送来的数据处理后显示到文本控件。 如: Private Sub MSComm1_OnComm() Dim s As String If MSComm1.CommEvent = comEvReceive Then '接收到数据 s = MSComm1.Input '读数据 '处理...... 'Textbox1.Text = ..... End If End SubMSCOMM控件的用法很简单,可以去msdn查一下,还有例子。
Dim strData As String Private Sub Command1_Click() Timer1.Enabled = True End SubPrivate Sub Form_Load() MSComm1.Settings = "1200,N,8,1" MSComm1.RThreshold = 1 MSComm1.InputMode = comInputModeText MSComm1.PortOpen = True Timer1.Interval = 500 Timer1.Enabled = False End SubPrivate Sub mscomm1_OnComm() Dim strRe As String Select Case Me.MSComm1.CommEvent Case comEvReceive strRe = Me.MSComm1.Input strData = strData & strRe Dim xsws As Integer '未考虑第10及11字节异或校验 If Mid(strData, 1, 1) = Chr(2) And Mid(strData, 12, 1) = Chr(3) Then '数据判断 xsws = Val(Mid(strData, 9, 1)) '取小数位数 Text1 = Val(Mid(strData, 2, 10)) / (10 ^ xsws) '输出到文本框 strData = "" End If End Select End Sub
Dim strData As String Private Sub Form_Load() MSComm1.Settings = "1200,N,8,1" MSComm1.RThreshold = 1 MSComm1.InputMode = comInputModeText MSComm1.PortOpen = True Timer1.Interval = 500 Timer1.Enabled = False End SubPrivate Sub mscomm1_OnComm() Dim strRe As String Select Case Me.MSComm1.CommEvent Case comEvReceive strRe = Me.MSComm1.Input strData = strData & strRe Dim xsws As Integer '未考虑第10及11字节异或校验 If Mid(strData, 1, 1) = Chr(2) And Mid(strData, 12, 1) = Chr(3) Then '数据判断 xsws = Val(Mid(strData, 9, 1)) '取小数位数 Text1 = Val(Mid(strData, 2, 10)) / (10 ^ xsws) '输出到文本框 strData = "" End If End Select End Sub
MSCOMM的资料、示例,网上多的是。
1。地磅称的通信:读,写
2。与Access 或Excel的交互
3。统计,报表,打印
第X字节 内容及注解
1 02(XON) 开始
2 +或- 符号位
3 称量数据 高位
称量数据
称量数据 8 称量数据 低位
9 小数点位数 从右到左(0~4)
10 异或校验 高四位
11 异或校验 低四位
12 03(XOFF) 结束
异或=2.........9 请问我如何将数据读进TEXT控件中并可以保存
按你说的,应该是仪表不断的自动送数据出去吧,这个很容易,
用MSCOMM控件吧,在Oncomm事件里把送来的数据处理后显示到文本控件。
如:
Private Sub MSComm1_OnComm()
Dim s As String
If MSComm1.CommEvent = comEvReceive Then '接收到数据
s = MSComm1.Input '读数据
'处理......
'Textbox1.Text = .....
End If
End SubMSCOMM控件的用法很简单,可以去msdn查一下,还有例子。
Private Sub Command1_Click()
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
MSComm1.Settings = "1200,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
Timer1.Interval = 500
Timer1.Enabled = False
End SubPrivate Sub mscomm1_OnComm()
Dim strRe As String
Select Case Me.MSComm1.CommEvent
Case comEvReceive
strRe = Me.MSComm1.Input
strData = strData & strRe
Dim xsws As Integer
'未考虑第10及11字节异或校验
If Mid(strData, 1, 1) = Chr(2) And Mid(strData, 12, 1) = Chr(3) Then '数据判断
xsws = Val(Mid(strData, 9, 1)) '取小数位数
Text1 = Val(Mid(strData, 2, 10)) / (10 ^ xsws) '输出到文本框
strData = ""
End If
End Select
End Sub
Dim strData As String
Private Sub Form_Load()
MSComm1.Settings = "1200,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
Timer1.Interval = 500
Timer1.Enabled = False
End SubPrivate Sub mscomm1_OnComm()
Dim strRe As String
Select Case Me.MSComm1.CommEvent
Case comEvReceive
strRe = Me.MSComm1.Input
strData = strData & strRe
Dim xsws As Integer
'未考虑第10及11字节异或校验
If Mid(strData, 1, 1) = Chr(2) And Mid(strData, 12, 1) = Chr(3) Then '数据判断
xsws = Val(Mid(strData, 9, 1)) '取小数位数
Text1 = Val(Mid(strData, 2, 10)) / (10 ^ xsws) '输出到文本框
strData = ""
End If
End Select
End Sub