使用C#将写命令发送到串口?

时间:2011-10-09 02:28:42

标签: c# serial-port

提前感谢您的帮助。我正在编写一个轻量级的C#程序来将行写入串行端口(向PLC发送命令)以便工作,我不是程序员。我的问题是我的按钮不会将线路发送到串口。这是我的代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO.Ports;

    namespace WindowsFormsApplication1 {
        public partial class Form1 : Form {

        string command = "Turn Motor";
        SerialPort COM1 = new SerialPort("COM1");

        public Form1() {
            InitializeComponent();
            COM1.Open();

        }

        private void button1_MouseClick(object sender, MouseEventArgs e) {

            COM1.WriteLine(command);

        }

    }

如何使按钮1单击将文本行发送到串行端口?代码必须尽可能简单,因为它只能在一个工作站上运行。我查看了所有示例,但无法使它们适应我的代码。我也不想公然扯掉别人的代码来让它运转起来。任何意见,将不胜感激。

编辑:上面的代码并非一切,例如我正在初始化端口。我有另一段代码正确接收和处理字符串,它只是我遇到问题的发件人。我还使用表单设计器创建了按钮方法,因此应该没有断开连接。

2 个答案:

答案 0 :(得分:3)

我建议:

  1. 使用Click事件代替MouseClick事件。

  2. 如果您刚刚从某个示例复制了button1_MouseClick方法,那么该方法可能无法正确订阅Click事件。如果双击Visual Studio设计器中的按钮,它将自动为您正确设置订阅click事件的方法。这就是你放置COM1.WriteLine(command);

  3. 的地方
  4. 如果这两个建议都不正确,您可能会在某处抛出异常(除非您打开了错误的端口)。在这种情况下,您应该在这里描述您的问题中的错误。

答案 1 :(得分:3)

看起来您没有初始化您的Com端口。您需要设置BaudRateParityDataBitsStopBitsHandshake属性。请查看上面的MSDN示例以获得指导。您可以单独设置属性,也可以在构造函数中设置它们。

根据MSDN,上述属性的默认值为: