关键词:
最近在做一个东西,需要用到通用开发语言开发一个软件来读取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 0;
保存为: 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、或者在页面右下角点推荐哟!!!
--------------------------------------------------------------分割线---------------------------------------------------------------
工控随笔_21_西门子_wincc的vbs脚本_10_对象_01(代码片段)
最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢。不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容。 一、对象 OOP是编程规模发展到一定程度后才... 查看详情
工控随笔_07_西门子_wincc利用命令行实现操作log日志(代码片段)
在WinCC中可以通过报警纪录来实现操作员纪录,这个需要WinCC的消息系统进行组态和配置。利用消息系统进行实现上诉功能不但复杂而且时间久啦也不方便查询。那么有没有一种简单的方法来实现操作员纪录呢? 我... 查看详情
工控随笔_11_西门子_wincc的vbs脚本_02_运算符(代码片段)
VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作。运算符具有不同的类型不同的运算符之间具有运算优先级。 一、运算符的分类 大体分为以下几类: 1、赋值运算符 ... 查看详情
flask之快速入门(代码片段)
一、初识Flask1、安装Flask(flask_study)C:UsersAdministrator>pipinstallflask2、简单实例fromflaskimportFlask#实例化Flask对象app=Flask(__name__)@app.route(‘/‘)defindex():return"index"if__name__==‘__main__‘:app.run()这 查看详情
c++01_入门小知识(代码片段)
【C++】01_入门小知识(1)前言:在具有C语言知识的基础上,先来了解下C++的一些知识点。01.C++关键字🗣:看个大概就行,混个眼熟,后续会进行深入学习。ISOC++98/03关键字... 查看详情
大数据技术之_30_jvm学习_01_jvm位置+jvm体系结构概览+堆体系结构概述+堆参数调优入门+jvm的配置和优化+tomcat的配置和优化
...位置2、JVM体系结构概览3、堆体系结构概述4、堆参数调优入门5、JVM的配置和优化6、Tomcat的配置和优化熟悉JVM架构与GC垃圾回收机制以及相应的JVM调优,有过在Linux系统下的调优经验。淘宝的周志明《深入理解Java虚拟机》中说JVM... 查看详情
003_c/c++笔试题_分享大汇总
(一)感谢:lhzstudio01_C++经典面试题全集50~100道都附带有参考答案02_C++开发工程师面试题库100~150道03_C++笔试题库之编程、问答题150~200道04_C++笔试题库之编程、问答题200~300道 查看详情
尚硅谷大数据hadoop教程-笔记01入门(代码片段)
...装搭建到集群调优)尚硅谷大数据Hadoop教程-笔记01【入门】尚硅谷大数据Hadoop教程-笔记02【HDFS】尚硅谷大数据Hadoop教程-笔记03【MapReduce】尚硅谷大数据Hadoop教程-笔记04【Yarn】尚硅谷大数据Hadoop教程-笔记04【生产调优手册】... 查看详情
c++01_入门小知识(代码片段)
【C++】01_入门小知识(2)07.引用7.1引用的概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。比如,你可... 查看详情
c语言随笔_类型声明
有位同学说,“老师,我运行如下代码,结果报错了” #include<iostream.h> intmain(){ charc, intb; return0;}报错结果是:--------------------Configuration:Test-Win32Debug--------------------Compiling.. 查看详情
c语言随笔_类型声明
有位同学说,“老师,我运行如下代码,结果报错了” #include<iostream.h>intmain(){ charc, intb; return0;}报错结果是:--------------------Configuration:Test-Win32Debug--------------------Compiling...demo.cd:ccode e 查看详情
c语言中的__attribute__宏定义之section属性(代码片段)
C语言中的__attribute__宏之section属性文章目录C语言中的__attribute__宏之section属性一、起因二、解释前言无论是GNU还是ARM的编译器,都支持__attribute__所指定的编译属性,这里着重讲解一下在KEIL环境下__attribute__中的section的使... 查看详情
大数据技术之_20_elasticsearch学习_01_概述+快速入门+javaapi操作+创建删除索引+新建搜索更新删除文档+条件查询+映射操作(代码片段)
一概述1.1什么是搜索?1.2如果用数据库做搜索会怎么样?1.3什么是全文检索和Lucene?1.4什么是Elasticsearch?1.5Elasticsearch的适用场景1.6Elasticsearch的特点1.7Elasticsearch的核心概念1.7.1近实时1.7.2Cluster(集群)1.7.3Node(节点)1.7.4Index(... 查看详情
c语言随笔_fopen
有同学问我,以下代码会输出“===”,为什么呀? if((fp=fopen("data.dat","r"))==NULL){ printf("==="); }我看了下,代码是以“读”的方式打开data.dat文件,可是代码都没有指定data.dat 在哪里,程序找不到这个文件,所以... 查看详情
c语言随笔_fopen
有同学问我,以下代码会输出“===”,为什么呀? if((fp=fopen("data.dat","r"))==NULL){ printf("==="); }我看了下,代码是以“读”的方式打开data.dat文件,可是代码都没有指定data.dat 在哪里,程序找不到这个文件,所以就认为出错... 查看详情
C中的交替按位连接
】C中的交替按位连接【英文标题】:AlternatingBitwiseconcatenationinC【发布时间】:2017-12-2223:24:09【问题描述】:我想像这样在C中连接两个整数a、b:如果a具有按位表示a_1a_2a_3a_4...而b具有按位表示b_1b_2b_3b_4...我希望我的结果是a_1b_1a_... 查看详情
rabbitmq之入门
生成者:#coding:utf-8__author__=‘similarface‘importpika,sys#连接RabbitMQcredentials=pika.PlainCredentials(‘guest‘,‘guest‘)conn_params=pika.ConnectionParameters(‘localhost‘,credentials=credentials)conn_broke 查看详情
《c语言杂记》编译优化之__builtin_expect(代码片段)
最近在研究压缩算法的时候,看到了以下代码:#defineLIKELY(c)(__builtin_expect(!!(c),1))#defineUNLIKELY(c)(__builtin_expect(!!(c),0))在好奇心的驱使下,我决定一探究竟。1__builtin_expect是啥其实可以从宏定义就能猜个大概,顾名思... 查看详情