PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : پورت سریال در سی شارپ



javad naderi
19-04-2013, 19:33
سلام
دستورات لازم برای خواندن و نوشتن از پورت سریال در سی شارپ رو میخاستم
با سپاس

alisaeed
19-04-2013, 20:47
سلام
دستورات لازم برای خواندن و نوشتن از پورت سریال در سی شارپ رو میخاستم
با سپاس

یک مثال خیلی ساده و کامل.

javad naderi
19-04-2013, 21:28
مرسی ولی میشه دستورات رو توضیح بدین؟
ارسال
دریافت
تنظیمات پورت

alisaeed
19-04-2013, 22:31
مرسی ولی میشه دستورات رو توضیح بدین؟
ارسال
دریافت
تنظیمات پورت
اول از همه شما کامپوننت serial port رو از نوار ابزار به برنامه اضافه میکنین.
دستوراتش هم ساده هستن.
PortName برای معرفی COM:




serialPort1.PortName = "COM1";

BaudRateبرای تنظیم buadrate:




serialPort1.BaudRate = 9600;

قبل از اینکه بخوایین دیتا بفرستید یا بگیرید باید پورت رو به شکل زیر باز کنین:



serialPort1.Open();

و البته برای بستن پورت هم میتونین از Close استفاده کنین:



serialPort1.Close();

برای فرستادن دیتا هم به شکل زیر عمل کنین:



char[] buff = new char[1];
buff[0] = 'a';
serialPort1.Write(buff, 0, 1);


برای دریافت هم در Event مربوط به کامپوننت سریال DataReceived به شکل زیر عمل کنین:



private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxString = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}

mzarkoob
19-04-2013, 22:37
سلام
دستورات لازم برای خواندن و نوشتن از پورت سریال در سی شارپ رو میخاستم
با سپاس
سلام
نمی دونم قبلا این تایپیک را دیدید؟
بررسی پورت سریال در سی شارپ#c - ایـــــــــران میـــــــکرو ™ (You can see links before reply)

javad naderi
20-04-2013, 15:00
اره دیدم ولی کلی بود من یه توضیح مختصر میخاستم که دوستمون دادن
مرسی از همه

ghandrz
27-09-2013, 23:48
سلام من تازه عضو شدم ، یه سری کد کار با GSM MODEM میزارم اگه ممکنه یه توضیحاتی در مورد کدهاش بهم بدید واقعا ممنون میشم


region Constructor#

()public SMSapplication
}
; () InitializeComponent
{
endregion#

میخواستم معنی این تیکه رو بدونم و اینکه این علامت های شارپ تو این تیکه همراه با region چیه؟

Altostratous
19-10-2013, 18:49
سلام
این کار را برای خواندن و نوشتن کردیم
آیا می شه به طور زنده موتور ها را کنترل کرد؟
ممنون

omidan321
19-10-2013, 21:29
گه بخواهیم عبارات hex را ارسال و دریافت کنیم ، چه کار باید بنکنیم و چه دستوراتی رو چطور باید استفاده کنیم ؟؟؟؟؟؟؟؟؟؟؟

pirozy
20-10-2013, 10:56
گه بخواهیم عبارات hex را ارسال و دریافت کنیم ، چه کار باید بنکنیم و چه دستوراتی رو چطور باید استفاده کنیم ؟؟؟؟؟؟؟؟؟؟؟

برای ارسال یک بایت به صورت hex

byte[] data = new byte[1];
data[0]=0x55;
serialPort1.Write(data, 0, data.Length);

omidan321
21-10-2013, 14:37
دریافتش چی میشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

pirozy
21-10-2013, 16:11
دریافتش چی میشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

خوب دریافتش میشه این
البته تو اونت مربوط به پورت سریال باید بنویسی

int in_data;
in_data= serialPort1.ReadByte();
حالا می تونی با یک تایمر اونو بخونی و تو یک لیبل نشونش بدی
مثل کد زیر که مقدار دسیمال رو تو لیبل نشون میده

label1.Text = in_data.ToString();
و اگه بخوای به صورت هکس نشون بدی از کد زیر استفاده کن

label1.Text = Convert.ToString(in_data, 16);

shahrivar88
22-10-2013, 17:25
دانلود کتاب آموزش ارتباط با پورت سریال در C# تکنو الکترو - سایت تخصصی برق و الکترونیک (You can see links before reply)

آموزش کامل پورت سریال

ZoZi
09-03-2017, 18:21
سلام
میخام دیتای روی پورت سریال رو توی یه Richtextbox نمایش بدم
این کد هایی که قرار دادین برا من جواب نمیده !!!
آیا تست شده هستن؟

میشه لطفا یکی راهنمایی کنه چجوری و کجای برنامه باید از این کدا استفاده کنم؟

pirozy
09-03-2017, 23:41
سلام
میخام دیتای روی پورت سریال رو توی یه Richtextbox نمایش بدم
این کد هایی که قرار دادین برا من جواب نمیده !!!
آیا تست شده هستن؟

میشه لطفا یکی راهنمایی کنه چجوری و کجای برنامه باید از این کدا استفاده کنم؟


private void timer1_Tick(object sender, EventArgs e)
{

if(serialPort1.BytesToRead != 0)
{
rec = serialPort1.ReadByte();
textBox1.Text += Convert.ToChar(rec);
}
}

در این مثال تکست باکس خاصیت مولتی لاینش فعال هست که به جای تکست باکس می تونی از richtext استفاده کنی

ZoZi
12-03-2017, 00:33
سلام
داداش دستت درد نکنه
اما من موفق نشدم هنوز چیزی نمایش بدم
برنامه رو دیباگ میکنم اصلا وارد این تابع نمیشه
نمیدونم یا تابع رو جای درستی قرار ندادم یا یه مشکل دیگه ای هست؟
من تازه دارم با ویژوال کار میکنم اصلا وارد نیستم
این کد منه لطفا ببین مشکلش چیه؟ :wink:
در ضمن سخت افزاری هم من فقطارتباط 3 پین GND و RX و TX رو برقرار کردم و الباقی پین ها استفاده نشدن


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;




namespace Terminal
{
public partial class Terminal : Form
{
public Boolean opcl = false;
SerialPort Serial = new SerialPort();
string RxString;
char[] buff = new char[1];


private void button1_Click(object sender, EventArgs e)
{


try
{
if (opcl == false)
{
Serial.PortName = comboBox1.Text;
Serial.BaudRate = int.Parse(comboBox2.Text);
Serial.Parity = (Parity)Enum.Parse(typeof(Parity), comboBox3.Items[comboBox3.SelectedIndex].ToString());
Serial.DataBits = int.Parse(comboBox4.Text);
Serial.StopBits = (StopBits)Enum.Parse(typeof(StopBits), comboBox5.Items[comboBox5.SelectedIndex].ToString());
Serial.Open();
MessageBox.Show("Step 1");


//MessageBox.Show(Serial.PortName + "\n" + Serial.BaudRate + "\n" + Serial.Parity + "\n" + Serial.DataBits + "\n" + Serial.StopBits);
button1.Text = "Disconnect";
opcl = true;
}
else
{
Serial.Close();
button1.Text = "Connect";
opcl = false;
}
}
catch
{
MessageBox.Show("Error Opening Serial Port");
}
}




private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
this.TopMost = true;
}
else
{
this.TopMost = false;
}
}


private void timer1_Tick(object sender, EventArgs e)
{
if (Serial.BytesToRead != 0)
{
int rec = Serial.ReadByte();
richTextBox1.Text += Convert.ToChar(rec);
}
}


public Terminal()
{
InitializeComponent();
}




}
}

ZoZi
13-03-2017, 01:33
سلام مجدد
آقا اگه من بخام مداام پورت سریال رو چک کنم هر وقت دیتایی اومد دریافت کنم و توی یه ریچ تکست باکس نمایش بدم چیکار کنم
این دستوری که شما قرار دادین یه لحظه دریافت میکنه و دیگه تمام (بصورت دائمی نیست)
یه چیزی میخام مثل ترمینال کدویژن هر 16 بایتی که نمایش میده یه اینتر بخوره بره خط بعدی الباقی دیتا رو به همین صورت تا انتها نمایش بده

ممنون میشم دقیق تر و با توضیحات راهنمایی کنید:wink:
سپاس

mrm
13-03-2017, 15:45
باید از رویداد (Event ) DataReceived استفاده کنید.
مثالش هم داخل msdn هست.
SerialPort.DataReceived Event (System.IO.Ports) (You can see links before reply(v=vs.110). aspx)

ZoZi
22-03-2017, 23:23
برادر من جواب نمیده
الان مشکل خوندن از پورت نیست مشکل نمایش دادن چیزی که خوندیمه
بعد از خوندن میخام دیتا رو توی یه تکست باکس نمایش بدم اما ارور میده




private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
MessageBox.Show("ok1");
while (i < 16)
{
buffer += Serial.ReadExisting();
i++;
}
if(i == 16)
textBox1.Text = "DDD";
buffer = null;
MessageBox.Show("ok2");
}





الان خطی که قرمز کردم مشکل این داستانه
نمیدونم چرا وقتی یه تکست باکس توی وقفه سریال استفاده میکنم هنگام اجرای برنامه خطا میگیره ؟!!
کسی میدونه کجا و چجوری باید این مقدار خوانده شده از سریال رو نمایش بدم

ZoZi
28-03-2017, 22:26
private void timer1_Tick(object sender, EventArgs e)
{

if(serialPort1.BytesToRead != 0)
{
rec = serialPort1.ReadByte();
textBox1.Text += Convert.ToChar(rec);
}
}

در این مثال تکست باکس خاصیت مولتی لاینش فعال هست که به جای تکست باکس می تونی از richtext استفاده کنی

سلام داداش
ببخشید میشه بگی تو کدی که قرار دادی rec رو چی تعریف کردی ؟
یا اگه ممکنه کد رو کامل برام بزاری تا از روش برنامم رو بنویسم :mrgreen:
ممنون

ZoZi
31-03-2017, 23:56
سلام
کسی نبود به ما کمکی برسونه؟!!!

من الان کد رو دقیقا مثل همونی که کاربر piroozy گفته بود نوشتم ولی نمیدونم چرا توی event با messagebox مشکلی نداره و دیتا رو توش نمایش میده ولی به textbox میرسه کرش میکنه :unh:





private void timer1_Tick(object sender, EventArgs e)
{
rec = SP.ReadByte();
buffer += Convert.ToString(rec, 16);

MessageBox.Show(buffer);
textBox1.Text = "ABCD";
}



خواهشا اگه کسی میدونه مشکل چیه راهنمایی کنه خیلی وقته توی این قضیه گیر کردم cry::

mrm
01-04-2017, 15:31
حداقل ارور رو بزار ببینیم چی هست؟

sheyda.gh
12-02-2018, 19:36
سلام لینک دانلودشو ورداشتن ، لطفا فایلشو آپلود کنید ممنون میشم:)