我的應用程序是約95%完成了,現在我在測試階段..
我用.exe
文件中debug文件夾中,然後我使用該應用從字符串一陣保存特定線從GPS模塊訪問數據庫..
這裏的流看不見的缺陷,應用stucks
示例數據
從GPRMC到GPGSA =1秒間隔。所以技術上模塊每秒發送三行左右。
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)
是緯度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的情況。應用程序掛起,無法點擊,無法關閉,但它在任務管理器上「運行」,所以我認爲它處於無限循環,或者我錯了?我結束了在任務管理器上的關閉,並再次打開它。運行順利..然後,它會卡住。
我在想,到現在爲止,是什麼原因造成的?我認爲它是因爲模塊不能總是得到一個信號,所以它什麼都沒有返回,但是如果模塊沒有給出座標,它在DB (代碼上面)中保存0,所以這沒有問題。
你們能幫我解決問題嗎?我在第三天,所以我決定我需要一些幫助。謝謝。讓我知道你是否需要任何說明或澄清。
您是如何使用try..catch語句的,並且很難分析您提供的代碼片段。 – Jade
檢查代碼更新。轉換代碼就是將我所調用的座標的DMS格式轉換爲由我使用的API讀取的十進制座標。 – AdorableVB
txt(3)變量在解析時出錯。所以緯度值可能不是你所期望的。嘗試在某些文件上記下這些值,並檢查導致程序崩潰的值。順便說一下,接收到的確切錯誤信息是什麼? – Steve