php串口编程实例,C#_C#串口编程实例代码,由于工作需要,第一次接触串口 - phpStudy...

C#串口编程实例代码

由于工作需要,第一次接触串口编程.所以不得不在网上查阅各种编程实例.最后结合自己的理解与实践,最终有了如下代码.

本代码只经过了简单的软件测试,与简单的硬件测试.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

using System.Threading;

using System.IO.Ports;

namespace PacketsTest

{

class ComSR

{

private SerialPort serialPort;

private bool status = false;//接受结束状态,true为成功接收到数据.

private byte[] reciveData = null;//接受到的数据存储到这里.

public bool Status

{

set { status = value; }

get { return status; }

}

public byte[] RecivedData

{

get { return reciveData; }

}

public SerialPort _SerialPort

{

get { return serialPort; }

}

public ComSR(string portName,int baudRate,int dataBits,Parity parity,StopBits stopbits)

{

serialPort = new SerialPort();

serialPort.PortName = portName;//设置端口

serialPort.BaudRate = baudRate;//设置波特率

serialPort.DataBits = dataBits;//设置数据长度

serialPort.Parity = parity;//设置奇偶校验协议

serialPort.StopBits = stopbits;//停止位

serialPort.ReceivedBytesThreshold = 1;//这里是读事件触发条件,1代表一个字节

serialPort.DtrEnable = true;//启用数据终端就绪信号

serialPort.RtsEnable = true;//请求发送就绪信号

serialPort.DataReceived += new SerialDataReceivedEventHandler(Data_Recive);//绑定处理读事件的函数.

}

public void SendBuff(byte[] data)

{

try

{

serialPort.Write(data, 0, data.Length);//这里是写

}

catch (Exception e)

{

if (serialPort != null && serialPort.IsOpen)

{

status = false; //这个status是我在上层类中判断端口读写状态的属性,可以去掉

serialPort.Close();

}

}

}

void Data_Recive(object o, EventArgs e)//这个是读端口,事件处理函数

{

try

{

Thread.Sleep(3);

int length = serialPort.BytesToRead;

reciveData = new byte[length];

serialPort.Read(reciveData, 0, length);

while (serialPort.BytesToRead != 0)//由于数据长度读写不一,而且时间很难确定,所以在这里做了这样的处理

{

Thread.Sleep(1);

}

if (serialPort.IsOpen)

{

status = true;

//serialPort.Close();//这里不应该关闭,应当在更高层次的程序上关闭端口.

}

}

catch (Exception ex)

{

if (serialPort != null && serialPort.IsOpen)

{

status = false;

serialPort.Close();

}

}

}

public void PortOpen()

{

if (!serialPort.IsOpen)

{

serialPort.Open();

}

else

{

serialPort.Close();

serialPort.Open();

}

}

///

/// 关闭端口

///

public void PortClose()

{

if (serialPort != null && serialPort.IsOpen)

{

serialPort.Close();

}

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持phpstudy。相关阅读:

CSS line-height行高上下居中垂直居中样式属性

Linux认证Fedora12以root用户登录的方法

模拟Spring的简单实现

YII Framework学习之request与response用法(基于CHttpRequest响应)

简单介绍MySQL中索引的使用方法

在CentOS系统上安装Telnet的教程

JavaScript ES5标准中新增的Array方法

c#数据绑定之删除datatable数据示例

一个简单的JS时间控件示例代码(JS时分秒时间控件)

C/C++编译器GCC下的常用编译命令总结

表单Form元素的一些简单实现代码以注册为例

Yii使用CLinkPager分页实例详解

解析PHP处理换行符的问题 \r\n

C#代码性能测试类(简单实用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值