1、串口通信
static void Main(string[] args)
{
SerialPort sp1 = new SerialPort();
string[] strCom = SerialPort.GetPortNames();
if (strCom.Length == 0) {
Console.WriteLine("没有找到可以接入的串口!");
}
for (int i = 0; i < strCom.Length; i++)
{
Console.Write(strCom[i], "\r\n");
}
sp1.PortName = "COM3";
Console.WriteLine(strCom[1]);
sp1.BaudRate = 9600;
sp1.DataBits = 8;
sp1.StopBits = StopBits.One;
sp1.Parity = Parity.None;
sp1.DataReceived += Sp1_DataReceived;
sp1.DtrEnable = true;
sp1.RtsEnable = true;
Console.WriteLine("open前===="+sp1.IsOpen);
sp1.Open();
Console.WriteLine("open后====" + sp1.IsOpen);
string sendData = "\r\nSEND,00000032\r\n";
#region 数据转换16
Encoding encode = new UTF8Encoding();
byte[] b = encode.GetBytes(sendData);
string result = string.Empty;
for (int i = 0; i < b.Length; i++)
{
result += "%" + Convert.ToString(b[i], 16);
}
string[] chars = result.Split(new char[] { '%' }, StringSplitOptions.RemoveEmptyEntries);
byte[] bx = new byte[chars.Length];
for (int i = 0; i < chars.Length; i++)
{
bx[i] = Convert.ToByte(chars[i], 16);
}
#endregion
sp1.Write(bx,0,bx.Length);
Console.WriteLine("open关闭====" + sp1.IsOpen);
Console.ReadLine();
sp1.PinChanged += new SerialPinChangedEventHandler(SerialPort_PinChanged);
void Sp1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Byte[] receivedData = new Byte[sp1.BytesToRead];
sp1.Read(receivedData, 0, receivedData.Length);
Console.WriteLine(new UTF8Encoding().GetString(receivedData));
}
void SerialPort_PinChanged(object sender, SerialPinChangedEventArgs e)
{
if (e.EventType == SerialPinChange.Break)
{
}
}
}