• 大小: 1.32MB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2023-08-30
  • 语言: C#
  • 标签: 串口助手  串口曲线  

资源简介

串口发送数据到本上位机,上位机将数据转换成曲线打印出来。本压缩包包括 曲线打印助手 源工程文件(C#代码)完全开源,同时内含使用说明,代码清晰明了,欢迎下载。

资源截图

代码片段和文件信息

using System;
using System.IO.Ports;
using System.Threading;
using System.Windows.Forms;

namespace YJ_Chart
{
    public partial class YJ : Form
    {
        /* 定义程序中用到的常量 */
        const int RecvBufferOneframeSize = 32;
        /* 定义已经接受到的数据长度 */
        int SerialHaveRecvBufferLength = 0;
        /* 定义接受到的错误帧数 */
        int SerialRecvFailframe = 0;
        /* 一次最大接受的数据长度 */
        const int MaxRecvLineNumber = 7;
        /* 定义接受数据缓冲区,这里放大了100倍,防止数组溢出 */
        byte[] RecvByteBuffer = new byte[RecvBufferOneframeSize*100];
        /* 定义一帧开始数据 */
        const int RecvBufferStartData = 0x8c;
        /* 定义接受数据的比例值 */
        float RecvNumberScale = 100.0f;

        /* 开启一个线程invoke,用来更新UI */
        public delegate void UIUpdateInvoke();   

        public YJ()
        {
            InitializeComponent();
        }

        /* 窗口加载函数,在这里进行一些初始化操作 */
        private void YJ_Load(object sender EventArgs e)
        {
            /* 初始化波特率 */
            BaudComBox.Text = “115200“;
            /* 初始化比例系数 */
            RecvNumberScaleTextBox.Text = “100.0“;
            /* 设置串口的相关属性 */
            /* 设置串口缓冲数据长度 */
            MainSerialPort.ReceivedBytesThreshold = RecvBufferOneframeSize;
            /* 注册回调函数 */
            MainSerialPort.DataReceived += new SerialDataReceivedEventHandler(MainSerialPortDatRecvHandler);
            /* 搜索串口 */
            SearchSerialPort(MainSerialPort ComPortComBox);
        }

        /* 端口扫描函数 */
        private void SearchSerialPort(SerialPort MySerialPort ComboBox MyPortComBox)
        {
            /* 定义是否 串口是否准备好了 标志位 */
            bool SerialIsOk = false;
            /* 清除框内的信息 */
            MyPortComBox.Items.Clear();

            /* 对PC机进行20个端口的遍历,一般PC机不会有20个串口,基本可以完全扫描 */
            for (int index=1; index<20; index++)
            {
                /* try  语法,尝试给串口赋值端口号 */
                try
                {
                    /* 设置端口名称 遍历COM1->COM20并赋值给串口号 */
                    MySerialPort.PortName = “COM“ + index.ToString();
                    /* 尝试打开串口 能成功打开则说明成功扫描到串口,打开失败则跳到catch并继续循环 */
                    MySerialPort.Open();
                    /* 将端口号添加到端口框 */
                    MyPortComBox.Items.Add(“COM“ + index.ToString());
                    /* 自动将扫描成功的串口显示端口框 */
                    MyPortComBox.Text = “COM“ + index.ToString();
                    /* 保证在扫描完成时,串口是关闭的 */
                    MySerialPort.Close();
                    /* 该端口正常 */
                    SerialIsOk = true;
                }
                catch
                {
                }
            }

            /* 判断是否成功找到串口 */
            if (SerialIsOk)
            {
                /* 成功扫描到串口  则表示正常 无提示 打开串口 */
            }
            else
            {
                MessageBox.Show(“未找到串口“ “提示“);
            }
        }

        /* 串口接受数据回调函数 */
        private void MainSerialPortDatRecvHandler(object sender

评论

共有 条评论