Meraba arkadaşlar.pic ile bilgisayar arasında rs232 iletişim kurmaya çalısıorum.Kurdugum kurulu devreden " 85.00,85.00 " bilgisi geliyor.Bu bilgiyi hyper terminal ve putty ile rs232 baglantısı kurarak denedim ve bilgisayara gönderebildim , yani iletişimde sorunum yok.
Ama visual basic 6 yı yeni ögreniorum ve yazdıgım programla gelen veriyi okuyamıorum.
Program şöyle :
Private Sub al_Click()
Dim deger As Integer
MSComm1.CommPort = 4
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
deger = Asc(MSComm1.Input)
Text1.Text = deger
MSComm1.PortOpen = False
End Sub
calıstırdıgımda "invalid producure or argument" diyor ve deger = Asc(MSComm1.Input) satırını gösterior
Portların degerleri com4 oldugu için 4 e ayarlı.Çok acemi oldugum için biraz basit bir program ama tek istedigim text1 kutusunda picden gelen "85.00,85.00" degerini okuyabilmek.
Şimdiden çok teşekkürler.
Bloodofvol
Artık vb.60 kullanmamak gerek. Zira 15 yıl oldu.
microsoft visual basic express adında aratırsan vb.net in bedava sürümünü kulllanmak için gerekli olan linklere ulaşabilirsin.
vb.net adı seni ürkütmesin hepsi aynı otun kahverengisi.Hem daha fazla yardım örnek program bulabilirsin.
Ama senin yerinde olsam ve VB. hiç bilmiyorken VB hiç uğraşmam c# ile çalışırdım.
C# ında express edition u var buda bedava ve bir aramayla (c# express edition) ulaşabilirsin.
visual basicden hiç haz etmem c# ile yapalım derseniz hallederiz.
Merhaba hocam
kodu birde şu şekilde denermisiniz.
Private Sub al_Click()
Dim deger As String
MSComm1.CommPort = 4
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
deger = MSComm1.Input
Text1.Text = deger
MSComm1.PortOpen = False
End Sub
Mscomm componentinin ayarlarını yaptıktan sonra aşağıdaki örnek kodu incelersen dataları alırsın, benim program için yazdığım kısımları çıkardım...
Private Sub MSComm_OnComm()
Dim x As String * 1
Static GelenMesaj As String
Select Case MSComm.CommEvent
Case comEvReceive:
x= MSComm.Input
GelenMesaj = GelenMesaj & x
End Select
End Sub
not: port açma ve kapatma formun load ve unload olaylarında gerçekleşiyor.
influx yazdıgın programı calıstırınca su mavi ekran sorunu cıkıor.
mesaj birleştirme:: 29 Mart 2013, 01:28:16
Arkadaşlar aynı programı visual 9 da yazınca şöyle bir sorun cıkıor
(http://imageshack.us/photo/my-images/341/asdcn.png/)
Merhaba,
http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express (http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express)
mavi ekrana düşmesinin sebebi comport ayarlarınla ilgili olabilir, çakışma falan olabilir...
Çok teşekkürler arkadaşlar , c# a geçmeye karar verdim :D, böyle olmuyor
Çok güzel ettiniz. Kullandığım bir programdan seri portla ilgili kısımları kopyaladım işine yarar umarım.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace seri_port_uygulamasi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public SerialPort sp = new SerialPort();
MessageBox.Show("seri port clası açıldı");
private void Form1_Load(object sender, EventArgs e)
{
string[] portlar = SerialPort.GetPortNames(); // portları dizi halinde aldık
foreach (string port in portlar)
{
comboBox1.Items.Add(port.ToString()); // Portlarımızı combobox ın içine aldık.
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
}
void seri_port_baglan() //bağlantı fonksiyonu
{
if (sp.IsOpen) // Bağlantıyı açıyoruz.eğer önceden bağlan butonuna basmış isek yani bağlantıyı açmışsak aşağıdaki hata mesajını verecektir.
{
MessageBox.Show("Port Açık Bulunmaktadır..", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button3);
return;
}
else
{
try
{
sp.BaudRate = int.Parse("9600"); // Hız olarak 9600 verdik.
sp.DataBits = int.Parse("8"); // Veri bit ini de 8 bit olarak verdik
sp.StopBits = System.IO.Ports.StopBits.One; // Durma bitini tek sefer olarak verdik.
sp.Parity = Parity.None; // eşlik bit ini vermedik.
sp.PortName = comboBox1.Text; // Port adlarını comboboxtan alıyoruz.
sp.Open(); // Bağlantıyı açıyoruz
MessageBox.Show("Bağlantı Başarılı");
}
catch (Exception) // Herhangi bir hata anında alttaki hata mesajını alacağız..
{
MessageBox.Show("seri cihazınız bağlı değil...", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button3);
}
}
}
public string trDuzelt(string a) //türkçe karakter düzeltme fonksiyonumuz
{
a = a.Replace("İ", "I");
a = a.Replace("Ü", "U");
a = a.Replace("Ç", "C");
a = a.Replace("Ş", "S");
a = a.Replace("Ö", "O");
a = a.Replace("Ğ", "G");
a = a.Replace("ı", "I");
a = a.Replace("ü", "U");
a = a.Replace("ş", "S");
a = a.Replace("ç", "C");
a = a.Replace("ğ", "G");
a = a.Replace("ö", "O");
return a;
}
private void seri_port_data_gonder()
{
try
{
if (sp.IsOpen)
{
//Thread.Sleep(1000); // Thread süresini 1000 olarak verdik
sp.Write(String.Format(richTextBox1.Text)); // data gönderme örneği
sp.Write(String.Format("deneme",(Char)13, textBox3.Text)); // göndereceğiniz verileri buna benzer bir şekilde de gönderebilirsiniz
MessageBox.Show("veri Gönderimi Başarıyla Sonuçlandı.."); // Ve gönderdik
textBox4.Text = sp.ReadExisting(); //gelen veriyi okuduk
sp.DataReceived += sp_DataReceived;
}
}
catch (Exception)
{
MessageBox.Show("veri Gönderme Başarısız !", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button3);
}
}
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//byte[] ReceiveBuffer = new byte[2048];
int offset = 0;
int toRead = sp.BytesToRead;
//sp.Read(ReceiveBuffer, offset, toRead);
offset += toRead;
}
private void button1_Click(object sender, EventArgs e)
{
seri_port_baglan();
seri_port_data_gonder();
}
}
}