100 lines
2.8 KiB
C#
100 lines
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.IO.Ports;
|
|
namespace Deiniu.win.elelab
|
|
{
|
|
public class port
|
|
{
|
|
private SerialPort commPort = new SerialPort();
|
|
public delegate void receive_data(byte[] port_data);
|
|
public event receive_data port_event;
|
|
//初始化端口 使用的时候必须先初始化
|
|
//int com_count 端口号 1 - 100
|
|
internal bool initPorts(int com_count)
|
|
{
|
|
commPort.PortName = "COM" + com_count.ToString();
|
|
commPort.BaudRate = 9600;
|
|
commPort.Parity = Parity.None;// Parity.Even;
|
|
commPort.DataBits = 8;
|
|
commPort.StopBits = StopBits.One;
|
|
commPort.Encoding = Encoding.ASCII;
|
|
commPort.WriteBufferSize = 0x5000;
|
|
commPort.ReadBufferSize = 0x5000;//by dhwu 150130
|
|
commPort.DataReceived += new SerialDataReceivedEventHandler(dataReceived);
|
|
commPort.ReceivedBytesThreshold = 1;
|
|
try
|
|
{
|
|
commPort.Open();
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
private void dataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
|
|
{
|
|
byte[] readBuffer = new byte[commPort.BytesToRead];
|
|
commPort.Read(readBuffer, 0, readBuffer.Length);
|
|
port_event(readBuffer);
|
|
}
|
|
//发送数据
|
|
//byte[] byt 字节数组 发送内容
|
|
internal bool writeBytes(byte[] byt)
|
|
{//
|
|
for (int i = 0; i < byt.Length; i++)
|
|
{
|
|
if (write_byte(byt[i]) == false)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
private bool write_byte(byte byt)
|
|
{
|
|
byte[] byt1 = new byte[1];
|
|
byt1[0] = byt;
|
|
if (commPort.IsOpen)
|
|
{
|
|
try
|
|
{
|
|
commPort.Write(byt1, 0, 1);
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
while (commPort.BytesToWrite != 0) ;
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
commPort.Open();
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
if (commPort.IsOpen)
|
|
{
|
|
try
|
|
{
|
|
commPort.Write(byt1, 0, 1);
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
while (commPort.BytesToWrite != 0) ;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|