سلام
دستورات لازم برای خواندن و نوشتن از پورت سریال در سی شارپ رو میخاستم
با سپاس
سلام
دستورات لازم برای خواندن و نوشتن از پورت سریال در سی شارپ رو میخاستم
با سپاس
مرسی ولی میشه دستورات رو توضیح بدین؟
ارسال
دریافت
تنظیمات پورت
اول از همه شما کامپوننت 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)); }
سلام
نمی دونم قبلا این تایپیک را دیدید؟
بررسی پورت سریال در سی شارپ#c - ایـــــــــران میـــــــکرو ™
اره دیدم ولی کلی بود من یه توضیح مختصر میخاستم که دوستمون دادن
مرسی از همه
سلام من تازه عضو شدم ، یه سری کد کار با GSM MODEM میزارم اگه ممکنه یه توضیحاتی در مورد کدهاش بهم بدید واقعا ممنون میشم
میخواستم معنی این تیکه رو بدونم و اینکه این علامت های شارپ تو این تیکه همراه با region چیه؟
region Constructor#
()public SMSapplication
}
; () InitializeComponent
{
endregion#
ویرایش توسط ghandrz : 27-09-2013 در ساعت 23:55
سلام
این کار را برای خواندن و نوشتن کردیم
آیا می شه به طور زنده موتور ها را کنترل کرد؟
ممنون
گه بخواهیم عبارات hex را ارسال و دریافت کنیم ، چه کار باید بنکنیم و چه دستوراتی رو چطور باید استفاده کنیم ؟؟؟؟؟؟؟؟؟؟؟
دریافتش چی میشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
خوب دریافتش میشه این
البته تو اونت مربوط به پورت سریال باید بنویسی
حالا می تونی با یک تایمر اونو بخونی و تو یک لیبل نشونش بدیکد:int in_data; in_data= serialPort1.ReadByte();
مثل کد زیر که مقدار دسیمال رو تو لیبل نشون میده
و اگه بخوای به صورت هکس نشون بدی از کد زیر استفاده کنکد:label1.Text = in_data.ToString();
کد:label1.Text = Convert.ToString(in_data, 16);
دانلود کتاب آموزش ارتباط با پورت سریال در C# تکنو الکترو - سایت تخصصی برق و الکترونیک
آموزش کامل پورت سریال
سلام
میخام دیتای روی پورت سریال رو توی یه Richtextbox نمایش بدم
این کد هایی که قرار دادین برا من جواب نمیده !!!
آیا تست شده هستن؟
میشه لطفا یکی راهنمایی کنه چجوری و کجای برنامه باید از این کدا استفاده کنم؟
سلام
داداش دستت درد نکنه
اما من موفق نشدم هنوز چیزی نمایش بدم
برنامه رو دیباگ میکنم اصلا وارد این تابع نمیشه
نمیدونم یا تابع رو جای درستی قرار ندادم یا یه مشکل دیگه ای هست؟
من تازه دارم با ویژوال کار میکنم اصلا وارد نیستم
این کد منه لطفا ببین مشکلش چیه؟
در ضمن سخت افزاری هم من فقطارتباط 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 : 12-03-2017 در ساعت 00:36
سلام مجدد
آقا اگه من بخام مداام پورت سریال رو چک کنم هر وقت دیتایی اومد دریافت کنم و توی یه ریچ تکست باکس نمایش بدم چیکار کنم
این دستوری که شما قرار دادین یه لحظه دریافت میکنه و دیگه تمام (بصورت دائمی نیست)
یه چیزی میخام مثل ترمینال کدویژن هر 16 بایتی که نمایش میده یه اینتر بخوره بره خط بعدی الباقی دیتا رو به همین صورت تا انتها نمایش بده
ممنون میشم دقیق تر و با توضیحات راهنمایی کنید
سپاس
باید از رویداد (Event ) DataReceived استفاده کنید.
مثالش هم داخل msdn هست.
SerialPort.DataReceived Event (System.IO.Ports)
برادر من جواب نمیده
الان مشکل خوندن از پورت نیست مشکل نمایش دادن چیزی که خوندیمه
بعد از خوندن میخام دیتا رو توی یه تکست باکس نمایش بدم اما ارور میده
الان خطی که قرمز کردم مشکل این داستانهکد: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"); }
نمیدونم چرا وقتی یه تکست باکس توی وقفه سریال استفاده میکنم هنگام اجرای برنامه خطا میگیره ؟!!
کسی میدونه کجا و چجوری باید این مقدار خوانده شده از سریال رو نمایش بدم