PDA

View Full Version : Time Outهنگام خوانده اطلاعات از SerialPort



sajjad0h
سه شنبه 06 فروردین 1392, 15:06 عصر
سلام من در برنامه ای دارم از Serial port استفاده می کنم اما هنگام استفاده از متد های ReadExisting ویا readline چیزی رو نمی تونم از پرت بخونم و پیام the operation has timed out میده
بخشی از کد

SerialPort mySerialPort = new SerialPort("COM1");

mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.ReadTimeout = 500;
mySerialPort.WriteTimeout = 500
...
;
mySerialPort.Open();
mySerialPort.DtrEnable = true

اما موقع خوندن جواب نمیده و بعد از مدتی پیام Time Out میده

textBox+= mySerialPort.ReadExisting();

لطفا کمکم کنید

با تشکر

ali_habibi1384
سه شنبه 06 فروردین 1392, 18:59 عصر
توضيحاتتون در اين رابطه كم بود علي ايهال شما ميبايست در رويداد DataRecieved مقادير دريافتي رو بخونيد:

private void portCard_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
ReciveData = ReciveData + indata;
}
مقدار دريافتي در ReciveData موجود است

sajjad0h
دوشنبه 19 فروردین 1392, 09:02 صبح
توضيحاتتون در اين رابطه كم بود علي ايهال شما ميبايست در رويداد DataRecieved مقادير دريافتي رو بخونيد:

private void portCard_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
ReciveData = ReciveData + indata;
}
مقدار دريافتي در ReciveData موجود است


سلام
این بخشی از کدی که نوشتم فک کنم کافی باشه






private void readButton_Click_1(object sender, EventArgs e)

{
SerialPort sp= new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
try

{

sp.DtrEnable = true;

//clear the text
boxtextBox.Text = "";
//set read time out to 500
sp.ReadTimeout = 500;
sp.Open();
sp.DtrEnable = true;
//read serial port and displayed the data in text
int readByte=sp.ReadByte();
textBox.Text = sp.ReadLine();
int bytes = sp.BytesToRead;
byte[] buffer = new byte[bytes];
sp.Read(buffer, 0, bytes);
}

catch
(System.Exception ex)

{
baudRatelLabel.Text = ex.Message;
}

finally
{
sp.Close();

}





شما هم در کدتون از string indata = sp.ReadExisting(); استفاده کردین در برنامه وقتی به ReadExisting می رسه جوابش صفر و نمی تونه چیزی رو بخونه