读书人

对于你们~很简单的,可是小弟我不会

发布时间: 2012-01-18 00:23:26 作者: rapoo

对于你们~~很简单的,可是我不会
很久以前做的串口接收程序,那时候用的是MSComm控件,可是串口只能用16以下,后来知道用API可以用16+,所以就找了个API开发的串口调试工具,说真的还不怎么看得明白,有点想不通。。。。。。。。。。
问题上吧~~~~~~~~~~

以前的代码
Private Sub MSComm1_OnComm()
Dim inputbuffer As Variant
Dim data As String
Dim dblValue As Double
Select Case MSComm1.CommEvent
Case comEvReceive
inputbuffer = MSComm1.Input()
data = StrConv(inputbuffer, vbUnicode)
If Len(data) = 10 Then
If Right$(data, 1) = Chr(18) Then
If Mid$(data, 9, 1) = Chr(13) Then
Textcom1.Text = Left$(data, 1) & CStr(Val(Right$(data, 8)) / 100)
dblValue = Val(Left$(data, 1) & "1") * Val(Right$(data, 8)) / 100
Textcom1.Text = Format(dblValue, "0.00")
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

接下来我在API的程序了找了接收数据界面的代码,我加了个 TEXT4 上去想实现我要数据的效果,可以显示我想要的数据,但是大家仔细看之前负的数据,后面接收正的依然是负,然后我又清除重新接收,正的开始到后面负的还是正的,什么问题?经过我反复的尝试,只要清空数据重新接收,一开始是正的就是正,负就是负,中间转变不了

Private Sub Timer3_Timer()
Dim rlen&, i&
Dim buf(0 To 511) As Byte
Dim dblValue As Double
rlen = sio_read(Port, buf(0), 512)
If rlen = 0 Then Exit Sub
intRec = intRec + rlen
For i = 0 To rlen - 1
If Option1.Value Then
text1.Text = text1.Text + Chr(buf(i))

Text4 = Format((Left$(text1, 1) & "1") * CStr(Val(Right$(text1, 8)) / 100), "0.00")

Else
text1.Text = text1.Text & IIf(buf(i) > 15, Hex(buf(i)), "0" & Hex(buf(i))) & " "
End If
Next
Label1.Caption = "RX:" & intRec
End Sub

清空代码里面也没有什么啊
Private Sub Command1_Click()
text1.Text = ""
intRec = 0
Label1.Caption = "RX:" & intRec
End Sub

附上图片



[解决办法]

探讨
平时别把VB想象得那么简单

读书人网 >VB

热点推荐