seri porttan (tx) data yollamak

Başlatan kudretuzuner, 06 Aralık 2010, 00:42:05

kudretuzuner

Merhaba
Uzun bir süredir (1 yıla yakın) PIC ile uğraşmaktayım.Sanal olarak ta belli bir yere kadar geldiğimi zannediyorum.
Şimdi sıra PC'den PIC'e fiziksel olarak (tx) seri portu kullanarak PIC'e bir data yollamak istiyorum.VB.Net 2008 express edition kullanmaktayım.seriportun ayarlarını form üzerinde yapıyorum.Sorum şöyle olacak form içine koyduğum textbox1 içine yazdığım "1" değerini (ASCII  Hex31) seriport (tx) pininden çıkarmak için buton klik içine nasıl bir kod yazmalıyım?Şimdiden teşekkür ederim.
Amatör

RcALTIN

Alıntı yapılan: kudretuzuner - 06 Aralık 2010, 00:42:05
Merhaba
Uzun bir süredir (1 yıla yakın) PIC ile uğraşmaktayım.Sanal olarak ta belli bir yere kadar geldiğimi zannediyorum.
Şimdi sıra PC'den PIC'e fiziksel olarak (tx) seri portu kullanarak PIC'e bir data yollamak istiyorum.VB.Net 2008 express edition kullanmaktayım.seriportun ayarlarını form üzerinde yapıyorum.Sorum şöyle olacak form içine koyduğum textbox1 içine yazdığım "1" değerini (ASCII  Hex31) seriport (tx) pininden çıkarmak için buton klik içine nasıl bir kod yazmalıyım?Şimdiden teşekkür ederim.

Öncelikle SerialPort nesnesini araştırın... Liseden beri VB yüzü görmedim, mantıksal olarak yaklaşırsak önce nesneyi configure edip(port, baudrate, databits v.s) açmalı(nesne.Open()) ardından da button click içinde textboxtaki bilgiyi hali hazırda açık olan seriport nesnemizin nesne.WriteLine(textBox.Text) metoduyla yazdırmamız gerekir. Geleni alma işlemi nesnemizin DataReceived olayı(event) içerisinde string s = nesne.ReadLine() şeklinde oluyor, biraz araştırın basit olduğunu göreceksiniz...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

kudretuzuner

Merhaba
Aşağıdaki bu yazılım ile PC'nin Seriport TX çıkışını RX girişine vererek(kısa devre)yaparsak  text boxtan girilen data "GÖNDER"e bastıktan sonra mesaj boxta görebilir miyiz?Yanlış bir komut ile seriporta zarar vermek istemiyorum.Teşekkürler.

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'BAĞLAN
        SerialPort1.PortName = ComboBox1.Text
        SerialPort1.Open()
        Button1.Enabled = False
        Button3.Enabled = True
        Button2.Enabled = True
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'GÖNDER
        SerialPort1.Write(TextBox1.Text)
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'BAĞLANTIYI KES
        SerialPort1.Close()
        Button1.Enabled = True
        Button3.Enabled = False
        Button2.Enabled = False
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.Text = "COM1"
        Button3.Enabled = False
        Button2.Enabled = False
    End Sub
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
         'DATA ALINMASI
        Dim gelen_data As String = SerialPort1.ReadLine
        MsgBox(gelen_data)
    End Sub
End Class
Amatör

justice_for_all

hocam bana kalirsa siz isinizi yazilimla halledin...

Eltima.Software.Virtual.Serial.Port.Driver programi var onu indirin daha sonra bi cift virtual seri port olusturun daha sonra hyper terminalden gorebilirsiniz gonderdiginiz datayi...

ama sizin programinizda bi sorun yok egerki seri portunuz pice bagliysa picin tx ve rx uclarini kisadevre yapsaniz bile olur...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

kudretuzuner

Merhaba
Ben adım adım gideyim diyorum.Bu kod iş görürse araya MAX232 yi bağlayacağım ve Max232'den PC'ye döneceğim.Onu da halledersem MAX232'yi PIC'e girip PIC'te ASCII kodu'nu görmek istiyorum.Teşekkürler
Amatör

justice_for_all

is gorur hocam yalniz BAUDRATE hizini ayarlamamissiniz sanirim oda etki yapabilir.

unutmayin sakin.

Iyi calismalar.
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

kudretuzuner

VB.Net'te projeyi tasarladım ve de özellikler bölümünden onları ayarladım.Çok Teşekkür ederim.
Amatör

justice_for_all

anladim baudrate sabit diyosunuz yani...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

kudretuzuner

Merhaba
Arkadaşlar basit bir VB Net ara yüz ile seri iletişim için demo yaptım.Prensip tasarımıdır.Dosya içindeki notta da yazdığım gibi framework2 yüklü olmalı ve de PC'nizde seri port bulunmalı ki program çalışsın.Tabii dir ki
PC kasasındaki seri port pinlerinden 2 ve 3 nolu pinlerin kısa devre edilmesi gerekir.RX+TX birleştirilmeli.(dikkatli bir şekilde kısa devre yapılmalı)Burada dikkat edilecek en önemli nokta 2 ve 3 nolu pinlerin PC kapalı iken kısa devre edilmesi.Diğer pinlere temas olmaması gerekir,emin olduktan sonra PC'nizi açabilirsiniz. Kolay gelsin.
http://www.4shared.com/file/nYu44nDx/USART_DEMO.html
Amatör

Ali_54

slm. Yukarıdaki kodlardan da esinlenerek pcb bastım. max232 li 16f877 li. usb seri dönüştürücü kullanarak pc ye bağladım. vb den de basit bi arayüz yazdım. ve pratik olarak denedim. sonuç:
     iletişim var ama pc ile pic sanki farkı dillerde konuşuyorlar. yani pc den mesela 2 sayısını yolluyorum lcd de pi sayısı yazıyor. vessayre
     pic ten pc ye metin yolluyorum.  türkçe bişiler pc de ise       ???3^3hb!'^^)/rgj   gibi saçma sapan ifedeler olarak çıkıyor.  bu sorunu günlerce uğraştım araştırdım ama çozemedim. bilgisi olan var mı??
     bir de benzer bişey şurda olmuştu proteuste seri iletişimi denerken advenced ayarlarından rx tx polariy kısmını inverted değilde normal olarak ayarlıysa virtual terminalde yazılar yine böyle saçma sapan çıkıyodu. ama inverted yapınca düzeeliyordu..  peki gerçekte nasıl olacak ki bu??     vb de iletişim ayarlarını serial port nesnesinin proterpies kısmında ayarlı. 9600 hızı. parity yok, stop 1 falan. ccs c de de böyle
vb  kodları kabaca şöyle:

Public Class Form1
    Dim s As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add("COM1")
        ComboBox1.Items.Add("COM2")
        ComboBox1.Items.Add("COM3")
        ComboBox1.Items.Add("COM4")
        ComboBox1.Items.Add("COM5")
        ComboBox1.Items.Add("COM6")
        ComboBox1.Items.Add("COM7")
        ComboBox1.Items.Add("COM8")
        ComboBox1.Items.Add("COM9")
        ComboBox1.Items.Add("COM10")
        ComboBox1.Items.Add("COM11")
        ComboBox1.Items.Add("COM12")

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        SerialPort1.WriteLine(TextBox1.Text)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        s = SerialPort1.ReadLine()
    End Sub
    Private Sub serialport1_datareceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        s = SerialPort1.ReadLine()
        TextBox2.Text = s
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        SerialPort1.Close()
        SerialPort1.PortName = ComboBox1.Text
        SerialPort1.Open()

    End Sub
End Class
1 harf öğretenin 4 gün kölesi olurum.

kudretuzuner

Merhaba
USB to serial ara kablolu dönüştürücü ile ben de netice alamamıştım.Direk seri portu kullanmanızı öneririm.
Amatör

Ali_54

seri port girişli pc yok malesef. laptoptan mecbur dönüştürücü kullandım.  serisi olan bi masa üstünde denerim o halde yakında. ama bu işi leptoptan çözmeliyim.
1 harf öğretenin 4 gün kölesi olurum.

smyomekatronik

Esselamu Aleyküm

Benzer bir sorunu, s7-200 için yapmış olduğum devreyi usb çevirici ile kullanırken yaşadım. Kullandığım programda hız ayarı 9600 fakat aygıt yöneticinden çeviricinin özelliklerini kontrol ettiğim zaman bu hızın farklı olduğunu gördüm. Hızı 9600 olarak ayarladığımda sorun çözülmüş oldu.

Ali_54

Ve Aleykimselam. hyper terminaldende denedim seri portlu bir pc bulupta olmadı. çok gitmedim gerçi üstüne. agıt yöneticisnde basettiğiniz hız ayarı yerini bulamadım. iletişim hallolsa çağ atlamış olurum  :)
f
1 harf öğretenin 4 gün kölesi olurum.

vitruvius

Alıntı yapılan: Ali_54 - 15 Haziran 2011, 10:10:18
Ve Aleykimselam. hyper terminaldende denedim seri portlu bir pc bulupta olmadı. çok gitmedim gerçi üstüne. agıt yöneticisnde basettiğiniz hız ayarı yerini bulamadım. iletişim hallolsa çağ atlamış olurum  :)(Resim gizlendi görmek için tıklayın.)
f


USB-Rs232 çeviriciniz Prolific entegreli mi ve Windows 7 mi kullanıyorsunuz? Çevirici cihazınızı bilgisayara taktığınızda aygıt yöneticisinde "Bağlantı Noktaları(COM veLTP)" başlığının altına "USB Serial Port(COMX)" olarak düşer. Çift tıklarsanız Port Settings/Gelişmiş Ayarlar gibi kısımda ilgili ayarları görürsünüz.

Laptopta simulasyon yaparken sanal port oluşturan programları kullanın. Aşağıdaki linkten indirebilirsiniz.

https://rapidshare.com/files/4142764373/Virtual_Seri_Port.zip