PDA

View Full Version : سوال: اگر پورت سریال قطع شد چگونه مجدد میشه ارتباط برقرار کرد و دیتا خواند بدون ریستارت برنامه؟



elahe1393
سه شنبه 25 اردیبهشت 1397, 17:05 عصر
سلام من برنامه ای دارم که با دستگاه از طریق پورت سریال در ارتباط و دیتا میگیره آنالیز میکنه مشکلم اینه که وسط اجرای برنامه مثلا پای شخص بخوره به سیم و پورت قطع بشه خواندن از پورت دچار مشکل میشه حالا ما میگیم وقتی نتونست بخونه میفهمه پورت قطع شده دنبال پورت میگرده تا وقتیکه دوباره پورت وصل بشه و پیداش کنه الان مشکلم اینه وقتی پورت دوباره وصل شد و پیداش کرد شی جدیدی با مشخصات پورت میسازه و داخل همان شی قبلی قرار میده مثلا _serialPort ولی وقتی میخواد بازش کنه خطا میده که همچین پورتی وجود نداره راه حل مشکلم چیه؟

148173

148174

elahe1393
سه شنبه 25 اردیبهشت 1397, 17:06 عصر
MessageBox.Show("Arduino Uno is not Connected to Read Device Information. Please Connect the Device", "NOT CONNECTED", MessageBoxButton.OK, MessageBoxImage.Error);
//_serialPort.Dispose();
// stop = true;
// _timerBox.Stop();
//ReadSerialPortTimer.Stop();
Boolean find = false;
while (!find)
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity WHERE ClassGuid=\"{4d36e978-e325-11ce-bfc1-08002be10318}\"");
foreach (ManagementObject readQueryObj in searcher.Get())

{
object raedCaptionObj = readQueryObj["Caption"];
if (raedCaptionObj != null && raedCaptionObj.ToString().Contains("Arduino"))
{
string[] readCaption = raedCaptionObj.ToString().Split(new string[] { "Arduino Uno (", ")" }, StringSplitOptions.RemoveEmptyEntries);
_serialPort = null;
_serialPort = new SerialPort(readCaption[0], 250000, Parity.None, 8, StopBits.One)
{
Handshake = Handshake.None,
ReadTimeout = 500,
WriteTimeout = 500
};

//serialPortBuild = true;
if (_serialPort != null)
{
find = true;
_serialPort.Close();
IsOpened = false;
if (IsOpened == false)
{
TryOpen();
_serialPort.DiscardInBuffer();
}
}
}
}

}