最近在做一个东西,需要用到通用开发语言开发一个软件来读取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. php7中的dirname,intdiv,define

    <?php //dirname可指定目录级数 //intdiv整数整除 //define可以定义数组 echo dirname('/var/www/html/app/etc/config'); ...

  2. 【比赛游记】THUSC2019酱油记

    往期回顾:THUWC2019酱油记 时间过得真快呐-- 上次在 THUSC 手玩 AI 的情景还未走远,明天却要迎来全新一年的赛事了-- 掐指一算,作为一个真正的 OIer 的时光也不多了啊 day ...

  3. thrift rpc通信

    thrift rpc通信 框架 别人的简历: 负责抓取程序的开发和维护,对抓取内容进行数据提取.整理.1.定向数据抓取程序的维护和开发,了解了Sqlite数据库.Thrift服务和多线程的开发调试.2 ...

  4. P2220 [HAOI2012]容易题[小学数学]

    题目描述 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下: 有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[i]不能取哪些值,我们定 ...

  5. CodeForces - 1037H: Security(SAM+线段树合并)

    题意:给定字符串S:  Q次询问,每次询问给出(L,R,T),让你在S[L,R]里面找一个字典序最小的子串,其字典序比T大. 没有则输出-1: 思路:比T字典序大,而且要求字典最小,显然就是在T的尾巴 ...

  6. excel双击下拉制作(以及双击下拉字符超限处理)

    最近,在项目的开发过程中,遇到了一个问题,自己要修改代码中的excel模板,有些列要处理成双击下拉的形式. excel制作双击下拉: 当然,我想,这对于大家来说是不难的,好实现,但是,我在制作的过程中 ...

  7. idea启动项目连接mysql数据库后台报duplicate name异常

    自己写的sql语句在MySQL数据库中运行是没有问题的 但是在使用idea启动项目的时候,后台在运行这行sql语句的时候居然报错了,duplicate name:重复的名字,最后自己经过思考,修改了一 ...

  8. CRLF

    提示信息: Inject false data in the journalisation log. -------------日志中注入错误数据 开始挑战后,进入如下界面-------------- ...

  9. Vue的SEO问题汇总

    方式一 思否 https://segmentfault.com/q/1010000011824706 SSR 和 Nuxt.js : https://zh.nuxtjs.org/ https://se ...

  10. [Java] Spring boot2 整合 Thymeleaf 后 去除模板缓存

    Spring boot2 整合 Thymeleaf 后 去除模板缓存 网上好多文章只是简单粗暴的说,在 application.properties  做如下配置即可: #Thymeleaf cach ...