C#_串口程序_二次打包_事件响应
using System;
using System.IO.Ports;
using System.Windows.Forms;
namespace Dll_Serial_Comm
{
public class Dll_Serial_Comm
{
private SerialPort serialPort;
private string dataRevcived = string.Empty;
public Dll_Serial_Comm()
{
serialPort = new SerialPort();
Ini_Com _ini = new Ini_Com();
serialPort.WriteBufferSize = 1024;
serialPort.ReadBufferSize = 1024;
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
serialPort.PortName = “COM1”;
serialPort.BaudRate = 19200;
serialPort.DataBits = 8;
serialPort.StopBits = System.IO.Ports.StopBits.One;//1个停止位
serialPort.Parity = System.IO.Ports.Parity.Odd;//奇校验位
serialPort.ReadTimeout = 1000;//读取超时设置
serialPort.WriteTimeout =1000;//写入超时设置
serialPort.DiscardNull = true;
serialPort.ReceivedBytesThreshold = 5;
serialPort.NewLine = "\r";//读取正行的标志
}
public event EventHandler<WWW_EventArgs> Event_Get_Message;//事件,带个参数
protected virtual void OnEvent_Get_Message(WWW_EventArgs e)
{
EventHandler<WWW_EventArgs> handler = Event_Get_Message;
if (handler != null)
{
handler(this, e);
}
}
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
ReadData();
}
void ReadData()
{
dataRevcived = serialPort.ReadLine();
WWW_EventArgs ee = new WWW_EventArgs(dataRevcived);
OnEvent_Get_Message(ee);//触发事件
}
public void WritePort(string command)
{
if (!IsOpen)
{
Open();
}
serialPort.DiscardInBuffer();//还闹不清机理,加上安全
serialPort.DiscardOutBuffer();
serialPort.WriteLine(command);
}
public void Buffer_Clean()
{
serialPort.DiscardInBuffer();
serialPort.DiscardOutBuffer();
}
public bool IsOpen
{
get { return serialPort.IsOpen; }
}
public void Open()
{
if (serialPort.IsOpen)
{
Close();
}
try
{
serialPort.Open();
serialPort.DiscardOutBuffer();
serialPort.DiscardInBuffer();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
serialPort.Dispose();
serialPort = new SerialPort();
serialPort.Open();
}
}
public void Close()
{
try
{
serialPort.DiscardInBuffer();
serialPort.DiscardOutBuffer();
serialPort.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
serialPort.Dispose();
serialPort = new SerialPort();
serialPort.Close();
}
}
public void End()
{
serialPort.Dispose();
}
}
public class WWW_EventArgs : EventArgs//事件参数,各种类型参数重载一下构造函数
{
private string args_string;
public string Args_string
{
get { return args_string; }
set { args_string = value; }
}
public WWW_EventArgs(string s)
{
args_string = s;
}
private int args_int;
public int Args_int
{
get { return args_int; }
set { args_int = value; }
}
public WWW_EventArgs(int s)
{
args_int = s;
}
private string[] args_string_array;
public string[] Args_string_array
{
get { return args_string_array; }
set { args_string_array = value; }
}
public WWW_EventArgs(string[] s)
{
args_string_array = s;
}
private object args_object;
public object Args_object
{
get { return args_object; }
set { args_object = value; }
}
public WWW_EventArgs(object s)
{
args_object = s;
}
}
}
C#_串口程序_二次打包_事件响应的更多相关文章
- C#_串口通信_SerialPort_一个最基础的串口程序
一个最最基础的 串口通信 程序!!! 最近正在学c#_还不是很熟悉_只是有点java的基础 SerialPort类 的介绍 http://msdn.microsoft.com/zh-cn/librar ...
- 第011课_串口(UART)的使用
from: 第011课_串口(UART)的使用 第001节_辅线1_硬件知识_UART硬件介绍 1. 串口的硬件介绍 UART的全称是 Universal Asynchronous Receiver ...
- 七牛云如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?
一般情况下,点账户名——账户设置——安全设置,即可开通两步验证 具体步骤见链接 七牛云如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序(官网)对比谷歌身份验证器APP ...
- twitch游戏直播(【国外】平台)如何绑定二次验证码_虚拟MFA?
一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 twitch游戏直播([国外]平台)如何绑定二次验证码_虚拟MFA? 二次验证码小程序于谷歌身份验证器APP的优势(更多见官网 ...
- humlbe bundle如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?
一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 humlbe bundle如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的 ...
- R星游戏如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?
一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 R星游戏如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载 ...
- 关于虎信如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?
一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 虎信如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载ap ...
- paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器?
一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 ...
- BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树
BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排 ...
随机推荐
- Qt之QCustomPlot绘图(一)配置和第一个例子
最近一个用Qt开发的项目需要绘制坐标曲线,我在老师的指点下使用了QCustomPlot这个插件,使用方法简单,功能还算不错. 可是在网上找了很多资料和博文都只是将官方提供的例子演示一遍,没有系统全面的 ...
- 【USACO 1.3.2】修理牛棚
[描述] 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有牛 ...
- GitHub-修改以下host-ip可加快访问速度
#GitHub START 207.97.227.239 github.com 204.232.175.94 gist.github.com 107.21.116.220 help. ...
- input, textarea,监听输入事件
IE使用'propertychange'事件监听,其它浏览器使用'input'事件测试了IE7-10, Chrome, FF, 输入没有问题.♥但在IE9下, 删除, 回退, Ctrl+X 没有 ...
- underscorejs-reduce学习
2.3 reduce 2.3.1 语法: _.reduce(list, iteratee, [memo], [context]) 2.3.2 说明: reduce方法把list中元素归结为一个单独的数 ...
- ZOJ1074 (最大和子矩阵 DP)
F - 最大子矩阵和 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Descri ...
- Java基础学习第一天
================每日必读==================== 写代码: 1.明确需求.我需要实现什么需求? 2.分析思路.我需要怎么实现需求? 3.确定步骤.我的每一部分思路需要使 ...
- android 休眠唤醒机制分析(三) — suspend
本文转自:http://blog.csdn.net/g_salamander/article/details/7988340 前面我们分析了休眠的第一个阶段即浅度休眠,现在我们继续看休眠的第二个阶段 ...
- Altera quartus II遇到的问题
编译时提示: Warning (13024): Output pins are stuck at VCC or GND Warning (13410): Pin "SCLK" is ...
- 7月12日至芯FPGA就业班招生
至芯科技FPGA就业培训班将于2014年7月12日正式开班,届时至芯科技将秉承着一贯的教学传统,为广大师生打造一个专业的技术平台和轻松的学习环境. 在夏宇闻教授的带领下,至芯科技汇聚了一批来自国内外大 ...