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

桃扇骨 2023-01-15 11:21 183阅读 0赞

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 条评论,183人围观)

还没有评论,来说两句吧...

相关阅读

    相关 VC串口编程实例2

      本例程采用异步串口操作,我们只介绍软件部分,RS485接口接线方法不作介绍,感兴趣的读者可以查阅相关资料。   打开VC++6.0,新建基于对话框的工程RS485Com

    相关 VC串口编程实例1

      本例程采用同步串口操作,我们只介绍软件部分,RS485接口接线方法不作介绍,感兴趣的读者可以查阅相关资料。   打开VC++6.0,新建基于对话框的工程RS485Comm