visual basic seri porttan veri okuma

Başlatan elmariacci, 08 Mayıs 2013, 23:43:40

elmariacci

merhaba arkadaşlar ilk önce şunu soyleyeyim vb hakkinda pek bilgim yok.

seri porttan veri okuma kodlarini da youtubedan izleyerek yaptim :)

şimdi sizlere bir sorum var.

bu programa 2 şey daha eklemem gerekiyor.Bu kod seri porttan gelen nabiz değerini 10 saniye de bir ekranda gosteriyor.

1)nabiz 30 dan aşağida, 120 den yukarida bir değer olursa ekranda uyari verecek bir kod lazim.
2)alinan değerlerin hepsini word,excel ya da sizin bildiğiniz bir şekilde database olarak almam gerekiyor yardimlarinizi bekliyorum.

kod
Imports System
Imports System.Threading
Imports System.IO.Ports
Imports System.ComponentModel







Public Class Form1
    Dim myPorts As Array
    Delegate Sub SetTextCallBack(ByVal [text] As String)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        myPorts = IO.Ports.SerialPort.GetPortNames()
        portComboBox.Items.AddRange(myPorts)
        writeButton.Enabled = False

    End Sub

    Private Sub initButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles initButton.Click
        SerialPort1.PortName = portComboBox.Text
        SerialPort1.BaudRate = baudComboBox.Text
        SerialPort1.Open()

        initButton.Enabled = False
        writeButton.Enabled = True
        closeButton.Enabled = True


    End Sub

    Private Sub writeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles writeButton.Click
        SerialPort1.Write(InputTextBox.Text & vbCr)


    End Sub

    Private Sub closeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles closeButton.Click

        SerialPort1.Close()
        initButton.Enabled = True
        writeButton.Enabled = False
        closeButton.Enabled = False
    End Sub

    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

        ReceivedText(SerialPort1.ReadExisting())

    End Sub
    Private Sub ReceivedText(ByVal [text] As String)
        If Me.OutputTextBox.InvokeRequired Then

            Dim x As New SetTextCallBack(AddressOf ReceivedText)
            Me.Invoke(x, New Object() {(text)})
        Else
            Me.OutputTextBox.Text &= [text]
        End If

    End Sub

End Class



Kabil ATICI

Kodlarda biraz VB6 kayabilir o yüzden mantık olarak tamam da sytax olarak hata olabilir

alarm için;
Dim Deger as integer
Deger = Val(textbox1.Text)  'alınan değer hangi text kutusuna kaydedilmişse
if (Deger<30) and (Deger>120) then
'alarmın ne ise buraya yaz...
end if

Text dosyasına yazma örnek;(başka bir yerden alındı)
Dim FILE_NAME As String = "C:\Users\Owner\Documents\test2.txt"
If System.IO.File.Exists(FILE_NAME) = True Then
Dim objWriter As New System.IO.StreamWriter( FILE_NAME )
objWriter.Write( TextBox1.Text )
objWriter.Close()
MsgBox("Text written to file")
Else
MsgBox("File Does Not Exist")
End If
ambar7

elmariacci

#2
Alıntı yapılan: ambar7 - 09 Mayıs 2013, 00:32:20
Kodlarda biraz VB6 kayabilir o yüzden mantık olarak tamam da sytax olarak hata olabilir

alarm için;
Dim Deger as integer
Deger = Val(textbox1.Text)  'alınan değer hangi text kutusuna kaydedilmişse
if (Deger<30) and (Deger>120) then
'alarmın ne ise buraya yaz...
end if

Text dosyasına yazma örnek;(başka bir yerden alındı)
Dim FILE_NAME As String = "C:\Users\Owner\Documents\test2.txt"
If System.IO.File.Exists(FILE_NAME) = True Then
Dim objWriter As New System.IO.StreamWriter( FILE_NAME )
objWriter.Write( TextBox1.Text )
objWriter.Close()
MsgBox("Text written to file")
Else
MsgBox("File Does Not Exist")
End If

hocam seri porttan gonderdiğim veri şu şekilde
fprintf(iletisim_1,"NABIZ:%lu nn/dk  \r",a )

şimdi sadece sayi gondersem if yapisinda kolaylikla kullanabilirim.Örneğin sadece 35 değerini gondersem if yapisinda

if deger < 40
desem ekrana uyari gelir.ama benim porttan okudum değerde sadece değer yok karekterler de var bu yüzden 40 dan küçük değerlerde uyari ekrani gelmiyor.

sorun nedir sence

Kabil ATICI

metin için sadece rakamların olduğu bölümü al...

alinan_metin = metin.Substring(başlangıç değeri, alınacak karakter sayısı)


Veya senin devrense, neden sadece nabız sayısını bilgisayara göndemiyorsun? Gelen değerin başına  ve sonuna istediğin şeyi eklemek bilgisarda daha kolaydır...
ambar7