Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[VB .net] Operacje (cięcie) na stringach / odbiór rs232

misiek85_1 16 Mar 2010 20:14 2576 1
  • #1 16 Mar 2010 20:14
    misiek85_1
    Poziom 11  

    Witam,

    jak na razie udało mi się zrealizować funkcję odbioru/wysyłania po rs232 w VB.

    Odbiór realizuję w taki sposób:

    Code:

    Private Sub serial_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dodanie = SerialPort1.ReadExisting
            RichTextBox2.Text = RichTextBox2.Text + Dodanie
    End Sub


    Chciałbym aby z odebranego prze zemnie tekstu wyciągnąć numer, datę godzinę, treść wiadomości. Przykłady odebranych ciągów to (wklejone z pola RichTextBox2):
    Code:

    at+cmgr=9

    +CMGR: "REC READ","+48508XXXXXX",,"10/03/15,19:12:52+04"
    tresc smsa - proba

    OK

    at+cmgr=8

    +CMGR: "REC READ","+48508XXXXXX",,"10/03/15,18:45:57+04"
    sms numer 2 - proba

    OK

    at+cmgr=10

    +CMGR: "REC READ","+48508XXXXXX",,"10/03/15,19:13:33+04"
    przykladowa tresc sms....

    OK

    Należy pamiętać iż wysyłane są znaki CR i LF... I tak treść wiadomości wysyłana jest po CRLF danych na temat wiadomości.

    Nie wiem co trzeba zrobić by program ładnie wypisał:
    Code:

    Od: +48508XXXXXX
    Data: 10/03/15
    Godzina: 19:12:52
    Treść: tresc smsa - proba


    PS. Czy dobrze realizuję odbiór danych?

    Za każdą pomoc będę bardzo wdzięczny, bo męczę się z tym już dość długo ;(

    0 1
  • #2 17 Mar 2010 09:32
    chemicalkash
    Poziom 19  

    Gotowiec, powinno działać

    Code:
    Class Program
    
       Public Shared Sub Main(args As String())
          Dim rectext As String = "+CMGR: ""REC READ"",""+48508XXXXXX"",,""10/03/15,19:12:52+04"" " & vbCr & " przykladowa tresc sms.... "
          ReadText(rectext)
       End Sub
       

       Private Shared Sub ReadText(recievedText As String)
          recievedText = recievedText.Replace(""""C, " "C)
          Dim text As String = recievedText.Substring(recievedText.IndexOf(vbCr))
          recievedText.Remove(0, recievedText.IndexOf(":"))
          Dim parameters As String() = recievedText.Substring(0, recievedText.IndexOf(vbCr)).Split(","C)

          Console.WriteLine("Od: {0}", parameters(1))
          Console.WriteLine("Data: {0}", parameters(3))
          Console.WriteLine("Godzina: {0}", parameters(4))
          Console.WriteLine("Treść: {0}", text)
          Console.ReadKey(True)
       End Sub
    End Class

    1