Close串口后再重新Open串口,报出“对端口的访问被拒绝”,这显然是之前关串口没有关掉,重复打开了,为什么会这样?解决思路
Close串口后再重新Open串口,报出“对端口的访问被拒绝”,这显然是之前关串口没有关掉,重复打开了,为什么会这样?
在软件中,在串口的Data_Received事件中若发生了异常,将相应操作杆线程关闭,关掉串口,再重新打开串口,再重新打开。在打开串口的时候会报异常“对端口的访问被拒绝”。这显然是之前关串口没有关掉,重复打开了,为什么会这样?
------解决方案--------------------
private void OpenJoystickRightPot()
{
try
{
//if (JoystickerLexium23dPort.IsOpen)
//{
while (JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Close();
if (!JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Open();
//}
//else
//{
// JoystickerLexium23dPort.Open();
在软件中,在串口的Data_Received事件中若发生了异常,将相应操作杆线程关闭,关掉串口,再重新打开串口,再重新打开。在打开串口的时候会报异常“对端口的访问被拒绝”。这显然是之前关串口没有关掉,重复打开了,为什么会这样?
private void CloseJoystickerRightport()
{
try
{
while (JoystickerLexium23dPort.IsOpen)
{
joyStickRightPortKeepReading = false;
JoystickerLexium23dPort.DataReceived -= new SerialDataReceivedEventHandler(JoystickerRightport_DataReceived);
JoystickerLexium23dPort.DiscardOutBuffer();
JoystickerLexium23dPort.DiscardInBuffer();
JoystickerLexium23dPort.Close();
}
}
catch (System.Exception ex)
{
writeExceptionToLogFile("CloseXYZJoystickRightport", ex.Message);
}
}
private void OpenJoystickRightPot()
{
try
{
//if (JoystickerLexium23dPort.IsOpen)
//{
while (JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Close();
if (!JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Open();
//}
//else
//{
// JoystickerLexium23dPort.Open();
//}
JoystickerLexium23dPort.DiscardOutBuffer();
JoystickerLexium23dPort.DiscardInBuffer();
JoystickerLexium23dPort.WriteTimeout = 100;
JoystickerLexium23dPort.ReadTimeout = 100; //**操作杆一发送命令,即使没有动操作杆,也会返回值 //MJ
JoystickerLexium23dPort.DataReceived += new SerialDataReceivedEventHandler(JoystickerRightport_DataReceived);
}
}
catch(Exception ex)
{
writeExceptionToLogFile("OpenXYZJoystickRightport", ex.Message);
}
------解决方案--------------------
private void OpenJoystickRightPot()
{
try
{
//if (JoystickerLexium23dPort.IsOpen)
//{
while (JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Close();
if (!JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Open();
//}
//else
//{
// JoystickerLexium23dPort.Open();