使用VB.NET开发一个简单的串口程序

本程序严谨程度不高,仅适合新手做成功程序使用,严谨程序后续会有更新.

这两个程序结合起来是可以用的.
单片机程序代码(用于在收到数据后做出反应)

//整合自STC官方文档
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
bit busy;//这个变量暂时没用
#define FOSC 12000000L      //单片机的频率
#define BAUD 4800      //串口波特率
u8 i;
u8 flag;
void main()
{
    SCON = 0xDA;
    TL2 = RCAP2L = (65536-(FOSC/32/BAUD));
    TH2 = RCAP2H = (65536-(FOSC/32/BAUD)) >> 8;
    T2CON = 0x34;
	
    ES = 1;
    EA = 1;
    while(1)
	{
	};
}
void Uart_Isr()interrupt 4
{
    if (RI)
    {
		P0 = SBUF;
		//上一句是程序最主要的部分
		//写的是接收收到串口中断之后的动作,可以自主设置为某个灯亮
		RI = 0;             //Clear receive interrupt flag
    }
    if (TI)
    {
        TI = 0;             //Clear transmit interrupt flag
       // busy = 0;           //Clear transmit busy flag
    }
}

VB.net程序(用于简单发送一个数据)

'参考自微软官方VB.NET文档
'https://docs.microsoft.com/zh-cn/dotnet/api/system.io.ports.serialport?view=netframework-4.8
Imports System.IO.Ports
Public Class form1
    Dim _serialPort = New SerialPort()
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        '将波特率添加到下拉列表2
        ComboBox2.Items.Add(4800)
        ComboBox2.Items.Add(9600)
        ComboBox2.Text = ComboBox2.Items.Item(0)
        '将数据位添加到下拉列表3
        'ComboBox3.Items.Add()
        Label5.Text = “搜索一下串口吧!”
        '未搜索到串口时候禁止打开串口
        打开串口.Enabled = False
        关闭串口.Enabled = False
        发送数据.Enabled = False
        搜索串口.Enabled = True
    End Sub

    Private Sub 搜索串口_Click(sender As Object, e As EventArgs) Handles 搜索串口.Click
        '将串口添加到下拉列表1
        ComboBox1.Items.Clear()
        For Each sp As String In My.Computer.Ports.SerialPortNames
            ComboBox1.Items.Add(sp)
        Next
        ComboBox1.Items.Add(1)
        '在此处添加一个项,因为如果count()为0会报错,不知道如何处
        '理在搜索完成之后如果有count()=1,则说明没有找到串口,如果
        'count()>1则说明找到了串口,无论是否找到都需要删除掉这个
        '添加上的"1"
        'Label5.Text = ComboBox1.Items.Count.ToString()
        If ComboBox1.Items.Count() = 1 Then
            Label5.Text = “未搜索到串口!”
            ComboBox1.Items.Clear()
            打开串口.Enabled = False
        Else
            Label5.Text = "串口搜索完成!"
            ComboBox1.Text = ComboBox1.Items.Item(0)
            ComboBox1.Items.Remove(1)
            打开串口.Enabled = True
        End If
    End Sub

    Private Sub 打开串口_Click(sender As Object, e As EventArgs) Handles 打开串口.Click
        _serialPort.PortName = ComboBox1.Text()
        _serialPort.BaudRate = ComboBox2.Text()
        _serialPort.Open()
        If _serialPort.IsOpen() Then

        End If
        打开串口.Enabled = False
        关闭串口.Enabled = True
        发送数据.Enabled = True
    End Sub

    Private Sub 关闭串口_Click(sender As Object, e As EventArgs) Handles 关闭串口.Click
        打开串口.Enabled = True
        关闭串口.Enabled = False
        发送数据.Enabled = False
        _serialPort.Close()
    End Sub

    Private Sub 发送数据_Click(sender As Object, e As EventArgs) Handles 发送数据.Click
        _serialPort.Write(1)
    End Sub
End Class

窗体控件
vb程序逻辑:

启动程序后
将可用波特率添加到对第二个下拉列表并设置label的文本
然后将下拉列表显示的项设置为4800
允许 搜索串口
并禁止 “关闭串口按钮”&“打开串口按钮”&"发送数据按钮"可用

程序启动后可用的只有"搜索串口"
搜索串口之后,如果搜到了,则允许 “打开串口按钮” 可用,并将串口列表添加到下拉列表1
如果没有搜到,则依然禁止,并且在搜索后设置label的文本

按钮之间互相有约束.
建议只连接一个开发板

博主是一个在校大学生(辣chicken大专)近期在开发一个类似机床的产品,类似于某宝的迷你cnc,有xyz轴,主轴电机。
与其他不同的是,本产品是用STC单片机开发的(相对于arduino),由于未找到免费的现成资料(英语不好,也没有梯子,GitHub用不熟),博主就一步一步慢慢的开发,在上半年学习之余粗略学习了C51,了解了基本的STC单片机控制程序的编写(不包括数模转换以及更高级的),已经具有开发三轴控制的基础,现在阶段是开发上位机,经过多天的探索,确定使用VB.net开发(本人以前从未学习过),代码都是跟着微软官网文档学的,很多初学者可能像我一样看到文档就不知所谓,经过我多天的研究,比葫芦画瓢做出了一个简单的串口程序,功能很简单,但是比微软官网上写的要明了,如果有需要可能帮到像我一样的新手.

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

大三狂补

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值