当前位置: 首页 > article >正文

《C#上位机开发从门外到门内》1-2:上位机开发语言与工具、开发环境部署

**上位机开发语言与工具、开发环境部署

在这里插入图片描述

1. 概述

上位机软件的开发涉及多种编程语言、开发工具和调试方法。根据不同的需求,可以选择 C#、Python、LabVIEW、Qt 等语言,并使用 Visual Studio、PyCharm、Qt Creator 等 IDE 进行开发。同时,调试工具(如串口调试助手、逻辑分析仪等)在开发过程中也至关重要。本文将详细介绍这些语言和工具,并提供具体的环境搭建步骤和代码示例。


2. 上位机开发语言

2.1 C#

2.1.1 语言特点
  • 依托 .NET 生态系统,开发效率高。
  • 提供丰富的 GUI 库,如 WinForms 和 WPF。
  • 易于与 SQL Server、MySQL 等数据库对接。
  • 可结合 SerialPort 类进行串口通信。
2.1.2 适用场景
  • Windows 平台 GUI 应用
  • 工业设备控制(串口、网络通信)
  • 数据采集与可视化
2.1.3 C# 上位机开发示例
(1)创建 Windows 窗体应用
using System;
using System.IO.Ports;
using System.Windows.Forms;

namespace UpperComputer
{
    public partial class MainForm : Form
    {
        SerialPort serialPort = new SerialPort();

        public MainForm()
        {
            InitializeComponent();
            serialPort.PortName = "COM3";
            serialPort.BaudRate = 9600;
            serialPort.DataReceived += SerialPort_DataReceived;
        }

        private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string data = serialPort.ReadExisting();
            Invoke(new Action(() => textBox1.Text += data));
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            if (!serialPort.IsOpen)
            {
                serialPort.Open();
                MessageBox.Show("串口已打开");
            }
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            if (serialPort.IsOpen)
            {
                serialPort.WriteLine(textBox2.Text);
            }
        }
    }
}
(2)环境搭建
  1. 安装 Visual Studio(建议 2022 版本)。
  2. 创建 WinFormsWPF 项目。
  3. NuGet 管理器中安装 System.IO.Ports
  4. 编写 UI 和通信逻辑,调试运行。

在这里插入图片描述

2.2 Python

2.2.1 语言特点
  • 语法简洁,适合快速开发。
  • 支持 pyserialPyQtmatplotlib 等库,方便 GUI 和数据处理。
  • 可跨平台(Windows/Linux/Mac)。
2.2.2 适用场景
  • 设备串口/网络通信
  • 物联网数据采集
  • 图像处理与 AI 分析
2.2.3 Python 上位机开发示例
(1)PyQt 串口调试工具
import sys
import serial
import serial.tools.list_ports
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QTextEdit, QVBoxLayout

class SerialApp(QWidget):
    def __init__(self):
        super().__init__()

        self.ser = serial.Serial()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('上位机串口助手')

        self.textEdit = QTextEdit(self)
        self.btnOpen = QPushButton('打开串口', self)
        self.btnOpen.clicked.connect(self.open_serial)

        layout = QVBoxLayout()
        layout.addWidget(self.textEdit)
        layout.addWidget(self.btnOpen)
        self.setLayout(layout)

    def open_serial(self):
        self.ser.port = "COM3"
        self.ser.baudrate = 9600
        self.ser.open()
        self.textEdit.append("串口已打开")

app = QApplication(sys.argv)
window = SerialApp()
window.show()
sys.exit(app.exec_())
(2)环境搭建
  1. 安装 Python(推荐 3.10+)
    sudo apt install python3  # Linux
    winget install Python.Python.3  # Windows
    
  2. 安装 PyQt5 和 pyserial
    pip install pyqt5 pyserial
    
  3. 运行程序
    python serial_app.py
    

在这里插入图片描述

2.3 LabVIEW

2.3.1 语言特点
  • 采用 图形化编程,开发周期短。
  • 适合 数据采集、控制系统测试仪表
  • 可与 NI 硬件(DAQ、PXI、GPIB)无缝集成。
2.3.2 适用场景
  • 工业自动化监控
  • 仪器仪表数据采集
  • 传感器信号处理
(1)LabVIEW 串口通信
  1. 打开 LabVIEW,创建 VI 文件。
  2. 前面板 添加:
    • 按钮(用于发送数据)
    • 文本框(用于显示接收数据)
  3. 程序框图 连接 VISA 串口模块:
    • VISA OpenVISA Configure Serial Port
    • VISA WriteVISA Read
    • VISA Close
(2)环境搭建
  1. 下载 LabVIEW(NI 官网)。
  2. 安装 NI-VISA 驱动(支持串口/USB/GPIB)。
  3. 编写 VI,并测试硬件连接。

在这里插入图片描述

2.4 Qt(C++)

2.4.1 语言特点
  • 基于 C++,高性能,跨平台。
  • 提供 QtSerialPort,便于串口通信。
  • 适合 Windows、Linux、嵌入式
2.4.2 适用场景
  • 嵌入式 Linux 设备管理
  • 复杂 GUI 上位机
  • 需要高性能的工业控制
2.4.3 Qt 上位机开发示例
#include <QApplication>
#include <QMainWindow>
#include <QSerialPort>
#include <QTextEdit>
#include <QPushButton>
#include <QVBoxLayout>

class SerialApp : public QMainWindow {
    Q_OBJECT
public:
    SerialApp(QWidget *parent = nullptr) : QMainWindow(parent) {
        serial.setPortName("COM3");
        serial.setBaudRate(QSerialPort::Baud9600);

        textEdit = new QTextEdit(this);
        QPushButton *btnOpen = new QPushButton("打开串口", this);
        connect(btnOpen, &QPushButton::clicked, this, &SerialApp::openSerial);

        QVBoxLayout *layout = new QVBoxLayout();
        layout->addWidget(textEdit);
        layout->addWidget(btnOpen);

        QWidget *centralWidget = new QWidget();
        centralWidget->setLayout(layout);
        setCentralWidget(centralWidget);
    }

private slots:
    void openSerial() {
        serial.open(QIODevice::ReadWrite);
        textEdit->append("串口已打开");
    }

private:
    QSerialPort serial;
    QTextEdit *textEdit;
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    SerialApp window;
    window.show();
    return app.exec();
}
(2)环境搭建
  1. 安装 Qt Creator
  2. 添加 QtSerialPort
  3. 编译运行

3. 调试工具

3.1 串口调试助手

在这里插入图片描述

  • 推荐工具:SSCOM、SecureCRT
  • 用途:测试串口数据收发。
    在这里插入图片描述

3.2 逻辑分析仪

在这里插入图片描述

  • 推荐:Saleae Logic
  • 用途:分析数据总线,如 SPI、I2C、UART。

4. 结论

不同语言和工具适用于不同场景,选择适合的技术栈,能提高开发效率和系统稳定性。


http://www.kler.cn/a/580789.html

相关文章:

  • 实现“一塔一档”管理模式需要多种物联网(IoT)技术的支持
  • 若依-导出后端解析
  • Git常用命令全面分类总结
  • Java 三路快排
  • MySQL知识点(第一部分)
  • postgresql14编译安装脚本
  • Bartender 5 for Mac 多功能菜单栏管理
  • Unity Post-Processing后处理
  • 【ARM内核】SWCLK/SWDIO引脚复用
  • Word如何避免英文字母在上下行分开
  • 面试题之Vuex,sessionStorage,localStorage的区别
  • 机器学习—赵卫东阅读笔记(一)
  • 探讨AI钓鱼助理APP借助AWS Lambda和Go语言实现,对钓鱼人的渔获提升
  • 固定表头、首列 —— uniapp、vue 项目
  • 前馈神经网络 - 参数学习(梯度下降法 - 多分类任务)
  • 【go语言圣经1.2】
  • HTML+JavaScript实现随机点名2.0|随机抽奖效果-demo
  • 数据库系统概论(一)详细介绍数据库与基本概念
  • Web网页制作(静态网页):千年之恋
  • Android TCP封装工具类