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;
 | |
|         }
 | |
|     }
 | |
| }
 |