2013-10-28 6 views
1

Обычно я предпочитаю подстерегают форумы для ответов, но я не могу найти один, так что здесь идет ...Автоматическая загрузка GPS местоположение

У меня есть система управления пользовательского флота, что я написал в ASP для клиента, и они запросили функции GPS, чтобы они могли избавиться от своей ежемесячной спутниковой службы. Я купил серийный GPS-ключ для ноутбуков в кабине грузовиков и написал короткую службу Windows для ноутбуков дальнобойщика, чтобы читать и переводить данные. В настоящее время я переписываю текстовый файл каждые 10 секунд с переведенным местоположением. (Причина этого заключается в том, что Google API, по-видимому, не распознает внешние датчики местоположения в Windows 7.)

Теперь мне нужно получить эту информацию на сервере, чтобы диспетчер мог быть обновлен с помощью местоположений и так что водители грузовиков и помечают их места у клиентов для других водителей, которым, возможно, придется покрыть свой маршрут. Я полагаю, что мне придется использовать JavaScript, но надеялся, что кто-то может отправить меня в правильном направлении. Я попытался преобставить значение в html-файле, но, очевидно, это не работает

Или я могу сохранить файл во временных интернет-файлах и захватить его через ASP? Было бы лучше использовать сокеты для нажатия на сервер? Я хотел бы включить сайт, который я уже написал ...

Я НЕ НУЖДАЮСЬ ЛЮБОЙ КОД, мне просто нужно обратиться в правильном направлении!

Спасибо!

+1

На каком языке вы используете для создания текстового файла? Возможно, вместо создания этого файла вы можете напрямую перенаправить данные на свой сервер через веб-службу REST. – dmarucco

+0

Я использую VB, но я могу легко переписать его на C#. Затем возникает проблема, как определить, какой компьютер отправил местоположение, и как это соответствует пользователю, зарегистрированному в веб-приложении, поскольку я не думаю, что могу читать, скажем, MAC-адрес через Интернет. Я буду искать REST. – Larson

+0

На самом деле dmarucco Я делаю это несколько иначе, используя xml, но ваше предложение подсказывает идею. Я выложу свое решение после того, как я уйду с работы. Благодаря! – Larson

ответ

0

Хорошо, понял. Кредит dmarruco за предложение REST, он вдохновил меня использовать аналогичное решение с xml. Клиентская сторона выглядит следующим образом:

Imports System.IO 
Imports System.IO.Ports 
Imports System.Text 
Imports System.Xml 
Imports System.Web 
Imports System.Net 


Module Module1 

Sub Main() 
    Dim myport As SerialPort = New SerialPort("COM3", "4800", Parity.None, 8, StopBits.One) 
    Dim availableSerialPorts As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = My.Computer.Ports.SerialPortNames 
    If availableSerialPorts.Contains("COM3") Then 
     Dim dstring As String = "" 
     Try 
      If myport.IsOpen Then 
       myport.Close() 
      End If 
      myport.Open() 
      System.Threading.Thread.Sleep(1500) 
      Dim datastring As String = myport.ReadExisting 
      dstring += datastring 
      myport.Close() 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     Finally 
      If myport IsNot Nothing Then 
       myport.Close() 
      End If 
     End Try 

     Dim loc As Integer 
     Dim search As String = "$GPGGA" 
     loc = InStr(1, dstring, search, CompareMethod.Text) 

     Dim latstart As Integer = loc + 18 
     Dim lonstart As Integer = loc + 30 
     Dim lat As String = Mid(dstring, latstart, 9) 
     Dim lon As String = Mid(dstring, lonstart, 10) 
     Dim gpgga As String = Mid(dstring, loc, 50) 

     If Left(lat, 1) <> "," And Left(lon, 1) <> "?" Then 

      Dim HH As String = Left(lat, 2) 
      Dim mmmm As String = Mid(lat, 3, 7) 
      Dim mconv As String = Val(mmmm)/60 
      mconv = mconv.Replace("0.", "") 
      Dim latcoord As String = HH & "." & mconv 
      Dim lH As String = Left(lon, 3) 
      Dim lmm As String = Mid(lon, 4, 7) 
      Dim lmC As String = Val(lmm)/60 
      lmC = lmC.Replace("0.", "") 
      Dim loncoord As String = "-" & lH & "." & lmC 
      Dim xmldoc As New XmlDocument 
      Dim xmldec = xmldoc.CreateXmlDeclaration("1.0", "ASCII", "") 
      Dim outx As XmlElement 
      outx = xmldoc.CreateElement("Location") 
      xmldoc.AppendChild(outx) 
      Dim root As XmlElement = xmldoc.DocumentElement 
      xmldoc.InsertBefore(xmldec, root) 
      Dim xmlat As XmlElement 
      xmlat = xmldoc.CreateElement("lat") 
      xmlat.InnerText = latcoord 
      outx.AppendChild(xmlat) 

      Dim xmlon As XmlElement 
      xmlon = xmldoc.CreateElement("lon") 
      xmlon.InnerText = loncoord 
      outx.AppendChild(xmlon) 
      Dim machineid As String = "1" 'arbitrary for testing purposes 
      Dim xmach As XmlElement 
      xmach = xmldoc.CreateElement("MID") 
      xmach.InnerText = machineid 
      outx.AppendChild(xmach) 

      Dim url As String = "http://fakeurl.com/getxml.aspx" 'the receiving page goes here 
      Dim wreq As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest) 
      Dim encoding As New ASCIIEncoding() 
      Dim bytestowrite As Byte() = encoding.GetBytes(xmldoc.ToString) 
      wreq.Method = "POST" 
      wreq.ContentLength = bytestowrite.Length 
      wreq.ContentType = "text/xml" 
      Dim mystream As Stream = wreq.GetRequestStream() 
      mystream.Write(bytestowrite, 0, bytestowrite.Length) 
      mystream.Close() 

     Else 
      MsgBox("No Fix") 
     End If 
    Else 
     MsgBox("Disconnected") 
    End If 
End Sub 

End Module 

Простите попытку/уловку, это тестовый код, прежде чем я его опубликовал.

Смежные вопросы