解决方案 »

  1.   

    关闭的时候没进异常,打开串口的时候报异常了:“对端口“COM8”的访问被拒绝。”一开始提的。
      

  2.   

    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);
    }这里异常里关掉串口
      

  3.   

    为什么LZ老是遇到奇怪的问题断点调试找问题啊我用这两句测试了下,怎么没遇到问题的。
    while (JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Close();
    if (!JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Open();怀疑LZ的端口8被其他程序占用,或者在本程序中别的SerialPort控件占用,但这个控件不叫JoystickerLexium23dPort。检查下程序里有没有别的串口控件
      

  4.   

    顺便问下,断点调试的话,有没有执行到JoystickerLexium23dPort.Close();?
      

  5.   

    平时调用这两个关闭和打开串口函数没有问题。
    串口的Data_Received事件中若发生了异常执行相应操作“将相应操作杆线程关闭,关掉串口,再重新打开串口,重新再打开操作杆线程”时会出现“对端口的访问被拒绝”,很偶尔才出现一次。
    不可能有其它软件,程序,地方占着了这个口。
      

  6.   


    可是你并没有在catch块中关闭串口呀
    你说的在串口的Data_Received事件中若发生了异常执行关闭操作,但是你的异常处理里并没有执行关闭操作啊而且你贴的程序中都没有Data_Received事件的处理代码
      

  7.   

    关掉串口,再重新打开串口是放到串口的Data_Received事件的异常捕获中的,关闭串口的代码中 joyStickRightPortKeepReading = false; 是停止操作杆的线程,它是一个不断循环向串口发送命令,得到返回信息,来知道操作杆的移动情况。这边应该是有问题的,因为关闭串口的时候,线程有可能还没结束掉。
      

  8.   

    修改方法:
    1、将工程的目标框架设置为:.net framework 4
    2、可同时升级到.net framework 4.5