参考: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. MFC的UI更新机制和加速键的创建

    近期在看<MFC Windows程序设计>这本书,正好看到更新菜单中的菜单项和加入菜单项的加速键这方面的内容,下面总一下总结. MFC提供的更新菜单项的机制例如以下: 通过消息映射表中的O ...

  2. C# 正则表达式 和 JAVA表达式是想通的

    正则表达式语法 也许有人会说,现在需要正则表达式去验证什么的话,直接在网上找不久一大片吗?还需要学什么啊! 是的,现在在网上找确实是一找一大片,但是,有时候我们也遇到这样的情况,就是我们在网上找的复制 ...

  3. suse的安装命令zypper,类似apt

    例子:添加11.3的官方软件和升级源zypper ar http://download.opensuse.org/distribution/11.3/repo/oss/ mainzypper ar h ...

  4. Codeforces--630K--Indivisibility(容斥)

     K - Indivisibility Crawling in process... Crawling failed Time Limit:500MS     Memory Limit:65536 ...

  5. hdoj--5612--Baby Ming and Matrix games(dfs)

     Baby Ming and Matrix games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  6. CentOS/ubuntu iscsi initior target

    http://docs.oracle.com/cd/E26926_01/html/E25884/fpjwy.html iscsiadm: initiator reported error (24 - ...

  7. 使用Github做服务器展示前端页面

    1)在github上创建自己一个项目,项目名称必须是你的github账号名.github.io  譬如 fk123456.github.io 因为我已经创建了,所以显示名字重复. 2)使用命令行的方式 ...

  8. C - Anton and Danik

    Problem description Anton likes to play chess, and so does his friend Danik. Once they have played n ...

  9. Elasticsearch之curl删除索引库

    关于curl创建索引库的介绍,请移步 Elasticsearch之curl创建索引库 [hadoop@djt002 elasticsearch-2.4.3]$ curl -XPUT 'http://1 ...

  10. SQLServer2008 关于数值字段列的累计

    create table #temp20110610(     id int identity(1,1),     date varchar(8),     qty float) insert int ...