一、准備虛擬串口驅動工具
創建倆個虛擬串口,如圖:
二、創建兩個控制台程序
模擬串口的發送接收數據
1. 接收數據,代碼如下:
//遍歷串行端口名稱數組 foreach (string port in System.IO.Ports.SerialPort.GetPortNames()) { Console.WriteLine(port); } byte[] b = new byte[32]; SerialPort sp = new SerialPort("COM4"); while (true) { //打開新的串行端口連接 sp.Open(); //丟棄來自串行驅動程序的接受緩沖區的數據 sp.DiscardInBuffer(); //丟棄來自串行驅動程序的傳輸緩沖區的數據 sp.DiscardOutBuffer(); //從串口輸入緩沖區讀取一些字節並將那些字節寫入字節數組中指定的偏移量處 sp.Read(b, 0, b.Length); StringBuilder sb = new StringBuilder(); for (int i = 0; i < b.Length;i++ ) { sb.Append(Convert.ToString(b[i]) + " "); } Console.WriteLine(sb.ToString()); Console.WriteLine(b.Length.ToString()); //關閉端口連接 sp.Close(); //當前線程掛起500毫秒 System.Threading.Thread.Sleep(500); }
2.發送數據,代碼如下:
SerialPort sp = new SerialPort("COM2"); byte[] m = new byte[5]; int i = 0; while (true) { //打開新的串行端口連接 sp.Open(); //丟棄來自串行驅動程序的接受緩沖區的數據 sp.DiscardInBuffer(); //丟棄來自串行驅動程序的傳輸緩沖區的數據 sp.DiscardOutBuffer(); m[0] = Convert.ToByte("1"); m[1] = Convert.ToByte("2"); m[2] = Convert.ToByte("3"); m[3] = Convert.ToByte("4"); m[4] = Convert.ToByte("5"); //使用緩沖區的數據將指定數量的字節寫入串行端口 sp.Write(m, 0, m.Length); //關閉端口連接 sp.Close(); Console.WriteLine(i.ToString()); i = i + 1; //當前線程掛起500毫秒 System.Threading.Thread.Sleep(500); }