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
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
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
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...