参考: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. spark定制之五:使用说明

    背景 spark-shell是一个scala编程解释运行环境,能够通过编程的方式处理逻辑复杂的计算,但对于简单的类似sql的数据处理,比方分组求和,sql为"select g,count(1 ...

  2. Mybatis 框架文档 超具体笔记

    1      Mybatis入门 1.1    单独使用jdbc编程问题总结 1.1.1  jdbc程序 Public static void main(String[] args) { Connec ...

  3. luogu1345 奶牛的电信

    拆点.最小割的模板题. 我只想说一点.拆点时不可以下意识地初始化!起点和终点不能直接写编号!写拆点后的Id! #include <cstdio> #include <cstring& ...

  4. oc41--SEL

    // // main.m // 代理的时候用. /* SEL类型: 代表方法的签名,在类中的方法列表中存储着该签名与该方法对应的关系,类的方法列表存储在类对象中, 每个方法都有一个与之对应的sel类型 ...

  5. 线性回归(最小二乘法、批量梯度下降法、随机梯度下降法、局部加权线性回归) C++

    We turn next to the task of finding a weight vector w which minimizes the chosen function E(w). Beca ...

  6. Python入门 来点栗子

    查天气(1) http://wthrcdn.etouch.cn/weather_mini?citykey=101280804 http://wthrcdn.etouch.cn/WeatherApi?c ...

  7. ACM_Exponentiation

    Exponentiation Time Limit: 2000/1000ms (Java/Others) Problem Description: Problems involving the com ...

  8. 在PL/SQL中使用游标、动态sql和绑定变量的小例子

    需求:查询并输出30号部门的雇员信息 方式一:使用 loop...fetch SET serveroutput ON; DECLARE CURSOR c_emp IS ; v_emp emp%rowt ...

  9. JQuery 数据加载中禁止操作页面

    比较常见的做法,但对我而言是第一次做,记录一下. 为了把找来的loading.gif 的背景色设置为透明,还特意装了quicktime. 有学到一些额外的东西. 先将div及img定义好 <bo ...

  10. retrofit post请求多文件,partMap用法

    1. APIService 定义注解 @Multipart @POST("cyxx/Feedback/add.do") Observable<ResponseBody> ...