Ardiuno Bilgisayar Seriport Haberleşme

altuntas78

Üye
Katılım
14 Mar 2010
Mesajlar
9
Puanları
1
Yaş
46
Merhaba Arkadaşlar,

Ardiuno ile bilgisayar arasında veri alışverişi yapmayı araştırırken şu konuyu gördüm.
http://timewitharduino.blogspot.com/2009/05/getting-arduino-to-write-to-or-read.html

VBS kodu ve arduino kodlarını aşağıda yazdım. VBS dosyasını çalıştırınca herhangi bir hata çıkmıyor, ama "C:\docs\results.txt" dosyasına da hiç bir veri kaydetmiyor. Nerede hata yapmış olabilirim?

Kod:
Const ForReading = 1
Const ForWriting = 2

Set fso = CreateObject("Scripting.FileSystemObject")
Set com = fso.OpenTextFile("COM3:9600,N,8,1", ForReading)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\docs\results.txt", ForWriting, True)

MsgBox("Start to read data from COM")

Do While com.AtEndOfStream <> True
s = com.ReadLine
objFile.WriteLine(s)
WScript.Sleep(200)
Loop

objFile.Close
com.Close()
MsgBox("Finished writing to COM")


Ardiuno Kodu:
Kod:
void setup()
{

  Serial.begin(9600);
}



void loop()
{

  Serial.println(1);
  delay(100);
  Serial.println(2);
  delay(100);
  Serial.println(3);
  delay(100);
  Serial.println(4);
    Serial.println(4);
  delay(100);
    Serial.println("Test");
Serial.println(5);
Serial.println(6);
Serial.println(7);
Serial.println(8);
Serial.println(9);
}
 
Kurcalarken birden C:\docs\results.txt verilerin yazılmış olduğunu gördüm. Ama şu şekilde oldu.

İlk önce arduino programını çalıştırdım. Programda Seri Port Ekranını açıp kapattım. Daha sonra txt dosyasına yazmış olduğunu gördüm.

Yani sıkıntı sadece şu; seriport ekranını açıp kapatmadan doğrudan nasıl veri alabilirim. Muhtemelen vbs dosyasında değişiklik gerekiyor.
 
Okuduğun örneğin başında

FRIDAY, MAY 22, 2009​


yazıyor. Vay be ne günlerdi o zamanlar daha gençtim.

Muhtemelen windows sürümü farklıdır. o tarihten bu yana çok fazla güvenlik eklentisi geldi. Daha güncel birşeyler denemelisin. mesela

Kod:
   Private Sub Log_button_Click(sender As Object, e As EventArgs) Handles Log_button.Click
        Log_button.BackColor = Color.LimeGreen
        StopLog_button.BackColor = Color.Transparent
        StopLog_button.Enabled = True
    End Sub
    Private Sub StopLog_button_Click(sender As Object, e As EventArgs) Handles StopLog_button.Click
        StopLog_button.BackColor = Color.Red
        Log_button.BackColor = Color.Transparent
        Log_button.Enabled = True
    End Sub

    'READ DATA STRING INPUT
    Dim Data_received As String

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

        If SerialPort1.IsOpen Then
            Data_received &= SerialPort1.ReadExisting


            If Len(Data_received) > 0 Then
                ReceiveTextBox.Text = Data_received
                HistoryTextBox.Text = TimeOfDay.ToLongTimeString + " : " + Data_received + vbNewLine + HistoryTextBox.Text

                If Log_button.BackColor = Color.LimeGreen Then
                    Dim writeFile As New System.IO.StreamWriter("Read.txt", IO.FileMode.Append)
                    writeFile.Write(TimeOfDay.ToLongTimeString + " : " + Data_received + vbCrLf)
                    writeFile.Close()
                End If
       End If
    End Sub

kaynak : https://www.vbforums.com/showthread.php?882575-RESOLVED-Save-Serial-Data-to-Text-File
 
Okuduğun örneğin başında



yazıyor. Vay be ne günlerdi o zamanlar daha gençtim.

Muhtemelen windows sürümü farklıdır. o tarihten bu yana çok fazla güvenlik eklentisi geldi. Daha güncel birşeyler denemelisin. mesela

Kod:
   Private Sub Log_button_Click(sender As Object, e As EventArgs) Handles Log_button.Click
        Log_button.BackColor = Color.LimeGreen
        StopLog_button.BackColor = Color.Transparent
        StopLog_button.Enabled = True
    End Sub
    Private Sub StopLog_button_Click(sender As Object, e As EventArgs) Handles StopLog_button.Click
        StopLog_button.BackColor = Color.Red
        Log_button.BackColor = Color.Transparent
        Log_button.Enabled = True
    End Sub

    'READ DATA STRING INPUT
    Dim Data_received As String

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

        If SerialPort1.IsOpen Then
            Data_received &= SerialPort1.ReadExisting


            If Len(Data_received) > 0 Then
                ReceiveTextBox.Text = Data_received
                HistoryTextBox.Text = TimeOfDay.ToLongTimeString + " : " + Data_received + vbNewLine + HistoryTextBox.Text

                If Log_button.BackColor = Color.LimeGreen Then
                    Dim writeFile As New System.IO.StreamWriter("Read.txt", IO.FileMode.Append)
                    writeFile.Write(TimeOfDay.ToLongTimeString + " : " + Data_received + vbCrLf)
                    writeFile.Close()
                End If
       End If
    End Sub

kaynak : https://www.vbforums.com/showthread.php?882575-RESOLVED-Save-Serial-Data-to-Text-File
Teşekkür ederim. Bunlar VBA kodu mu? Accesse yapıştırınca ortalık kızamık gibi kızardı :)
 
Evet vb kodu ama ide farkı olabilir ben qbasic ten sonra bir daha basic dilini kullanmadım. O yüzden hangi ide kullanılıyor bilmiyorum ama visual studio dur büyük ihtimalle. Form butonları var üzerinde eğer terminal uygulaması yapıyorsan biraz farklı olabilir.
 
Teşekkürler. Pek anlamıyorum yazılımdan ama azimliyim. Çözüm bulursam burada paylaşacağım.
 

Forum istatistikleri

Konular
129,708
Mesajlar
929,137
Kullanıcılar
452,411
Son üye
atiizdmr

Yeni konular

Geri
Üst