Мое приложение заполнено на 95%, и теперь я на стадии тестирования.
Я использовал файл .exe
в папке отладки, затем я использую приложение для сохранения определенной строки из строки строки от модуля GPS, чтобы получить доступ к базе данных ..
Вот ПотокНевидимая ошибка, приложение stucks
образца данных
от GPRMC до GPGSA = 1second интервал. Таким образом, технический модуль посылает три строки каждую секунду.
Try
Dim fruit As String = "$GPRMC"
For Each line As String In RichTextBox1.Lines
If line.Contains(fruit) Then
ProgressBar1.Value = 0
txt = line.Split(","c)
Insert()
End If
Next
Catch ex As Exception
sPort.Close()
MessageBox.Show("There had been no data received.", Me.Text, MessageBoxButtons.RetryCancel)
Call btnStartTimer_Click(sender, New EventArgs)
End Try
Под Minute_Tick
, каждый 60с, Second.Start
(, который является выше код). Каждую минуту я очищаю RichTextBox
, а затем через 2 секунды (rtb заполняется снова). Я получаю строку с $GPRMC
в ней, а .Split
- до массива ~ txt()
. Впредь у меня есть слова, разделенные комой в массиве.
Теперь я добавить его в базу данных:
' Now inside a Using block
If txt(3) = String.Empty Then
.AddWithValue("@lat", 0)
Else
Dim la As Double = Double.Parse(txt(3).Substring(0, 2)) + Double.Parse(txt(3).Substring(2))/60.0
.AddWithValue("@lat", la)
End If
txt(3)
является Latitude формат DMS, поэтому я добавил немного превращающего сниппет. Он отлично работает, хотя я добавил условие, чтобы убедиться, что оно не будет вычисляться для значения null
или 0.
UPDATE (я не могу понять этот код, потому что я просто скопировал его, но он отлично работает с последним приложением, которое я создал.)
Delegate Sub SetTextCallback(ByVal [text] As String)
Dim x As New SetTextCallback(AddressOf ReceivedText)
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sPort.DataReceived
ReceivedText(sPort.ReadExisting)
End Sub
Private Sub ReceivedText(ByVal [text] As String)
If Me.RichTextBox1.InvokeRequired Then
Me.Invoke(x, New Object() {(text)})
Else
Me.RichTextBox1.Text &= [text]
End If
End Sub
Смутного Я нашел
Я испытываю что-то вроде Threading Sleep. Приложение зависает, не может щелкнуть, не может закрыть, но его «запустить» в диспетчере задач, поэтому я думаю, что он находится в бесконечном цикле, или я ошибаюсь? Я закончил его закрытие в диспетчере задач и снова открыл его. Бежит ровно .. тогда позже он застрянет.
Я думал и до сих пор, что его вызывает? Я думал, потому что модуль не всегда может получить сигнал, поэтому он ничего не возвращает ... но он сохраняет 0 в БД (код выше), если модуль не дал координат, поэтому в этом нет никаких проблем.
Можете ли вы, ребята, помочь мне виновником? Я нахожусь на третий день, поэтому решил, что мне нужна помощь. Благодарю. Дайте мне знать, если вам нужно что-нибудь или какие-то разъяснения.
как вы использовали try..catch заявление, и очень сложно проанализировать фрагмент кода, который вы предоставили. – Jade
Проверить обновление кода. код преобразования, заключается в преобразовании формата DMS кодов, переданных мне в десятичные координаты, которые читаются API, которые я использую. – AdorableVB
Что-то не так в переменной txt (3), поскольку она анализируется. Таким образом, возможно, что значение широты не то, что вы ожидаете. Попытайтесь записать эти значения в каком-то файле и проверьте значения, которые приводят к сбою вашей программы. Кстати, какое именно сообщение об ошибке получено? – Steve