FAQ | Points | Add... | Recent posts | Search | Register | Log in


[VISUAL BASIC 2008] Odczyt z RS232


Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> Beginners Programming -> [VISUAL BASIC 2008] Odczyt z RS232
Author
Message
piotr411
Poziom 9
Poziom 9


Joined: 07 Jan 2009
Posts: 38
Location: Legnica

Post#1 Post from the author of the topic 18 Dec 2009 12:15   

[VISUAL BASIC 2008] Odczyt z RS232


Witam

Problem jest Taki, że wszystko działa jak należy z tym drobiazgiem
- jeśli nie ma sygnału informacji na RS232 to program staje w przerwaniu i czeka na znak końca linii, jak to zrobić żeby wychodził z przerwanie jesli nie ma sygnału np po 200mili sekundach niby jest polecenie ale po przepełnieni sie stanu wywala błąd i program zatrzymuje sie



Code:

Public Class Form1
    <System.Runtime.InteropServices.DispId(1)> Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SerialPort1.Open()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Enabled = True
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer1.Enabled = False
    End Sub
    Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim znak As String
        Dim s As Byte
        znak = SerialPort1.ReadLine()
        s = (InStr(znak, "GPS"))
        TextBox1.Text = (znak)
    End Sub
End Class


[img]
[VISUAL BASIC 2008] Odczyt z RS232 [/img]
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 18 Dec 2009 12:15   





Back to top
   
one_eddie
Poziom 20
Poziom 20


Joined: 22 Jul 2004
Posts: 990
Location: Polska

Post#2 23 Dec 2009 16:08helpful post - solution   

Re: [VISUAL BASIC 2008] Odczyt z RS232


Odpowiedz już chyba znasz. Doczytahj w MSDN jak dokładnie korzysta się ze zdarzenia DataRecieved. Możesz też poszukać jak przerywać operacje IO. Podpowiem że jest do tego funkcja CancelIO. Niestety dobrze przerywanie operacji jest już trudnym do opanowania zagadnieniem i nie będe nawet próbował go teraz opisywać :)
Back to top
   
Google

Google Adsense


Post# 23 Dec 2009 16:08helpful post - solution   





Back to top
   
piotr411
Poziom 9
Poziom 9


Joined: 07 Jan 2009
Posts: 38
Location: Legnica

Post#3 Post from the author of the topic 23 Dec 2009 17:04   

Re: [VISUAL BASIC 2008] Odczyt z RS232


No właśnie. Dzięki nie pomogłeś, ale zmobilizowałeś, za punktowałeś ;)
Zrobiłem to nie co inaczej, ale efekt osiągnięty.
Dla tych co by mieli podobny problem zamieszczam kod


Code:
Public Class Form1

    Private WithEvents serial As New IO.Ports.SerialPort
    Private Delegate Sub UpdateTextboxDelegate(ByVal Zmienna As String)



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        serial.BaudRate = 1200
        serial.PortName = "COM1"
        serial.Open()
    End Sub



    Private Sub serial_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serial.DataReceived
        Dim Ciąg As String = serial.ReadLine
        UpdateTextbox(Ciąg)
    End Sub



    Private Sub UpdateTextbox(ByVal Zmienna As String)

        If Me.TextBox1.InvokeRequired Then
            Dim d As New UpdateTextboxDelegate(AddressOf UpdateTextbox)
            Me.TextBox1.Invoke(d, New Object() {Zmienna})
        Else
            TextBox1.Text = Zmienna
        End If
    End Sub



    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If serial.IsOpen Then serial.Close()
    End Sub


End Class


Jest tylko jedno, ale.
Po kompilacji i uruchomieniu jest wszystko ok, jak zamykam "X" aplikacje zawiesza się, rozwiązaniem jest Button z End , ale problem jest do rozwiązania dlaczego tak sie dzieje
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 23 Dec 2009 17:04   





Back to top
   
one_eddie
Poziom 20
Poziom 20


Joined: 22 Jul 2004
Posts: 990
Location: Polska

Post#4 23 Dec 2009 17:32   

Re: [VISUAL BASIC 2008] Odczyt z RS232


@piotr411: Czuje się lekko urażony :P Dlaczego uważasz że nie pomogłem?

Sprawdź jaki watek blokuje aplikację (debug) i dociekaj dlaczego nie został zamknięty :)

Dodano po 3 [minuty]:

Zakładam że pomiez yzmianą z DataReceived nie dodałeś żadnego wątku. Aplikacja w tym momencie czekać może na zakończenie operacji IO. Zamykasz port przed zamknięciem aplikacji? Sprawdzałeś czy wykonywana jest linia z .Close()?
Back to top
   
piotr411
Poziom 9
Poziom 9


Joined: 07 Jan 2009
Posts: 38
Location: Legnica

Post#5 Post from the author of the topic 23 Dec 2009 17:44   

Re: [VISUAL BASIC 2008] Odczyt z RS232


wiesza sie tam gdzie można się spodziewać:

Code:
Dim Ciąg As String = serial.ReadLine


"zwis" jest w chwili odczytu portu, kiedy do portu nic nie dochodzi zamyka się poprawnie
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Programming Generally -> Beginners Programming -> [VISUAL BASIC 2008] Odczyt z RS232
Page 1 of 1
Similar topics
Visual basic - RS232 (4)
Visual Basic 2008 Jak animować rysunek (6)
Visual Basic 2008 potrzebna komenda (10)
liczba losowa w Visual Basic 2008 (4)
Visual basic 2008 Wykres (7)
[VISUAL BASIC]Visual Basic 2008 DataGridView (4)
visual basic 2008 rs232 odczyt (11)
RS232 - visual basic (1)
Visual Basic RS232 (3)
Visual basic 2008, Jak usunąć spacje i zostawić tekst? (3)

Page generation time: 0.131 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed