📄 form1.cs
字号:
}
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 + -