我有一个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();
}
Run Code Online (Sandbox Code Playgroud)
我不认为我做任何奇怪的事情.在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 …Run Code Online (Sandbox Code Playgroud) 为什么是
++[[]][0] == 1
Run Code Online (Sandbox Code Playgroud)
但确实
++[]
Run Code Online (Sandbox Code Playgroud)
抛出错误
他们不是一样的吗?我相信第一个示例index-read在数组上执行 an以便您在数组中获取数组。然后执行增量。如果是这样,为什么我不能做第二个例子?