123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO.Ports;
- namespace Aitex.Core.RT.Communication
- {
- public class RS232
- {
- public string ErrorString { get; set; }
- public string PortName { get { return m_Port.PortName; } }
- protected SerialPort m_Port = new SerialPort();
- public RS232(string name, int baudRate, int dataBits, Parity parity = Parity.None, StopBits stopBits = StopBits.One)
- {
- m_Port.PortName = name;
- m_Port.BaudRate = baudRate;
- m_Port.DataBits = dataBits;
- m_Port.Parity = parity;
- m_Port.StopBits = stopBits;
- m_Port.RtsEnable = false;
- m_Port.DtrEnable = false;
- m_Port.ReadTimeout = 2000;
- m_Port.WriteTimeout = 1000;
- m_Port.NewLine = "\r\n";
- m_Port.Handshake = Handshake.None;
- }
- ~RS232()
- {
- Close();
- }
- public bool Open()
- {
- if (m_Port.IsOpen)
- {
- ErrorString = m_Port.PortName + " already opened";
- return false;
- }
- try
- {
- m_Port.Open();
- m_Port.DiscardInBuffer();
- m_Port.DiscardOutBuffer();
- }
- catch (Exception e)
- {
- ErrorString = m_Port.PortName + " 端口无法打开,请检查配置文件端口号的设置。" + e.Message;
- return false;
- }
- ErrorString = m_Port.PortName + "opened successfully";
- return true;
- }
- public bool IsOpen()
- {
- return m_Port.IsOpen;
- }
- public bool Close()
- {
- if (m_Port.IsOpen)
- {
- try
- {
- m_Port.Close();
- }
- catch (Exception e)
- {
- ErrorString = m_Port.PortName + " 端口无法关闭。" + e.Message;
- return false;
- }
- }
- ErrorString = m_Port.PortName + "Closed Successfully";
- return true;
- }
- public void WriteBytes(byte[] bytes)
- {
- try
- {
- m_Port.Write(bytes, 0, bytes.Length);
- }
- catch (Exception e)
- {
- ErrorString = m_Port.PortName + " write error :" + e.Message;
- throw (e);
- }
- }
- public void ClearPortBuffer()
- {
- m_Port.DiscardInBuffer();
- m_Port.DiscardOutBuffer();
- }
- public bool ReadByte(ref byte value)
- {
- bool ret = true;
- value = 0;
- try
- {
- value = (byte)m_Port.ReadByte();
- }
- catch (TimeoutException)
- {
- ret = false;
- }
- catch (Exception e)
- {
- ErrorString = m_Port.PortName + " read error :" + e.Message;
- throw (e);
- }
- return ret;
- }
- }
- }
|