⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 读串口.txt

📁 读串程序
💻 TXT
字号:
public void Open() 
		{ 

			DCB dcbCommPort = new DCB(); 
			COMMTIMEOUTS ctoCommPort = new COMMTIMEOUTS(); 


			// OPEN THE COMM PORT. 


			hComm = CreateFile("COM" + PortNum ,GENERIC_READ | GENERIC_WRITE,0, 0,OPEN_EXISTING,0,0); 

			// IF THE PORT CANNOT BE OPENED, BAIL OUT. 
			if(hComm == INVALID_HANDLE_VALUE) 
			{ 
				throw(new ApplicationException("Comm Port Can Not Be Opened")); 
			} 

			// SET THE COMM TIMEOUTS. 

			GetCommTimeouts(hComm,ref ctoCommPort); 
			ctoCommPort.ReadTotalTimeoutConstant = ReadTimeout; 
			ctoCommPort.ReadTotalTimeoutMultiplier = 0; 
			ctoCommPort.WriteTotalTimeoutMultiplier = 0; 
			ctoCommPort.WriteTotalTimeoutConstant = 0; 
			SetCommTimeouts(hComm,ref ctoCommPort); 

			// SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS. 
			// THERE ARE OTHER WAYS OF DOING SETTING THESE BUT THIS IS THE EASIEST. 
			// IF YOU WANT TO LATER ADD CODE FOR OTHER BAUD RATES, REMEMBER 
			// THAT THE ARGUMENT FOR BuildCommDCB MUST BE A POINTER TO A STRING. 
			// ALSO NOTE THAT BuildCommDCB() DEFAULTS TO NO HANDSHAKING. 

			dcbCommPort.DCBlength = Marshal.SizeOf(dcbCommPort); 
			GetCommState(hComm, ref dcbCommPort); 
			dcbCommPort.BaudRate=BaudRate; 
			dcbCommPort.Parity=Parity; 
			dcbCommPort.ByteSize=ByteSize; 
			dcbCommPort.StopBits=StopBits; 
			SetCommState(hComm, ref dcbCommPort); 

			Opened = true; 

		} 

		public void Close() 
		{ 
			if (hComm!=INVALID_HANDLE_VALUE) 
			{ 
				CloseHandle(hComm); 
			} 
		} 

		public byte[] Read(int NumBytes) 
		{ 
			byte[] BufBytes; 
			byte[] OutBytes; 
			BufBytes = new byte[NumBytes]; 
			if (hComm!=INVALID_HANDLE_VALUE) 
			{ 
				OVERLAPPED ovlCommPort = new OVERLAPPED(); 
				int BytesRead=0; 
				hCommRead=ReadFile(hComm,BufBytes,NumBytes,ref BytesRead,ref ovlCommPort); 
				OutBytes = new byte[BytesRead]; 
				Array.Copy(BufBytes,OutBytes,BytesRead); 

			} 
			else 
			{ 
				throw(new ApplicationException("Comm Port Not Open")); 
			} 
			return OutBytes; 
		} 



		public void Write(byte[] WriteBytes) 
		{ 
			if (hComm!=INVALID_HANDLE_VALUE) 
			{ 
				OVERLAPPED ovlCommPort = new OVERLAPPED(); 
				int BytesWritten = 0; 
				WriteFile(hComm,WriteBytes,WriteBytes.Length,ref BytesWritten,ref ovlCommPort); 
			} 
			else 
			{ 
				throw(new ApplicationException("Comm Port Not Open")); 
			} 
		} 
	} 

	class HexCon 
	{ 
		//converter hex string to byte and byte to hex string 
		public static string ByteToString(byte[] InBytes) 
		{ 
			string StringOut=""; 
			foreach (byte InByte in InBytes) 
			{ 
				StringOut=StringOut + String.Format("{0:X2} ",InByte); 
			} 
			return StringOut; 
		} 
		public static byte[] StringToByte(string InString) 
		{ 
			string[] ByteStrings; 
			// char [] Byte; 
			ByteStrings = InString.Split(" ".ToCharArray()); 
			byte[] ByteOut; 
			ByteOut = new byte[ByteStrings.Length-1]; 
			for (int i = 0;i==ByteStrings.Length-1;i++) 
			{ 
				// ByteStrings.to 
				ByteOut[i] = System.Convert.ToByte(("0x" + ByteStrings[i])); 
			} 
			return ByteOut; 
		} 
	} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -