首页 > 其他分享 >串口通信

串口通信

时间:2024-03-27 14:57:42浏览次数:24  
标签:void 端口 通信 SerialPort 串口 serialPort public

串口通信

 

在对串口进行编程时候,我们要向串口发送指令,然后我们解析串口返回的指令。从.NET Framework 2.0开始,C#提供了SerialPort类用于实现串口控制。命名空间:System.IO.Ports。

1、 常用的字段:
PortName:获取或设置通信端口
BaudRate:获取或设置串行波特率Parity:获取或设置奇偶效验检查协议
DataBits:获取或设置每个字节的标准数据位长度
StopBits:获取或设置每个字节的标准停止位数
2、 常用方法: Open:打开一个新的串行端口连接
Close:关闭端口连接,将IsOpen属性设置false,并释放内部Stream对象
Read:从SerialPort输入缓冲区中读取
Write:将数据写入串行端口输出缓冲区 GetPortNames:获取当前计算机的串行端口名称数组
3、常用事件:
DataReceived:表示将处理SerialPort对象的数据接收事件的方法
DisPosed:通过调用释放组件时发生Dispose方法(继承自Component)
4、SerialPort 控件使用流程
流程是设置通信端口号及波特率、数据位、停止位和校验位,再打开端口连接、发送数据、接收数据,最后关闭端口连接步骤。 注意:
使用Unity是进行串口通信的时候,需要在Project Setting=>Player=>Other Settings=>Configuration中将API  Compatibility Level 改成Mono.NET 2.0/4.0/其他。   代码示例:
using System.IO.Ports;
using UnityEngine;

public class RunPort : MonoBehaviour
{
    private SerialPort serialPort;

    public string portName = "COM3";//串口名
    public int baudRate = 115200;//波特率
    public Parity parity = Parity.None;//效验位
    public int dataBits = 8;//数据位
    public StopBits stopBits = StopBits.One;//停止位

    void Start()
    {
        serialPort = new SerialPort(portName, baudRate, parity, dataBits, stopBits);
        StartRide();
    }

    void StartRide()
    {
        OpenSerialPort();
        SendData("A10\n");
        SendData("PWM30\n");
    }

    void Update()
    {
        ReadData();
    }

    void OnApplicationQuit()
    {
        SendData("A00\n");
        CloseSerialPort();
    }

    void OpenSerialPort()
    {
        if (serialPort != null)
        {
            serialPort.Open();
        }
    }

    void SendData(string data)
    {
        if (serialPort != null && serialPort.IsOpen)
        {
            serialPort.Write(data);
        }
    }

    void ReadData()
    {
        if (serialPort != null && serialPort.IsOpen)
        {
            if (serialPort.BytesToRead > 0)
            {
                string data = serialPort.ReadLine();
                Debug.Log("Received Data: " + data);
            }
        }
    }

    void CloseSerialPort()
    {
        if (serialPort != null && serialPort.IsOpen)
        {
            serialPort.Close();
        }
    }
}

  

 

标签:void,端口,通信,SerialPort,串口,serialPort,public
From: https://www.cnblogs.com/gatran/p/18096475

相关文章

  • 【OpenCV】OpenCV (C++) 与 OpenCvSharp (C#) 之间数据通信
     OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多......
  • 36.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-数据解码器的实现
    免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!如果看不懂、不知道现在做的什么,那就跟着做完看效果内容参考于:易道云信息技术研究院VIP课上一个内容:35.登录成功数据包内容分析码云地址(master分支):https://gitee.com/dye_your_fingers/titan码云版本号:9474c7......
  • stm32串口使用dma接收数据全为0发送正常
    cubemx版本:keil版本:当使用cubeMX生成代码时,需要调整dma初始化和串口初始化的顺序,在3处那里调整,不然串口接收的数据全是0,未知原因,只找到办法......
  • 1、融合通信专业术语知识学习VOIP、SIP、350M集群等
    摘自百度:1、VoIP和SIP的概念:VoIP和SIP都是通信领域中的重要概念,它们各自具有独特的功能和应用场景,但也存在一定的联系。VoIP,即VoiceoverInternetProtocol,是一种语音通话技术,它利用互联网协议(IP)进行语音通话与多媒体会议。这种技术将模拟声音信号数字化,并以数据封包的形式在IP......
  • FPGA入门笔记009——UART串口发送模块设计
    #FPGA入门笔记009——UART串口发送模块设计1、UART通信原理​ 如图1为UART通信连接图,其中tx为输入,rx为输出。通过tx连接rx进行数据间的发送和接收。图1——UART通信连接图​ UART通信在使用前需要做多项设置,最常见的设置包括:数据位数、波特率大小、奇偶校验类型和停止位......
  • 基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集
    基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集Arduino代码#include<OneWire.h>#include<DallasTemperature.h>#defineONE_WIRE_BUS2//DS18B20接至Arduino数字口2OneWireoneWire(ONE_WIRE_BUS);DallasTemperaturesensors(&oneWire);byteco......
  • 01-【HAL库】STM32实现串口打印
    一、什么是串口串口通讯(SerialCommunication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片......
  • 网络通信补充
    【一】网络通信实现【1】实现网络通信的四要素本机的IP地址子网掩码网关的IP地址DNS的IP地址【2】获取四要素的两种方式(1)静态获取即手动配置(2)动态获取通过dhcp获取以太网头ip头udp头dhcp数据包(1)最前面的”以太网标头”,设置发出方(本机)的MAC地......
  • m基于log-MPA检测算法的SCMA通信链路matlab误码率仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       稀疏码多址接入(SparseCodeMultipleAccess,SCMA)是一种非正交多址接入技术,它通过引入码本的稀疏性来实现多用户的高效接入。在SCMA系统中,多用户共享相同的时频资源,每个用户从自己的码本......
  • 内网渗透-通信问题
    内网渗透-通信tcpdump-n-ieth0udpdstport53抓取流量端口转发linux下的端口转发:iptables、firewallmeterpreter端口转发(反弹shell后,meterpreter输入)portfwdadd-l9999-rip-p80:添加路由portfwdlist:打印端口映射portfwddelete-l9999-rip-p80:删除路由......