类(已经过测试)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Windows.Forms;
namespace WindowsFormsApp13
{
public class Modbus
{
private SerialPort MySerialPort = null;
//received byte arry
private byte[] recTempBytes;
private byte recByte;
public int currentAddr = default;//地址
public int MWWordlen = default;//字节长度
public string ReceString = null;//接收的字符串
public byte[] Recebytes = null;//接收后转换成的字节数组
public Modbus()
{
MySerialPort = new SerialPort();
}
/// <summary>
/// initialize serialport's property
/// </summary>
/// <param name="IbaudRate">波特率【9600】</param>
/// <param name="iPortNo">端口名称</param>
/// <param name="iDataBits">数据位【8】</param>
/// <param name="iParity">校验位</param>
/// <param name="iStopBits">停止位【1】</param>
/// <returns></returns>
public bool OpenCom(int IbaudRate, string iPortNo, int iDataBits, Parity iParity, StopBits iStopBits)
{
try
{
if (MySerialPort.IsOpen)
{
MySerialPort.Close();
return false;
}
else//initialize
{
MySerialPort.BaudRate = IbaudRate;
MySerialPort.PortName = iPortNo;
MySerialPort.DataBits = iDataBits;
MySerialPort.Parity = iParity;
MySerialPort.StopBits = iStopBits;
MySerialPort.ReceivedBytesThreshold = 1;
MySerialPort.DataReceived += MySerialPort_ReceivedHandler;
MySerialPort.Open();
return true;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// close the serialp