[求助]那位大侠能帮我写一个程序注释,让我能看明白...本人比较非常菜鸟...

Cool1943 2008-09-09 10:57:50
程序如下,是一个传感器的控制程序。
拜托了,这个程序实在是看不明白啊,
哪个大哥给写个白痴都能明白的备注。

Private Sub Command2_Click()
contraler Command2, False, &H80FFFF, &H8000000F
Timer.Enabled = False
If Runmod = "stop" Then
Text9.text = 0
Text10.text = 0
Text11.text = 0
Text12.text = 0
Text13.text = 0
Text14.text = 0
If outo = 0 And TESTBUG And pc <> -9999 Then '判断是否是手动还是自动
MsgBox "现在是手动操作", vbDefaultButton1
GoTo end6
End If
Dim n As Integer
Dim va, vat, nl, vo As Single
Dim dn As Integer
va = Val(Text5(0).text) '给定电压
va0 = Val(Text5(4).text)
vat = Text5(1).text '额定电压
vo = Text5(2).text '转换比
nl = vat / vo
dn = Val(Text5(3).text) '点数
'判断参数是否正确
If va0 = 0 And va = 0 Then
MsgBox "输入不能为零", vbCritical
GoTo end6
End If
If vat = 0 Then
MsgBox "额定电压不能为0", vbDefaultButton2, "警告"
'Call Command1_Click
GoTo end6
End If
If nl = 0 Then
MsgBox "转换比不能为0", vbDefaultButton2, "警告"
'Call Command1_Click
GoTo end6
End If
If va > MAXIDC Then
MsgBox "转换比不能为0", vbDefaultButton2, "警告"
'Call Command1_Click
GoTo end6
End If


estate.devicermod = "testinitialize"
dot1.buflen = dn
ReDim dot1.buf(dot1.buflen)
ReDim buf(dot1.buflen, MAXTCOUNT) '点号-表值
ReDim dbuf1(dot1.buflen + 1)
ReDim dbuf2(dot1.buflen)
j = 0
Dim klt As Single
Dim kmt, kmt2 As Single
If va < va0 Then
kmt = va0
kmt2 = va
Else
kmt = va
kmt2 = va0
End If
If kmt2 < 0 Then
MsgBox "最小电压为0"
kmt2 = 0
Text5(4).text = 0
GoTo end6
End If
klt = (va - va0) / dot1.buflen
dot1.n1f = 1
dot1.n1n2f = nl
dot1.n2f = 1
dot1.acdc = acdc
dot1.ratedvalue = vat / Vl
dot1.dot = 1
For i = 0 To dot1.buflen '初始化理论曲线数据区
dbuf1(i).X = -9999
dbuf1(i).Y = -9999
dbuf2(i).X = -9999
dbuf2(i).Y = -9999
Next i
For i = 0 To dot1.buflen '初始化点数据区 实测曲线数据区
dot1.buf(i) = (va0 + (i * klt)) / Vl
dbuf1(i + 1).X = i * klt + va0
dbuf1(i + 1).Y = i * klt / nl + va0 / nl
Next i
dbuf1(0).X = 0
dbuf1(0).Y = 0
zbz = createzuobiao(Int(kmt), dn, kmt / dot1.n1n2f, dn) '创建坐标
ReDim da1(PLINEN * (dot1.buflen + 1))
Pp1.Refresh '刷新绘图
Command2.Enabled = False

R8024.devicesendbuf = 0 '初始化给定
sendrecive8024 R8024, com1
timedelay 500 '延时
testT = testT + 1
'打印报表表头
Call addreportgriditem1(bufdisplay, reportgid)
'Mergegrid "直流电流传感器" & " 次测试", reportgid
Mergegrid "车号:" & Combo1.List(Combo1.ListIndex) & " 型号:" & Combo2.List(Combo2.ListIndex) & " 操作人:" & Combo3.List(Combo3.ListIndex) & " 编号:" & Combo5.List(Combo5.ListIndex), reportgid
Mergegrid " 测试日期:" & Date, reportgid
delegridrow reportgid.Rows - 3, reportgid
biaohead "给定", 1, 1, 1, reportgid
biaohead "传感器输出", 2, 3, 0, reportgid
biaohead "数据分析", 4, reportgid.Cols - 1, 0, reportgid
Call addreportgriditem1(bufdisplay, reportgid)
For i = UBound(device) To MAXTCOUNT
enabledevice device(i)
Next i
Tnumber = 1
Runmod = "run" '置运行状态
estate.systemmod = "starttest"
Timer.Interval = 50
Timer.Enabled = True
'contraler Command3, True, &H80FFFF, &H8000000F
'starttest
ElseIf Runmod = "run" Then
Runmod = "pause"
ElseIf Runmod = "pause" Then
Runmod = "run"
End If
end6: contraler Command2, True, &H80FFFF, &H8000000F
Timer.Enabled = True
End Sub
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cool1943 2008-09-10
  • 打赏
  • 举报
回复
哦,谢谢谢谢!!
又明白了好多。
fvflove 2008-09-10
  • 打赏
  • 举报
回复
pc = getdata(dev8055I.devicedrecivebuf)

' 调用 getdata 方法. 方法要求传入参数 .现在传入的参数是dev8055I.devicedrecivebuf
'通过此方法计算后的返回值赋给 pc .
'要了解详情,要去读 getdata 方法
-------------------------------------------------
setcmd8055 dev8055(i), adr8055(i), SET1
-------------------------------------------------
sendrecive8055 dev8055(i), com1
-------------------------------------------------
sendrecive8024 R8024, com1
-------------------------------------------------
Call addreportgriditem1(bufdisplay, reportgid)

'同上, 以上分别调用了:
setcmd8055
sendrecive8055
sendrecive8024
addreportgriditem1

方法,不用返回值.以上方法只是对接收到的参数进行了处理,或完成了一定的事务.
haha0369 2008-09-10
  • 打赏
  • 举报
回复
感觉没有什么难度
Cool1943 2008-09-10
  • 打赏
  • 举报
回复
哦哦,明白点了,原来是还要调用关于测试的那段代码...
那段代码好长啊,我都不好意思往上发了...

那个,弱弱的问一下谁能告诉我下面几个语句都是什么意思:

pc = getdata(dev8055I.devicedrecivebuf)
-------------------------------------------------
setcmd8055 dev8055(i), adr8055(i), SET1
-------------------------------------------------
sendrecive8055 dev8055(i), com1
-------------------------------------------------
sendrecive8024 R8024, com1
-------------------------------------------------
Call addreportgriditem1(bufdisplay, reportgid)
Cool1943 2008-09-10
  • 打赏
  • 举报
回复
这一端看不明白...能给解释细点吗?
VB我连入门都算不上...
又太多东西看不懂了。

R8024.devicesendbuf = 0 '初始化给定
sendrecive8024 R8024, com1
timedelay 500 '延时
testT = testT + 1
'打印报表表头
Call addreportgriditem1(bufdisplay, reportgid)
'Mergegrid "直流电流传感器" & " 次测试", reportgid
Mergegrid "车号:" & Combo1.List(Combo1.ListIndex) & " 型号:" & Combo2.List(Combo2.ListIndex) & " 操作人:" & Combo3.List(Combo3.ListIndex) & " 编号:" & Combo5.List(Combo5.ListIndex), reportgid
Mergegrid " 测试日期:" & Date, reportgid
delegridrow reportgid.Rows - 3, reportgid
biaohead "给定", 1, 1, 1, reportgid
biaohead "传感器输出", 2, 3, 0, reportgid
biaohead "数据分析", 4, reportgid.Cols - 1, 0, reportgid
Call addreportgriditem1(bufdisplay, reportgid)
For i = UBound(device) To MAXTCOUNT
enabledevice device(i)
Next i
Tnumber = 1
Runmod = "run" '置运行状态
estate.systemmod = "starttest"
Timer.Interval = 50
Timer.Enabled = True
'contraler Command3, True, &H80FFFF, &H8000000F
'starttest
ElseIf Runmod = "run" Then
Runmod = "pause"
ElseIf Runmod = "pause" Then
Runmod = "run"
End If
end6: contraler Command2, True, &H80FFFF, &H8000000F
Timer.Enabled = True
fvflove 2008-09-10
  • 打赏
  • 举报
回复
你的代码到注释已经很清楚了.

一共用以下几部分:
1. '判断参数是否正确
2. 计算并初始化数据及绘图区域.
3. 绘制图形
4. 打印报表

5. 最后用以下代码设置状况.(运行中,暂停中)
ElseIf Runmod = "run" Then
Runmod = "pause"
ElseIf Runmod = "pause" Then
Runmod = "run"
End If



迈克揉索芙特 2008-09-10
  • 打赏
  • 举报
回复
从其中的汉字来看,基本能看出个所以然吧。

864

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧