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

📄 form1.h

📁 microchip PIC18,pic24系列单片机USB驱动的开发源码
💻 H
📖 第 1 页 / 共 2 页
字号:

			Return Values:
				None

			Remarks:
				None
		***************************************************************************/
		private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) 
		{
			//Update the COM ports list so that we can detect
			//  new COM ports that have been added.
			UpdateCOMPortList();
		}


		/****************************************************************************
			Function:
				private void btnConnect_Click(object sender, EventArgs e)

			Summary:
				This function opens the COM port.

			Description:
				This function opens the COM port.  This function is launched when the 
				btnConnect button is clicked.  In addition to opening the COM port, this 
				function will also change the Enable attribute of several of the form
				objects to disable the user from opening a new COM port.

			Precondition:
				None

			Parameters:
				object sender     - Sender of the event (this form)
				EventArgs e       - The event arguments

			Return Values:
				None

			Remarks:
				None
		***************************************************************************/
		private: System::Void btnConnect_Click(System::Object^  sender, System::EventArgs^  e) 
		{
			//This section of code will try to open the COM port.
			//  Please note that it is important to use a try/catch
			//  statement when opening the COM port.  If a USB virtual
			//  COM port is removed and the PC software tries to open
			//  the COM port before it detects its removal then
			//  an exeception is thrown.  If the execption is not in a
			//  try/catch statement this could result in the application
			//  crashing.
			try
			{
				//Get the port name from the application list box.
				//  the PortName attribute is a string name of the COM
				//  port (e.g. - "COM1").
				serialPort1->PortName = lstCOMPorts->Items[lstCOMPorts->SelectedIndex]->ToString();

				//Open the COM port.
				serialPort1->Open();

				//Change the state of the application objects
				btnConnect->Enabled = false;
				lstCOMPorts->Enabled = false;
				btnClose->Enabled = true;

				//Clear the textbox and print that we are connected.
				txtDataReceived->Clear();
				txtDataReceived->AppendText("Connected.\r\n");
			}
			catch(...)
			{
				//If there was an exception, then close the handle to 
				//  the device and assume that the device was removed
				btnClose_Click(this, gcnew EventArgs());
			}
		}

		/****************************************************************************
			Function:
				private void btnClose_Click(object sender, EventArgs e)

			Summary:
				This function closes the COM port.

			Description:
				This function closes the COM port.  This function is launched when the 
				btnClose button is clicked.  This function can also be called directly
				from other functions.  In addition to closing the COM port, this 
				function will also change the Enable attribute of several of the form
				objects to enable the user to open a new COM port.

			Precondition:
				None

			Parameters:
				object sender     - Sender of the event (this form)
				EventArgs e       - The event arguments

			Return Values:
				None

			Remarks:
				None
		***************************************************************************/
		private: System::Void btnClose_Click(System::Object^  sender, System::EventArgs^  e) 
		{
			//Reset the state of the application objects
			btnClose->Enabled = false;
			btnConnect->Enabled = true;
			lstCOMPorts->Enabled = true;

			//This section of code will try to close the COM port.
			//  Please note that it is important to use a try/catch
			//  statement when closing the COM port.  If a USB virtual
			//  COM port is removed and the PC software tries to close
			//  the COM port before it detects its removal then
			//  an exeception is thrown.  If the execption is not in a
			//  try/catch statement this could result in the application
			//  crashing.
			try
			{
				//Dispose the In and Out buffers;
				serialPort1->DiscardInBuffer();
				serialPort1->DiscardOutBuffer();

				//Close the COM port
				serialPort1->Close();
			}
			//If there was an exeception then there isn't much we can
			//  do.  The port is no longer available.
			catch(...){}
		}

		/****************************************************************************
			Function:
				private void serialPort1_DataReceived(  object sender, 
														SerialDataReceivedEventArgs e)

			Summary:
				This function prints any data received on the COM port.

			Description:
				This function is called when the data is received on the COM port.  This
				function attempts to write that data to the txtDataReceived textbox.  If
				an exception occurs the btnClose_Click() function is called in order to
				close the COM port that caused the exception.

			Precondition:
				None

			Parameters:
				object sender     - Sender of the event (this form)
				SerialDataReceivedEventArgs e       - The event arguments

			Return Values:
				None

			Remarks:
				None
		***************************************************************************/
		private: System::Void serialPort1_DataReceived(System::Object^  sender, System::IO::Ports::SerialDataReceivedEventArgs^  e) 
		{
			//The ReadExisting() function will read all of the data that
			//  is currently available in the COM port buffer.  In this 
			//  example we are sending all of the available COM port data
			//  to the SetText() function.
			//
			//  NOTE: the <SerialPort>_DataReceived() function is launched
			//  in a seperate thread from the rest of the application.  A
			//  delegate function is required in order to properly access
			//  any managed objects inside of the other thread.  Since we
			//  will be writing to a textBox (a managed object) the delegate
			//  function is required.  Please see the SetText() function for 
			//  more information about delegate functions and how to use them.
			try
			{
				SetText(serialPort1->ReadExisting());
			}
			catch(...)
			{
				//If there was an exception, then close the handle to 
				//  the device and assume that the device was removed
				btnClose_Click(this, gcnew EventArgs());
			}
		}

		/****************************************************************************
			Function:
				private void SetText(string text)

			Summary:
				This function prints the input text to the txtDataReceived textbox.

			Description:
				This function prints the input text to the txtDataReceived textbox.  If
				the calling thread is the same as the thread that owns the textbox, then
				the AppendText() method is called directly.  If a thread other than the
				main thread calls this function, then an instance of the delegate function
				is created so that the function runs again in the main thread.

			Precondition:
				None

			Parameters:
				string text     - Text that needs to be printed to the textbox

			Return Values:
				None

			Remarks:
				None
		***************************************************************************/
		private: void SetText(String^ text)
		{
			//InvokeRequired required compares the thread ID of the
			//  calling thread to the thread ID of the creating thread.
			//  If these threads are different, it returns true.  We can
			//  use this attribute to determine if we can append text
			//  directly to the textbox or if we must launch an a delegate
			//  function instance to write to the textbox.
			if (this->txtDataReceived->InvokeRequired)
			{
				//InvokeRequired returned TRUE meaning that this function
				//  was called from a thread different than the current
				//  thread.  We must launch a deleage function.

				//Create an instance of the SetTextCallback delegate and
				//  assign the delegate function to be this function.  This
				//  effectively causes this same SetText() function to be
				//  called within the main thread instead of the second
				//  thread.
				SetTextCallback^ d = gcnew SetTextCallback(this,&VCCDC::Form1::SetText);

				//Invoke the new delegate sending the same text to the
				//  delegate that was passed into this function from the
				//  other thread.
				this->Invoke(d,gcnew String(text));
			}
			else
			{
				//If this function was called from the same thread that 
				//  holds the required objects then just add the text.
				txtDataReceived->AppendText(text);
			}
		}

		/****************************************************************************
			Function:
				private void btnSendData_Click(object sender, EventArgs e)

			Summary:
				This function will attempt to send the contents of txtData over the COM port

			Description:
				This function is called when the btnSendData button is clicked.  It will 
				attempt to send the contents of txtData over the COM port.  If the attempt
				is unsuccessful this function will call the btnClose_Click() in order to
				close the COM port that just failed.

			Precondition:
				None

			Parameters:
				object sender     - Sender of the event (this form)
				EventArgs e       - The event arguments

			Return Values:
				None

			Remarks:
				None
		***************************************************************************/
		private: System::Void btnSendData_Click(System::Object^  sender, System::EventArgs^  e)
		{
			//This section of code will try to write to the COM port.
			//  Please note that it is important to use a try/catch
			//  statement when writing to the COM port.  If a USB virtual
			//  COM port is removed and the PC software tries to write
			//  to the COM port before it detects its removal then
			//  an exeception is thrown.  If the execption is not in a
			//  try/catch statement this could result in the application
			//  crashing.

			try
			{
				//Write the data in the text box to the open serial port
				serialPort1->Write(txtSendData->Text);
			}
			catch(...)
			{
				//If there was an exception, then close the handle to 
				//  the device and assume that the device was removed
				btnClose_Click(this, gcnew EventArgs());
			}
		}
	};
}

⌨️ 快捷键说明

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