2014-12-05 31 views
0

因此,我有下面的代码连接到寻呼机,我遇到的问题是有时'页面消息'将分裂两个实际的“页面”但如果它的分割将始终包含(2的第1部分)或(2的第2部分),我的问题是,我的子接收页面数据,然后调用子Parse_Page这是罚款单页按摩。VB.NET如何从串口等待第二个接收两个值

我试着用if语句测试一下,如果PageData.contains(“((1的第1部分)”),这一切都很好,但我需要将该字符串存储在某处并以某种方式等待该部分消息到达之前将第1部分和第2部分放在一起并调用“Parse_page”子部分。我已经尝试过各种各样的if和array,但是我对于必须发生的事情感到困惑。任何想法如何做到这一点?

Public Sub serial_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serial.DataReceived 

    Dim PageData As String = serial.ReadLine 

    Parse_Page(Nothing, Nothing) 

End Sub 

回答

0

只需使用全局变量。

Dim PageData1 As String = String.Empty 
Dim PageData2 As String = String.Empty 

Public Sub serial_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serial.DataReceived 

    If String.IsNullOrEmpty(PageData1) = True Then 
     PageData1 = serial.Readline 
    ElseIf String.IsNullOrEmpty(PageData2) = True Then 
     PageData2 = serial.Readline 
     PageData = PageData1 & PageData2 
     PageData1 = String.Empty 
     PageData2 = String.Empty 
     Parse_Page(Nothing, Nothing) 
    End If 

End Sub 
+0

感谢但这只是测试,如果当前页面包含了一组字符串,我能做到这一点,并测试“的2第1部分”的例子,但我怎么拍摄第一部分消息,然后等待第二部分到达然后把它们放在一起? – user2828045 2014-12-06 08:46:21

+0

刚编辑我的答案。您可能需要在每个IF部分进行一些额外的检查,以检查它是否确实是需要的数据。但取决于您的传入数据 – 2014-12-09 07:57:10