代碼如下:
using System;
using System.Text;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace complc
{
/// <summary>
/// Form1 的摘要說明。
/// </summary>
public class comForm : System.Windows.Forms.Form
{
private AxMSCommLib.AxMSComm axMSComm1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
/// <summary>
/// 必需的設計器變量。
/// </summary>
private System.ComponentModel.Container components = null;
public comForm()
{
// Windows 窗體設計器支持所必需的
InitializeComponent();
// TODO: 在 InitializeComponent 調用後添加任何構造函數代碼
}
/// <summary>
/// 清理所有正在使用的資源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null
{
components.Dispose();
}
}
base.Dispose( disposing );
}
/// Windows 窗體設計器生成的代碼
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new comForm());
}
private void button1_Click(object sender, System.EventArgs e)
{
string ms,rd = "" ;
int i;
if (!axMSComm1.PortOpen)
axMSComm1.PortOpen = true; //打開串口
axMSComm1.InputLen = 0; //清除接收緩沖區
axMSComm1.DTREnable = true; //置DTR有效
axMSComm1.RTSEnable = true; //置RTS有效
axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeText; //置為二進制輸入方式
axMSComm1.RThreshold = 1; //設置為接收緩沖區每接收一個字符將引發一次OnComm事件
ms=textBox1.Text; // 輸入如:%01#RDD9001590016或%01#RDD0100601036
axMSComm1.Output = ms+tobcc(ms)+(char)13;
// sleep(30);
rd += axMSComm1.Input;
textBox2.Text = rd;
}
private void comForm_Load(object sender, System.EventArgs e)
{
axMSComm1.CommPort = System.Convert.ToInt16(1); //設為com1
axMSComm1.Settings = "9600,n,8,1";
}
public string tobcc(string s) //幀校驗函數FCS
{
int t = 0;
char[] chars = s.ToCharArray();
for(int i = 1;i <= s.Length-1;i++)
{
t = t^=(char)chars[i];
}
return t.ToString().Substring(1,2);
}
private void button2_Click(object sender, System.EventArgs e)
{
Application.Exit();
}
}
}
五、結論
本文所有程序均在Windows XP, Visual.Studio.Net2003環境中調試通過,該通信方式簡單,通信十分穩定可靠,從而在工業控制的小型監控系統中有著廣闊的應用前景。讀者可在本文的基礎上,參考松下公司的MEWTOCOL-COM協議,便可輕松實現PC與松下FP∑系列PLC的通信,以完成上位機對PLC的監視與控制。