最近在做一个东西,需要用到通用开发语言开发一个软件来读取PLC的内容,这方面的难点在于解析PLC利用

以太网通讯的通讯协议,而一般的PLC厂商对自己的协议是封闭的,对一般的开发者是不开放的,虽然可以通过Wireshark

进行解析,但是工作量很大,且如果对Wireshark不熟悉基本也是无解,很难解析出来。

  网上有部分用C#开发的开源库,但是自己对C#语言不懂,所以也就没法学习和应用了。因此我在这里开始了C#的

从零开始学习之旅(我的从零开始是指对C#一无所知,如果你要和我一起开启这趟旅程,应该懂基本的编程通识,这样应该

会更愉快一些)。

  废话不多说,这个题头,就当引子吧,下面开始我们的C#之旅。后续文章不再做说上面的废话(简单的引子)了。

----------------------------------------------------------------我是分割线------------------------------------------------------------------------

1、学习参考书籍:  C#本质论第4版

2、C#版本:V5.0

3、.NET Framwork 版本: v4.0.30319

4、操作系统版本:Windows 7 SP1  X64 CHS

5、编译器: csc.exe

6、代码编辑器: Editplus

7、命令行工具: cmd

8、推荐的轻量级Windows IDE:  SharpDevelop

9、推荐跨平台轻量级IDE:Mono

---------------------------------------------------------------------------------------------------------------------------------------------------------

一、配置环境

  Window7、Windows8、Windows10系统都自带.NET Framwork 版本。 而.NET Framwork 自带编译工具,这个

编译器就是 csc.exe.

  其路径在: C:\Windows\Microsoft.NET\Framework64\v4.0.30319

  如下图所示:

  在 C:\Windows\Microsoft.NET\Framework64 路径有多个版本的.NETFramwork , 如下图所示:

  

  确定好编译器后,我们就可以在命令行里面使用它,但是csc.exe不在系统的搜索路径,因此需要手动设置一下。

如下图所示:

  将环境变量:PATH加上csc.exe的路径。即可在命令行快速访问csc.exe。

  为了快捷的访问csc.exe 我们还可以加上一个环境变量。  csc, 设置如下所示:

  这样就可以在命令行方便的访问csc.exe。 如下图所示:

二、编写代码

  C#的代码可以利用任意文本编辑器编辑。最好是利用一个可以语法高亮的文本编辑器来编写代码。

  第一个程序: HelloWorld.cs

using System;

class HelloWorld
{
static int Main(string[] args)
{
System.Console.WriteLine("Hellow world!"); System.Console.Read(); return ;
} }

  保存为: HelloWorld.cs

三   编译程序

  如下图编译程序:

  csc  HelloWorld.cs  就可以编译程序,可以看到编译成功。

  如果不指定输出文件名,则默认的输出程序将是: cs文件对应的文件名。

四、执行程序

  程序的执行结果如下所示:

  

五、方便性脚本

  每次都要进入到程序所在的工作目录很麻烦,有两种方法,一种是设置包含可执行文件路径的PATH环境变量

就和上面的设置一样。

  另外一种是利用cmd脚本开启cmd命令行窗口,同时切换工作路径到可执行文件名所在的路径即可。

  参考cmd脚本命令:

@echo off

cmd /k "start F:\26_C# && cd /D F:\26_C# && del *.bak && csc.exe HelloWorld.cs"

  或者第二种方式

@echo off

cmd /k "cd /D F:\26_C#"

  第二种方式只能打开命令行窗口,第一种方式还可以打开源代码所在的目录。

  具体可以自己测试一下效果。

--------------------------------------------------------------分割线---------------------------------------------------------------

1、文章均为个人原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/

2、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料

3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏 

4、或者在页面右下角点推荐哟!!!

--------------------------------------------------------------分割线---------------------------------------------------------------

工控随笔_C#连接PLC_之_C#入门_01_配置学习环境的更多相关文章

  1. 工控随笔_C#连接PLC_之_C#入门_03_基本数据类型

    using System; using System.Collections.Generic; using System.Linq; using System.Text; //namespace 关键 ...

  2. 工控随笔_C#连接PLC_之_C#入门_02_程序性结构和注释

    前段时间看C#本质论,发现内容有点抽象,不适合入门,现在换了一本适合入门的书籍: C#图解教程. //引用命名空间,命名空间相当于一个容器,通过不同的容器来区分同名的内容 //System命名空间是. ...

  3. 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门

    很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...

  4. 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二

    上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 ' ...

  5. 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01

    最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...

  6. 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型

    说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...

  7. 工控随笔_11_西门子_WinCC的VBS脚本_02_运算符

    VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运 ...

  8. 工控随笔_03_西门子_Step7项目打开后CPU显示问号解决方法

    我们在利用西门子的S7-300/400 PLC的编程软件Step7的时候会出现下面如图所示的问题. 在打开项目的时候,我们会在Simatic Manager里面看到CPU以及一些其他一些组件显示问号. ...

  9. 工控随笔_02_西门子_WinCC的IO域利用C脚本返回值

    WinCC的输入输出域用来显示信息或者接受操作人员的输入.当作为显示功能时,只有直接的变量连接 才能正常的显示,如果使用动态对话框进行设置且用了表达式则不能正确显示. 但是有时候我们在WinCC变量管 ...

随机推荐

  1. Kudu+Impala介绍

    Kudu+Impala介绍 概述 Kudu和Impala均是Cloudera贡献给Apache基金会的顶级项目.Kudu作为底层存储,在支持高并发低延迟kv查询的同时,还保持良好的Scan性能,该特性 ...

  2. Elasticsearch 中的 ignore_above

    检索超过ignore_above设定长度的字段后,无法返回结果

  3. React Tutorial: Basic Concept Of React Component---babel, a translator

    Getting started with react.js: basic concept of React component 1 What is React.js React, or React.j ...

  4. static在Swift 中表示 “类型范围作用域”

    In Swift, however, type properties are written as part of the type’s definition, within the type’s o ...

  5. Manjaro Linux使用1月滚粗记

    每个OIer都有对Linux的向往(雾) 这不,一个月前我便看上了Manjaro,主要原因是因为Manjaro软件包全,安装简便,下面就来说说我退回windows的原因: 1.桌面卡顿,我用的gnom ...

  6. Ice Igloos Gym - 101480I (暴力技巧)

    Problem I: Ice Igloos \[ Time Limit: 10 s \quad Memory Limit: 512 MiB \] 题意 给出\(n\)个圆,给出每个圆的坐标\(x\). ...

  7. 牛客网CSP-S提高组赛前集训营Round4

    牛客网CSP-S提高组赛前集训营 标签(空格分隔): 题解 算法 模拟赛 题目 描述 做法 \(BSOJ6377\) 求由\(n\)长度的数组复制\(k\)次的数组里每个连续子序列出现数字种类的和 对 ...

  8. (尚028)Vue_案例_交互删除

    删除一条;1.鼠标移入移除这一条时颜色有变化 2.删除当前的todo ================================================================= ...

  9. RFM - Customer Level Data

    Introduction ## Warning: package 'DT' was built under R version 3.5.2 RFM (recency, frequency, monet ...

  10. nginx之rewrite相关功能

    Nginx Rewrite相关功能 Nginx服务器利用ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perl compatible regu ...