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

📄 form1.cs

📁 Wince Comport test CE串口标准组件
💻 CS
📖 第 1 页 / 共 2 页
字号:
		}

		private void button1_Click(object sender, System.EventArgs e)
		{

			COM_NO ComNo;
			COM_Baudrate Baudrate;
			COM_Parity Parity;
			COM_ByteSize ByteSize;
			COM_StopBits StopBits;

			#region comNo
			switch(this.comboBox1.SelectedIndex)
			{
				case 0:
					ComNo=COM_NO.COM1; 
					break;
				case 1:
					ComNo=COM_NO.COM2; 
					break;
				case 2:
					ComNo=COM_NO.COM3; 
					break;
				case 3:
					ComNo=COM_NO.COM4; 
					break;
				case 4:
					ComNo=COM_NO.COM5; 
					break;
				case 5:
					ComNo=COM_NO.COM6; 
					break;
				case 6:
					ComNo=COM_NO.COM7; 
					break;
				case 7:
					ComNo=COM_NO.COM8; 
					break;
				case 8:
					ComNo=COM_NO.COM9; 
					break;
				default:
					ComNo=COM_NO.COM1; 
					break;
			}
			#endregion comNo

			#region Baudrate
			switch(this.comboBox2.SelectedIndex)
			{
				case 0:
					Baudrate=COM_Baudrate.COM_Baudrate_110;
					break;
				case 1:
					Baudrate=COM_Baudrate.COM_Baudrate_300;
					break;
				case 2:
					Baudrate=COM_Baudrate.COM_Baudrate_600;
					break;
				case 3:
					Baudrate=COM_Baudrate.COM_Baudrate_1200;
					break;
				case 4:
					Baudrate=COM_Baudrate.COM_Baudrate_2400;
					break;
				case 5:
					Baudrate=COM_Baudrate.COM_Baudrate_4800;
					break;
				case 6:
					Baudrate=COM_Baudrate.COM_Baudrate_9600;
					break;
				case 7:
					Baudrate=COM_Baudrate.COM_Baudrate_19200;
					break;
				case 8:
					Baudrate=COM_Baudrate.COM_Baudrate_38400;
					break;
				case 9:
					Baudrate=COM_Baudrate.COM_Baudrate_57600;
					break;
				case 10:
					Baudrate=COM_Baudrate.COM_Baudrate_115200;
					break;
				default:
					Baudrate=COM_Baudrate.COM_Baudrate_9600;
					break;
			}
			#endregion Baudrate

			#region Parity
			switch(this.comboBox3.SelectedIndex)
			{
				case 0:
					Parity=COM_Parity.COM_Parity_None; 
					break;
				case 1:
					Parity=COM_Parity.COM_Parity_Odd;
					break;
				case 2:
					Parity=COM_Parity.COM_Parity_Even;
					break;
				case 3:
					Parity=COM_Parity.COM_Parity_Mark;
					break;
				case 4:
					Parity=COM_Parity.COM_Parity_Space;
					break;
				default:
					Parity=COM_Parity.COM_Parity_None;
					break;
			}
			#endregion Parity

			#region ByteSize
			switch(this.comboBox4.SelectedIndex)
			{
				case 0:
					ByteSize=COM_ByteSize.COM_ByteSize_5;
					break;
				case 1:
					ByteSize=COM_ByteSize.COM_ByteSize_6;
					break;
				case 2:
					ByteSize=COM_ByteSize.COM_ByteSize_7;
					break;
				case 3:
					ByteSize=COM_ByteSize.COM_ByteSize_8;
					break;
				default:
					ByteSize=COM_ByteSize.COM_ByteSize_8;
					break;
			}
			#endregion ByteSize

			#region StopBits
			switch(this.comboBox5.SelectedIndex)
			{
				case 0:
					StopBits=COM_StopBits.COM_StopBits_1;
					break;
				case 1:
					StopBits=COM_StopBits.COM_StopBits_1_5;
					break;
				case 2:
					StopBits=COM_StopBits.COM_StopBits_2;
					break;
				default:
					StopBits=COM_StopBits.COM_StopBits_1;
					break;
			}
			#endregion StopBits



			if (ComPointer!=IntPtr.Zero)
			{
				//串口已经打开,先关闭
				COMPort_DeInit(ComPointer);
				ComPointer=IntPtr.Zero;//我们用这个作标识 
			}
			//按照指定参数开启新串口
			ComPointer=COMPort_Init(ComNo,Baudrate,Parity,ByteSize,StopBits,COM_FRAMECOUNT,COM_SINGLEFRAME,THREAD_PRIORITY.PRIORITY_BELOW_NORMAL,THREAD_PRIORITY.PRIORITY_ABOVE_NORMAL,WM_COMUSERDEFINE,this.MMW.Hwnd);  
			if (ComPointer!=IntPtr.Zero)
			{ 
				MessageBox.Show("串口打开成功,串口句柄号为:"+ComPointer.ToString());
			}
			else
			{
				MessageBox.Show("串口打开失败,可能串口已经打开或者CE平台没有安装指定串口");
			}

		}

		private void button2_Click(object sender, System.EventArgs e)
		{
			if (ComPointer!=IntPtr.Zero)
			{ 
				COMPort_DeInit(ComPointer);
				ComPointer=IntPtr.Zero;//我们用这个作标识 
			}
			else
			{
				MessageBox.Show("串口句柄为空!");
			}

		}

		private void button3_Click(object sender, System.EventArgs e)
		{
			byte[] a=new byte[30000];
			for (int i=0;i<a.Length;i++)
			{
				a[i]=(byte)i;
			}
			uint n=uint.Parse(this.textBox1.Text.Trim());    
			COMPort_SendByte(ComPointer,a,n);
		}

		private void button4_Click(object sender, System.EventArgs e)
		{
			this.listBox1.Items.Clear();   
			this.AllCount=0; 
			this.label2.Text=this.AllCount.ToString();    
		}

		private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
		{
			if (this.MMW!=null)
			{
				this.MMW.Dispose();
				this.MMW=null; 
			}
		
		}


		///////////消息句柄类/////////////////////////////
		internal class myMessageWindow:MessageWindow 
		{
			Form1 parentForm;
			//构造函数将宿主窗口和自己联系起来
			public myMessageWindow(Form1 parentForm)
			{
				this.parentForm=parentForm; 
			}

			//下面重载缺省得WndProc函数处理消息

			protected override void WndProc(ref Message m) 
			{
				switch(m.Msg)
				{
					case (int)WM_COMUSERDEFINE:
						//MessageBox.Show(m.WParam.ToString());
						IntPtr ComHandle=m.WParam;//这里可以区分多个串口实例
						int ComNo=Marshal.ReadInt32(m.LParam)+1; 
						string s="COMHandle="+ComHandle.ToString()+",串口号=COM"+ComNo.ToString()+":Recv  ";
						//马上读取数据
						uint ReadBytes=COM_SINGLEFRAME*COM_FRAMECOUNT;
						COMPort_RecvByte(ComHandle,this.parentForm.CurrentByte,ref ReadBytes);
						//MessageBox.Show(ReadBytes);//得到本次确实得到的个数
						this.parentForm.AllCount+=ReadBytes;  
						uint temp=this.parentForm.AllCount;
						this.parentForm.label2.Text=temp.ToString();      
						s+=" -"+ReadBytes.ToString()+"- ";
						for (uint i=0;i<ReadBytes;i++)
						{
							//s+="["+Convert.ToChar(this.parentForm.CurrentByte[i])+"]";  
							s+="["+this.parentForm.CurrentByte[i].ToString("X")+"]";  
						}
						this.parentForm.listBox1.Items.Add(s);    
						break;
					default:
						break;
				}

				//下面必须调用基类WndProc函数处理
				base.WndProc (ref m);
			}

		}






	}
}

⌨️ 快捷键说明

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