📄 用pda联结全站仪自动测量的方法(evb).txt
字号:
VB或LISP源码彩色显示 注:在[code]...[/code]内就以下面格式显示文字,双击源码拷贝到剪切板
Option Explicit
Dim p As Single
Text4.Text = "6.63"
Private Sub Command1_Click()
Dim CR As String
Dim AK As String
Dim INSTR1 As Variant
Dim INSTR2 As Variant
Dim TIME1 As Single
Dim i As Integer
Dim IFILE As String
Dim M As Variant
Dim XSD As Integer
Dim QD As Integer
Dim QD1 As Integer
Dim QD2 As Integer
Dim ZD As Integer
Dim ZD1 As Integer
Dim ZD2 As Integer
Dim ZH As Integer
Dim ZH1 As Integer
Dim ZH2 As Integer
Dim R As Single
Dim J As Single
Dim p As Single
Dim B As Single
Dim pi As Single: pi = 3.14159265432
Dim V As Single
Dim L As Single
Dim h As Single
Dim A As Single
Dim S As Single
Dim k As Single
Dim N As String
Dim E As String
Dim Z As String
Dim tim As Single
Dim u As Single
Dim w As Single
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
LL.Text = ""
S49.Text = ""
CQ.Text = ""
AK = Chr(6) + "006" + Chr(3)
CR = Chr(13)
msComm1.Settings = "1200,N,8,1" 这个就不用说了吧
msComm1.CommPort = 1 选择COM 1
If msComm1.PortOpen = False Then 如果串口关闭则打开
msComm1.PortOpen = True
End If
msComm1.无效Len = 0
msComm1.InBufferCount = 0 清除缓冲区
msComm1.Output = Chr(69) + Chr(100) + CR + Chr(10)
这个是索佳全站仪的通迅指今 坐标请求指今 为 Ed CRLF 回车换行
TIME1 = Timer
Do While msComm1.InBufferCount < 47
这个要注意了,你的指今发完后仪器反回缓冲区的字节数,要看你的仪器输出的格式,
Rem DoEvents 转控制权
If Timer > TIME1 + 7 Then
MsgBox "通讯超时间,请检查通讯线,退出!"
msComm1.PortOpen = False
Exit Sub
End If
Loop
INSTR1 = msComm1.无效
TIME1 = Timer
Do While Timer < TIME1 + 0.35
Rem DoEvents
Loop
msComm1.Output = AK 前面有值,就是反回ACK值006 运行下一指令
msComm1.PortOpen = False 关闭端口
M = INSTR1
XSD = 0
下面这一段是提取字串中的我们可用的数据 比如说我的索佳反回的值是
空格Ed 0,,00,000,000,00,4224456.54,461422.37,267.6,.......
从中提取,我们想要的坐标数据
For i = 1 To Len(M) Step 1
If Asc((Mid(M, i, 1))) = 44 Then XSD = XSD + 1
If XSD = 3 Then QD = i + 2
If XSD = 4 Then ZH = i + 1
If XSD = 4 Then QD1 = i + 2
If XSD = 5 Then ZH1 = i + 1
If XSD = 5 Then QD2 = i + 2
If XSD = 6 Then ZH2 = i + 1
ZD = ZH - QD
ZD1 = ZH1 - QD1
ZD2 = ZH2 - QD2
Next i
Text1.Text = Mid(M, QD, ZD)
Text2.Text = Mid(M, QD1, ZD1)
Text3.Text = Mid(M, QD2, ZD2)
N = Text1.Text
E = Text2.Text
Z = Text3.Text
p = Text4.Text
J = 0
J = Atn((459984.441 - E) / (4218667.236 - N)) * (180 / pi)
R = Sqr((N - 4218667.236) * (N - 4218667.236) + (E -
459984.441) * (E - 459984.441))
L = (pi * 6000 * (25.36088 - J)) / 180 + 43758
LL.Text = (pi * 6000 * (25.36088 - J)) / 180 + 43758
S = R - 6002.45
S49.Text = R - 6002.45
V = Abs(L - 43758) * 0.0175 + 244.205: k = 0
h = V + 2.18: A = Z - h: k = Atn(Abs(S) / A) * (180 / pi)
If k < 0 Then k = k + 180
If k <= 60 Then S = Abs(S): u = 2.18: CQ.Text = Sqr((Z - V -
u) * (Z - V - u) + S * S) - p
If k > 60 Then S = Abs(S) - 0.16: u = 2.27: w = p - 0.18:
CQ.Text = Sqr((Z - V - u) * (Z - V - u) + S * S) - w
End Sub
Private Sub Command2_Click()
Dim R As Single
Dim J As Single
Dim p As Single
Dim B As Single
Dim pi As Single: pi = 3.14159265432
Dim V As Single
Dim L As Single
Dim h As Single
Dim A As Single
Dim S As Single
Dim k As Single
Dim N As String
Dim E As String
Dim Z As String
Dim tim As Single
Dim u As Single
Dim w As Singl
N = Text1.Text
E = Text2.Text
Z = Text3.Text
p = Text4.Text
J = 0
J = Atn((459984.441 - E) / (4218667.236 - N)) * (180 / pi)
R = Sqr((N - 4218667.236) * (N - 4218667.236) + (E -
459984.441) * (E - 459984.441))
L = (pi * 6000 * (25.36088 - J)) / 180 + 43758
LL.Text = (pi * 6000 * (25.36088 - J)) / 180 + 43758
S = R - 6002.45
S49.Text = R - 6002.45
V = Abs(L - 43758) * 0.0175 + 244.205: k = 0
h = V + 2.18: A = Z - h: k = Atn(Abs(S) / A) * (180 / pi)
If k < 0 Then k = k + 180
If k <= 60 Then S = Abs(S): u = 2.18: CQ.Text = Sqr((Z - V -
u) * (Z - V - u) + S * S) - p
If k > 60 Then S = Abs(S) - 0.16: u = 2.27: w = p - 0.18:
CQ.Text = Sqr((Z - V - u) * (Z - V - u) + S * S) - w
End Sub
Private Sub Form_OKClick()
App.End
End Sub
最后一段是我们工地的隧道测量用的数据,我就不多说了,
用EVB 调试的时候,要注意的是,它不支持Tye, 不过没关系
我们用Variant就够了
内容检索关键字 —— 用PDA联结全站仪自动测量的方法(evb)
在百度中搜索更多本文内容
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -