gpt4 book ai didi

c# - 一段时间后串行端口访问被拒绝

转载 作者:行者123 更新时间:2023-12-03 03:18:11 25 4
gpt4 key购买 nike

我有一个 FEZ 板(我认为这并不重要),我通过串行端口与它通信。我制作了一个 WPF 应用程序,在其中打开 COM 端口并在其上写入数据。这一切都很好,但是在发送数据随机次数(有时 3 次,有时 4 次)后,当我尝试再次发送时,我在端口的 Write 方法上收到一个异常,提示“连接到系统的设备无法正常工作”或尝试在出现此异常后关闭端口,我收到“访问端口被拒绝”。当我重新启动程序时,我在 Open 方法上遇到相同的错误(这当然是合乎逻辑的)。当我断开代表串行链路的 USB 并重新连接时,我可以再次使用该端口。

这是我的代码:

    SerialPort port = new SerialPort("COM10", 9600);
public MainWindow()
{
InitializeComponent();
port.Open();
}

private void button1_Click(object sender, RoutedEventArgs e)
{
SendMessage("Relay1On\r\n");
}

private void button2_Click(object sender, RoutedEventArgs e)
{
SendMessage("Relay1Off\r\n");
}

private void SendMessage(string message)
{
try
{
port.Write(message);
}
catch (Exception exc)
{
listbox1.Items.Add(exc.Message);
}
}

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
port.Close();
}

我不认为我做了什么奇怪的事情。FEZ 板上运行的代码如下:

    private Gadgeteer.Interfaces.DigitalOutput _relay;

void ProgramStarted()
{
try
{
usbSerial.Configure(9600, GT.Interfaces.Serial.SerialParity.None, GT.Interfaces.Serial.SerialStopBits.One, 8);
usbSerial.SerialLine.LineReceivedEventDelimiter = "\r\n";
usbSerial.SerialLine.AutoReadLineEnabled = true;
usbSerial.SerialLine.ReadTimeout = GT.Interfaces.Serial.InfiniteTimeout;
usbSerial.SerialLine.LineReceived += new GT.Interfaces.Serial.LineReceivedEventHandler(SerialLine_LineReceived);
usbSerial.SerialLine.Open();
_relay = eBlockExpansion.SetupDigitalOutput(GT.Socket.Pin.Nine, false);
}
catch (Exception exc)
{
throw exc;
}
}

void SerialLine_LineReceived(GT.Interfaces.Serial sender, string data)
{
if (data == "Relay1On")
{
_relay.Write(true);
}
else if (data == "Relay1Off")
{
_relay.Write(false);
}
}

但我有这种感觉,它与桌面端有更多关系。

最佳答案

在我看来,这像是你的串行端口的问题。 USB 非常不可靠,USB 串行端口也非常不可靠。您也许可以使用不同的驱动程序进行改进,或者将其插入不同的 USB 端口,获取不同品牌的 USB 适配器,或者最好将其替换为 PCI 卡。

关于c# - 一段时间后串行端口访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9749578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com