当前位置:网站首页>The host computer develops C# language: simulates the STC serial port assistant to receive the data sent by the microcontroller
The host computer develops C# language: simulates the STC serial port assistant to receive the data sent by the microcontroller
2022-08-05 10:18:00 【first good morning...】
题目概述:
design a simulationSTC串口助手,Receive or send data through the serial port.
STC串口助手:
编程:
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;
using System.IO.Ports;
namespace SerialCommunicate
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text,10);//十进制数据转换
serialPort1.Open();
button1.Enabled = false;//打开串口按钮不可用
button2.Enabled = true;//关闭串口
}
catch {
MessageBox.Show("端口错误,请检查串口", "错误");
}
}
private void Form1_Load(object sender, EventArgs e)
{
textBox3.Text = DateTime.Now.ToString("h:mm:ss");
timer1.Enabled = true;
timer1.Interval = 1000;
for (int i = 1; i < 20; i++)
{
comboBox1.Items.Add("COM" + i.ToString());
}
comboBox1.Text = "COM4";//串口号多额默认值
comboBox2.Text = "9600";//波特率默认值
/*****************非常重要************************/
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);//必须手动添加事件处理程序
}
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//串口数据接收事件
{
if (!radioButton3.Checked)//如果接收模式为字符模式
{
string str = serialPort1.ReadExisting();//字符串方式读
textBox1.AppendText(str);//添加内容
}
else { //如果接收模式为数值接收
byte data;
data = (byte)serialPort1.ReadByte();//此处需要强制类型转换,将(int)类型数据转换为(byte类型数据,不必考虑是否会丢失数据
string str = Convert.ToString(data, 16).ToUpper();//转换为大写十六进制字符串
textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");//空位补“0”
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
serialPort1.Close();//关闭串口
button1.Enabled = true;//打开串口按钮可用
button2.Enabled = false;//关闭串口按钮不可用
}
catch //一般情况下关闭串口不会出错,所以不需要加处理程序
{
}
}
private void button3_Click(object sender, EventArgs e)
{
byte[] Data = new byte[1];//存储一个字节 Send the next byte after the update
if (serialPort1.IsOpen)//判断串口是否打开,如果打开执行下一步操作
{
if (textBox2.Text != "")
{
if (!radioButton1.Checked)//如果发送模式是字符模式
{
try
{
serialPort1.WriteLine(textBox2.Text);//写数据
}
catch (Exception err)
{
MessageBox.Show("串口数据写入错误", "错误");//出错提示
serialPort1.Close();
button1.Enabled = true;//打开串口按钮可用
button2.Enabled = false;//关闭串口按钮不可用
}
}
else
{
for (int i = 0; i < (textBox2.Text.Length - textBox2.Text.Length % 2) / 2; i++)//取余3运算作用是防止用户输入的字符为奇数个
{
Data[0] = Convert.ToByte(textBox2.Text.Substring(i * 2, 2), 16);
serialPort1.Write(Data, 0, 1);//循环发送(如果输入字符为0A0BB,则只发送0A,0B)
}
if (textBox2.Text.Length % 2 != 0)//剩下一位单独处理
{
Data[0] = Convert.ToByte(textBox2.Text.Substring(textBox2.Text.Length-1, 1), 16);//单独发送B(0B)
serialPort1.Write(Data, 0, 1);//发送
}
}
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
textBox3.Text = DateTime.Now.ToString("h:mm:ss");
}
}
}
上机实践:
边栏推荐
- 静态链接和动态链接
- Microservice Technology Stack
- Ali's new launch: Microservices Assault Manual, all operations are written out in PDF
- ffmpeg drawtext 添加文本水印
- 19. Server-side session technology Session
- Open Source Summer | How OpenHarmony Query Device Type (eTS)
- Voice-based social software development - making the most of its value
- js劫持数组push方法
- E-sports, convenience, efficiency, security, key words for OriginOS functions
- 【MindSpore Easy-Diantong Robot-01】You may have seen many knowledge quiz robots, but this one is a bit different
猜你喜欢

如何选币与确定对应策略研究

The JVM collection that Alibaba's top architects have summarized for many years, where can't I check it!

Microservice Technology Stack

Still looking for a network backup resources?Hurry up to collect the following network backup resource search artifact it is worth collecting!

linux下oracle常见操作以及日常积累知识点(函数、定时任务)

Tanabata romantic date without overtime, RPA robot helps you get the job done

【综合类型第 35 篇】程序员的七夕浪漫时刻

【温度预警程序de开发】事件驱动模型实例运用

dotnet OpenXML parsing PPT charts Getting started with area charts

NowCoderTOP35-40——持续更新ing
随机推荐
登录功能和退出功能(瑞吉外卖)
Brief Analysis of WSGI Protocol
Microservice Technology Stack
使用工具类把对象中的null值转换为空字符串(集合也可以使用)
IO stream articles -- based on io stream to realize folder copy (copy subfolders and files in subfolders) full of dry goods
Introduction to SD NAND Flash!
js劫持数组push方法
Egg framework usage (1)
RT-Thread记录(一、RT-Thread 版本、RT-Thread Studio开发环境 及 配合CubeMX开发快速上手)
linux下oracle常见操作以及日常积累知识点(函数、定时任务)
我们的Web3创业项目,黄了
【MindSpore Easy-Diantong Robot-01】You may have seen many knowledge quiz robots, but this one is a bit different
LeetCode 216. Combined Sum III (2022.08.04)
Oracle temporary table space role
[Office] Collection of Microsoft Office download addresses (offline installation and download of Microsoft's official original version)
蚁剑webshell动态加密连接分析与实践
力扣(LeetCode)216. 组合总和 III(2022.08.04)
浅析WSGI协议
Which big guy has the 11G GI and ojvm patches in April or January 2020, please help?
开发常用手册链接分享