参考:https://blog.csdn.net/mannix_lei/article/details/79979432

   https://www.cnblogs.com/ElijahZeng/p/7609241.html

1、关于怎么建立工程的,这里就不过多赘述了,先用控件编写个窗体程序如下

  

2、双击窗体跳转到程序页面,直接上代码,代码里有注释,看注释都可以看懂的

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;
using System.Threading; //声明线程命名空间 namespace TB528IL_APP
{
public partial class Form1 : Form
{
#region 字段/属性/委托
/// <summary>
/// 串行端口对象
/// </summary>
private SerialPort sp; /// <summary>
/// 串口接收数据委托
/// </summary>
public delegate void ComReceiveDataHandler(string data); public ComReceiveDataHandler OnComReceiveDataHandler = null; /// <summary>
/// 端口名称数组
/// </summary>
public string[] PortNameArr { get; set; } /// <summary>
/// 串口通信开启状态
/// </summary>
public bool PortState { get; set; } = false; /// <summary>
/// 编码类型
/// </summary>
public Encoding EncodingType { get; set; } = Encoding.ASCII;
#endregion public Form1()
{
InitializeComponent();
My_COM();
OpenPort("COM1");
} #region 方法 /*********************************************
函数名: My_COM()
功 能: 新建串口实例
参 数: 无
返回值: 无
********************************************/
public void My_COM()
{
PortNameArr = SerialPort.GetPortNames();
sp = new SerialPort();
}
/*********************************************
函数名:OpenPort(string portName, int boudRate = 115200, int dataBit = 8, int stopBit = 1, int timeout = 5000)
功 能:打开端口,并且初始化默认端口波特率、数据位、停止位、超时时间等参数
参 数:<param name="portName">端口名称
<param name="boudRate">波特率
<param name="dataBit">数据位
<param name="stopBit">停止位
<param name="timeout">超时时间
返回值:无
********************************************/
public void OpenPort(string portName, int boudRate = , int dataBit = , int stopBit = , int timeout = )
{
try
{
sp.PortName = portName;
sp.BaudRate = boudRate;
sp.DataBits = dataBit;
sp.StopBits = (StopBits)stopBit;
sp.ReadTimeout = timeout;
sp.Open();
PortState = true;
}
catch (Exception e)
{
throw e;
}
} /*********************************************
函数名: ClosePort()
功 能: 关闭端口
参 数: 无
返回值: 无
********************************************/
public void ClosePort()
{
try
{
sp.Close();
PortState = false;
}
catch (Exception e)
{
throw e;
}
} /*********************************************
函数名: SendData(string sendData)
功 能: 发送字符串数据
参 数: string sendData 串口要发送的字符串
返回值: 无
********************************************/
public void SendData(string sendData)
{
try
{
sp.Encoding = EncodingType;
sp.Write(sendData);
}
catch (Exception e)
{
throw e;
}
} /*********************************************
函数名: Send_Byte(string send_byte)
功 能: 把要发送的字符串转换为16进制后发送,例如把字符串"9610"转换为0x25、0x8a发送出去
参 数: string send_byte 串口要转换为16进制发送的字符串
返回值: 无
********************************************/
public void Send_Byte(string send_byte)
{
byte[] data = new byte[];
int Time_Buff = ;
int.TryParse(send_byte, out Time_Buff); //将字符串转换为整形
data[] = 0x57;
data[] = 0xa1;
data[] = (byte)(Time_Buff >> );
data[] = (byte)Time_Buff;
// 参数:
// buffer: 包含要写入端口的数据的字节数组。
// offset: buffer 参数中从零开始的字节偏移量,从此处开始将字节复制到端口。
// count : 要写入的字节数。
sp.Write(data, , );
} #endregion //发送Light_delay按钮
private void button1_Click(object sender, EventArgs e)
{
//获取文本框的值
string Light_delay = Light_delay_textBox.Text; //linght_delay_textBox为textBox控件的名称
Send_Byte(Light_delay);
} //发送Camera_delay按钮
private void button2_Click(object sender, EventArgs e)
{
string Camera_delay = Camera_delay_textBox.Text;
SendData(Camera_delay);
} //发送Light_working_time按钮
private void button3_Click(object sender, EventArgs e)
{
string Light_working_time = Light_working_time_textBox.Text;
SendData(Light_working_time);
}
} }

3、运行结果如下,效果理想

 

  

4、关于串口接收还没完全搞明白,迟点补回来

C# 实现串口发送数据(不用串口控件版)的更多相关文章

  1. C#串口通信—向串口发送数据,同步接收返回数据

    最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...

  2. 【Debug】串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!

    串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!

  3. C#把汉字转换成16进制(HEX)并向串口发送数据

    报警器实例:(有发送,无返回获取) using System; using System.Collections.Generic; using System.Linq; using System.Te ...

  4. WPF内实现与串口发送数据和接收数据

    原文:WPF内实现与串口发送数据和接收数据 与串口发送数据和接收数据,在此作一个简单的Demo.此Demo可以实现按下硬件按钮,灯亮,发送灯状态数据过来.并且可以实现几个灯同时亮,发送灯的状态数据过来 ...

  5. (已解决)STM32L151使用串口发送数据第一字节为FE问题!

    最近学习到串口发送数据时遇到一个问题:第一个字节总是FE,后面才是对的数据. 最终解决的方法是: 讲GPIO复用的操作放到GPIO配置之前! 体现在代码中就是: //打开GPIO时钟 RCC_AHBP ...

  6. 不用splitter控件 简单实现对mfc对话框的分割的方法

    不用splitter控件  简单实现对mfc对话框的分割的方法 直接贴上源代码主要部分吧 这个是基于对话框的工程 进行对话框的分割实现 只是相应了三个消息函数,看一下就会明白的 我空间资源里边有现成的 ...

  7. WPF数据模板和控件模板

     WPF中有控件模板和数据模板,控件模板可以让我们自定义控件的外观,而数据模板定义了数据的显示方式,也就是数据对象的可视结构,但是这里有一个问题需要考虑,数据是如何显示出来的?虽然数据模板定义了数 ...

  8. stm32串口发送数据复位 第一个数据丢失

    http://blog.csdn.net/kevinhg/article/details/40991655 STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成 ...

  9. 语音控制单片机工作【百度语音识别,串口发送数据到单片机】【pyqt源码+软件】!!

    前些天闲着没事,就做了个语音识别结合串口发送指令的软件,用的是pyqt写的,软件打开后对着笔记本的话筒说话, 他就能识别返回文字结果,然后匹配语音中的关键词,如果有关键词就发送关键词对应的命令,比如语 ...

随机推荐

  1. 使用Fiddler进行抓包

    参考:http://blog.csdn.net/gld824125233/article/details/52588275 1.手机跟电脑需要使用同一个局域网  如果是台式机需要将手机的mac地址让运 ...

  2. 使用memcachedclientXmemcached与Spring整合

    1 简单介绍 Xmemcached是一个高性能的基于java nio的memcachedclient.在经过三个RC版本号后.正式公布1.10-final版本号. xmemcached特性一览: 1. ...

  3. NS3网络仿真(5): 数据包分析

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 在我们生成的xml文件里.是不包括生成的数据包的数据的,在我们的脚本中加入以下的语句: point ...

  4. WPF学习笔记——设置ListBox选中项的背景颜色

    ListBox的选中项,在我这个WIN7里面,是亮蓝色,颜色是如此之浓厚,差不多遮盖了前景的字体! 太不协调了.可是怎么设置呢?设置触发器,又是IsMouseOver,又是IsFocused,在谷歌里 ...

  5. 解析Qt元对象系统(四) 属性系统(确实比较方便)

    官方解释 我们在Qt源码中可以看到一个QObject的子类经常会用到一些Q_开头的宏,例如QMainWindow类开始部分代码是这样的: Q_PROPERTY(QSize iconSize READ ...

  6. Sorting It All Out(拓扑排序)

    http://poj.org/problem?id=1094 1.判断所给关系是否为合法的拓扑序列,若存在环,输出 "Inconsistency found after %d relatio ...

  7. Kubernetes Port Forward 机制访问 pod

    需求:研发需要调试部署的pod是否能正常提供访问,但又不对pod进行暴露到集群外. 实现:通过Kubernetes的Port Forward机制对本机端口映射到pod端口来实现 1.安装kubectl ...

  8. JPA实体关联关系,一对一以及转换器

    现有两张表 room (rid,name,address,floor) room_detail (rid,roomid,type) 需要创建房间实体,但是也要包含type属性 @Data //lamb ...

  9. AE错误代码解释

    每当我们在进行AE开发,出现错误时经常会出现错误代码,但是我们并不知道它到底代表什么意思,这里的而错误编码我们可以对照着找到我们需要的时候常详细信息(问题是,经常还是会出现没有错误编码HRESULT ...

  10. C# 多线程系列(二)

    传递数据给一个线程 通过函数或lambda表达式包一层进行传递. static void Main(string[] args) { Thread thread = new Thread(() =&g ...