为什么LZ老是遇到奇怪的问题断点调试找问题啊我用这两句测试了下,怎么没遇到问题的。 while (JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Close(); if (!JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Open();怀疑LZ的端口8被其他程序占用,或者在本程序中别的SerialPort控件占用,但这个控件不叫JoystickerLexium23dPort。检查下程序里有没有别的串口控件
{
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);
}这里异常里关掉串口
while (JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Close();
if (!JoystickerLexium23dPort.IsOpen) JoystickerLexium23dPort.Open();怀疑LZ的端口8被其他程序占用,或者在本程序中别的SerialPort控件占用,但这个控件不叫JoystickerLexium23dPort。检查下程序里有没有别的串口控件
串口的Data_Received事件中若发生了异常执行相应操作“将相应操作杆线程关闭,关掉串口,再重新打开串口,重新再打开操作杆线程”时会出现“对端口的访问被拒绝”,很偶尔才出现一次。
不可能有其它软件,程序,地方占着了这个口。
可是你并没有在catch块中关闭串口呀
你说的在串口的Data_Received事件中若发生了异常执行关闭操作,但是你的异常处理里并没有执行关闭操作啊而且你贴的程序中都没有Data_Received事件的处理代码
1、将工程的目标框架设置为:.net framework 4
2、可同时升级到.net framework 4.5