using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO.Ports; namespace 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 public bool init_wms_sys(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(Sp_DataReceived); commPort.ReceivedBytesThreshold = 1; try { commPort.Open(); } catch { return false; } return true; } private void Sp_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 字节数组 发送内容 public bool write_all_byte(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; } } }