?? 用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 + -