⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用pda联结全站仪自动测量的方法(evb).txt

📁 连接串口通讯程序
💻 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 + -