2011-10-09 64 views
4

在此先感谢您的帮助。我正在编写一个轻量级的C#程序,用于将行写入串行端口(向PLC发送命令)以进行工作,而且我不是程序员。我的问题是我的按钮不会将该行发送到串行端口。这里是我的代码:用C#发送写命令到串口?

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); 

     } 

    } 

我能做些什么使button1点击发送文本行到串口?代码必须尽可能简单,因为它只能在一个工作站上运行。我已经看过所有的例子,但一直无法使它们适应我的代码。我也不想公然撕掉别人的代码来使它工作。任何意见,将不胜感激。

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

+10

“...不要公然撕掉别人的代码来让它工作“......你绝对不是程序员! ;-) – Clive

回答

3

我建议:

  1. 使用,而不是MouseClick事件Click事件。

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

  3. 如果这两个建议都不正确,你应该得到一个抛出的异常(除非你打开一个不正确的端口)。在这种情况下,你应该在这里描述你的问题中的错误。

+0

感谢您的回复。改变鼠标点击到Click,虽然我不知道为什么!我是C#的新手,所以不是双击按钮,而是右键单击并选择“鼠标点击”,因为它似乎最有意义,尽管我不知道自己在做什么。在快速查看MSDN文档后,我知道Click与MouseClick。 – TerrorTech

3

它看起来像你没有初始化你的COM端口。您需要设置您的BaudRate,Parity,DataBits,StopBitsHandshake属性。看看以上MSDN示例的指导。您可以设置属性的个性或将其设置在构造函数中。

根据MSDN用于上述propertys的默认值为:

+0

感谢您的回复。端口配置为系统默认值,因此初始化其各个参数是不必要的。 – TerrorTech