1

我想在 Visual c# 2010 中创建一个具有按钮、文本框、串行端口的表单。我的目标是当按下按钮时,来自串行端口的数据必须显示在文本框中。我从教程中复制了以下代码。文本框没有显示任何内容。这是代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ser1
{
public partial class Form1 : Form
{
    private string RxString;

    public Form1()
    {
        InitializeComponent();
    }

    private void buttonStart_Click(object sender, EventArgs e)
    {
        serialPort1.PortName = "COM4";
        serialPort1.BaudRate = 9600;

        serialPort1.Open();
        if (serialPort1.IsOpen)
        {
            buttonStart.Enabled = false;
            buttonStop.Enabled = true;
            textBox1.ReadOnly = false;
        }

    }

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        // If the port is closed, don't try to send a character.
        if (!serialPort1.IsOpen) return;

        // If the port is Open, declare a char[] array with one element.

        char[] buff = new char[1];

        // Load element 0 with the key character.
        buff[0] = e.KeyChar;

        // Send the one character buffer.
        serialPort1.Write(buff, 0, 1);

        // Set the KeyPress event as handled so the character won't
        // display locally. If you want it to display, omit the next line.

        e.Handled = true;

    }
    private void DisplayText(object sender, EventArgs e)
    {
        textBox1.Text=RxString.Trim();

    }




    private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
        RxString = serialPort1.ReadExisting();
        this.Invoke(new EventHandler(DisplayText));

    }

    private void buttonStop_Click(object sender, EventArgs e)
    {
        if (serialPort1.IsOpen)
        {
            serialPort1.Close();
            buttonStart.Enabled = true;
            buttonStop.Enabled = false;
            textBox1.ReadOnly = true;
        }

    }



    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (serialPort1.IsOpen) serialPort1.Close();

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }
}

}'

4

0 回答 0