大家好,欢迎来到IT知识分享网。
目录
一、什么是上位机
上位机相当于一个软件系统,可以用于接收数据、控制数据。即可以对接收到的数据直接发送操控命令来操作数据。上位机可以接收下位机的信号。
关键组件
在C#中,上位机(Supervisor Computer)通常指的是在工业自动化或嵌入式系统中,负责监控、控制和数据采集的PC(Personal Computer)或服务器。对于这样的计算机布局,你可能会涉及到以下几个关键组件:
- 图形用户界面(GUI):C#中的Windows Forms或WPF技术用于创建用户友好的界面,展示设备状态、参数设置以及报警信息。
- 通信模块:通过串口(RS-232/485, USB, Ethernet等)连接到下位机(如PLC或单片机),使用如System.IO.Ports或第三方库(如Modbus/TCP/IP)进行数据交换。
- 数据库集成:如果需要长期存储历史数据,可能会用到SQL Server Compact Edition或SQLite等轻量级数据库。
- 实时处理与任务调度:使用C#的并发编程特性(如Task, ThreadPool, 或async/await)来管理并行任务和响应实时事件。
- 错误处理与日志记录:编写异常处理代码,并利用日志框架(如log4net或NLog)记录关键操作和错误信息。
- 系统配置与监控工具:提供管理工具,用于配置参数、监控性能和系统健康状况。
串口通信
串口相当于硬件类型的接口。比如无线传感节点发送信号到汇聚节点,汇聚节点通过串口将数据传到计算机中的上位机中,上位机接收信息,并处理。
串口是按位(bit)发送和接收字节。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。
a,波特率:这是一个衡量符号传输速率的参数。
b,数据位:这是衡量通信中实际数据位的参数。
c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。
d,奇偶校验位:在串口通信中一种简单的检错方式。
二、C#软件工程
1、下载
免费的开发人员软件和服务 – Visual Studio (microsoft.com)https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
或其它官网下载visual studio软件
2、进入界面
3、进入创建界面
已经有源项目的,可以选择“打开项目或解决方案”或“打开本地文件夹”,没有项目的就选择“创建新项目”创建新项目,进入创建界面
4、选择窗体应用
在“所有语言中”选择C#语言,在搜索框搜索 窗体应用 ,选择第二个,然后下一步,如图:
5、对项目命名
“项目名称、保存位置、解决方案名称 ”按需命名,然后点击创建,如图:
6、以上即可完成新项目创建
三、计算机布局
1、设置窗体
在左侧的 “工具栏” 中的 “公共控件” 选择 TextBox 拖至 Form1 中,如图:
2、完成计算机全部布局
同上,设置 Button 作为计算机按键,如图:
3、修改所设置的按键名称
如图:
以上已完成计算机的布局
四、写入代码
代码头文件
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; namespace 计算器布局精进版 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
按键相关代码
private void button1_Click(object sender, EventArgs e) { this.textBox1.Text += "1"; } private void button2_Click(object sender, EventArgs e) { this.textBox1.Text += "2"; } private void button3_Click(object sender, EventArgs e) { this.textBox1.Text += "3"; } private void button4_Click(object sender, EventArgs e) { this.textBox1.Text += "4"; } private void button5_Click(object sender, EventArgs e) { this.textBox1.Text += "5"; } private void button6_Click(object sender, EventArgs e) { this.textBox1.Text += "6"; } private void button7_Click(object sender, EventArgs e) { this.textBox1.Text += "7"; } private void button8_Click(object sender, EventArgs e) { this.textBox1.Text += "8"; } private void button9_Click(object sender, EventArgs e) { this.textBox1.Text += "9"; } private void button10_Click(object sender, EventArgs e) { this.textBox1.Text += "0"; } private void button11_Click(object sender, EventArgs e) { this.textBox1.Text += "+"; } private void button12_Click(object sender, EventArgs e) { this.textBox1.Text += "-"; } private void button13_Click(object sender, EventArgs e) { this.textBox1.Text += "*"; } private void button14_Click(object sender, EventArgs e) { this.textBox1.Text += "/"; } private void button15_Click(object sender, EventArgs e) { string str = this.textBox1.Text; double result = (double)Eval_2(str); this.textBox1.Text = result.ToString(); } private void button16_Click(object sender, EventArgs e) { this.textBox1.Text += "("; } private void button17_Click(object sender, EventArgs e) { this.textBox1.Text += ")"; } private void button18_Click(object sender, EventArgs e) { this.textBox1.Text += "."; } private void button19_Click(object sender, EventArgs e) { this.textBox1.Text = ""; } private void button20_Click(object sender, EventArgs e) { if (this.textBox1.Text.Length >0 ) { this.textBox1.Text = this.textBox1.Text.Substring(0, this.textBox1.Text.Length - 1); } }
点击启动项目
生成一下界面,即可完成计算机的全部代码,可以通过该计算机计算,如图:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/134899.html