سلام
دستورات لازم برای خواندن و نوشتن از پورت سریال در سی شارپ رو میخاستم
با سپاس
نمایش نسخه قابل چاپ
سلام
دستورات لازم برای خواندن و نوشتن از پورت سریال در سی شارپ رو میخاستم
با سپاس
یک مثال خیلی ساده و کامل.نقل قول:
نوشته اصلی توسط javad naderi [Dear Guest/Member you can't see link before replyclick here to register]
مرسی ولی میشه دستورات رو توضیح بدین؟
ارسال
دریافت
تنظیمات پورت
اول از همه شما کامپوننت serial port رو از نوار ابزار به برنامه اضافه میکنین.نقل قول:
نوشته اصلی توسط javad naderi [Dear Guest/Member you can't see link before replyclick here to register]
دستوراتش هم ساده هستن.
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));
}
سلامنقل قول:
نوشته اصلی توسط javad naderi [Dear Guest/Member you can't see link before replyclick here to register]
نمی دونم قبلا این تایپیک را دیدید؟
[Dear Guest/Member you can't see link before replyclick here to register]
اره دیدم ولی کلی بود من یه توضیح مختصر میخاستم که دوستمون دادن
مرسی از همه
سلام من تازه عضو شدم ، یه سری کد کار با GSM MODEM میزارم اگه ممکنه یه توضیحاتی در مورد کدهاش بهم بدید واقعا ممنون میشم
میخواستم معنی این تیکه رو بدونم و اینکه این علامت های شارپ تو این تیکه همراه با region چیه؟
region Constructor#
()public SMSapplication
}
; () InitializeComponent
{
endregion#
سلام
این کار را برای خواندن و نوشتن کردیم
آیا می شه به طور زنده موتور ها را کنترل کرد؟
ممنون
گه بخواهیم عبارات hex را ارسال و دریافت کنیم ، چه کار باید بنکنیم و چه دستوراتی رو چطور باید استفاده کنیم ؟؟؟؟؟؟؟؟؟؟؟
برای ارسال یک بایت به صورت hexنقل قول:
کد:byte[] data = new byte[1];
data[0]=0x55;
serialPort1.Write(data, 0, data.Length);
دریافتش چی میشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
خوب دریافتش میشه ایننقل قول:
البته تو اونت مربوط به پورت سریال باید بنویسی
حالا می تونی با یک تایمر اونو بخونی و تو یک لیبل نشونش بدیکد:int in_data;
in_data= serialPort1.ReadByte();
مثل کد زیر که مقدار دسیمال رو تو لیبل نشون میده
و اگه بخوای به صورت هکس نشون بدی از کد زیر استفاده کنکد:label1.Text = in_data.ToString();
کد:label1.Text = Convert.ToString(in_data, 16);
[Dear Guest/Member you can't see link before replyclick here to register]
آموزش کامل پورت سریال
سلام
میخام دیتای روی پورت سریال رو توی یه Richtextbox نمایش بدم
این کد هایی که قرار دادین برا من جواب نمیده !!!
آیا تست شده هستن؟
میشه لطفا یکی راهنمایی کنه چجوری و کجای برنامه باید از این کدا استفاده کنم؟
نقل قول:در این مثال تکست باکس خاصیت مولتی لاینش فعال هست که به جای تکست باکس می تونی از richtext استفاده کنیکد:private void timer1_Tick(object sender, EventArgs e)
{
if(serialPort1.BytesToRead != 0)
{
rec = serialPort1.ReadByte();
textBox1.Text += Convert.ToChar(rec);
}
}
سلام
داداش دستت درد نکنه
اما من موفق نشدم هنوز چیزی نمایش بدم
برنامه رو دیباگ میکنم اصلا وارد این تابع نمیشه
نمیدونم یا تابع رو جای درستی قرار ندادم یا یه مشکل دیگه ای هست؟
من تازه دارم با ویژوال کار میکنم اصلا وارد نیستم
این کد منه لطفا ببین مشکلش چیه؟ :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();
}
}
}
سلام مجدد
آقا اگه من بخام مداام پورت سریال رو چک کنم هر وقت دیتایی اومد دریافت کنم و توی یه ریچ تکست باکس نمایش بدم چیکار کنم
این دستوری که شما قرار دادین یه لحظه دریافت میکنه و دیگه تمام (بصورت دائمی نیست)
یه چیزی میخام مثل ترمینال کدویژن هر 16 بایتی که نمایش میده یه اینتر بخوره بره خط بعدی الباقی دیتا رو به همین صورت تا انتها نمایش بده
ممنون میشم دقیق تر و با توضیحات راهنمایی کنید:wink:
سپاس
باید از رویداد (Event ) DataReceived استفاده کنید.
مثالش هم داخل msdn هست.
[Dear Guest/Member you can't see link before replyclick here to register]
برادر من جواب نمیده
الان مشکل خوندن از پورت نیست مشکل نمایش دادن چیزی که خوندیمه
بعد از خوندن میخام دیتا رو توی یه تکست باکس نمایش بدم اما ارور میده
الان خطی که قرمز کردم مشکل این داستانهکد:
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");
}
نمیدونم چرا وقتی یه تکست باکس توی وقفه سریال استفاده میکنم هنگام اجرای برنامه خطا میگیره ؟!!
کسی میدونه کجا و چجوری باید این مقدار خوانده شده از سریال رو نمایش بدم
سلام داداشنقل قول:
ببخشید میشه بگی تو کدی که قرار دادی rec رو چی تعریف کردی ؟
یا اگه ممکنه کد رو کامل برام بزاری تا از روش برنامم رو بنویسم :mrgreen:
ممنون