
在c#中,怎样动态生成SerialPort类的实例及操作
privateSerialPortserialPort=newSerialPort();serialPort.PortName=com1;serialPort.BaudR...
private SerialPort serialPort = new SerialPort();
serialPort.PortName = com1;
serialPort.BaudRate = 9600;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Parity = Parity.None;
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
//端口接受事件
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{............................}
//上述操作在端口数量已知并且固定的情况下是正常的
问题如下:
int comCount=5;/////5是动态生成的
for(int i=0;i<comCount;i++)
{
//1.生成SerialPort 变量后,变量循环结束后自动消失
//2.怎样动态生成private void serialPort_DataReceived(object sender, //System.IO.Ports.SerialDataReceivedEventArgs e)
} 展开
serialPort.PortName = com1;
serialPort.BaudRate = 9600;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Parity = Parity.None;
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
//端口接受事件
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{............................}
//上述操作在端口数量已知并且固定的情况下是正常的
问题如下:
int comCount=5;/////5是动态生成的
for(int i=0;i<comCount;i++)
{
//1.生成SerialPort 变量后,变量循环结束后自动消失
//2.怎样动态生成private void serialPort_DataReceived(object sender, //System.IO.Ports.SerialDataReceivedEventArgs e)
} 展开
展开全部
我也写过SerialPort接收com端口数据的程序。winform.我接收数据是通过通讯协议。不知是否对你有用。
try
{
//打开串口写数据
sp = new SerialPort();
sp.PortName = com1
sp.BaudRate = 2400;
sp.Open();
sp.ReadTimeout = 1000;
sp.DiscardInBuffer();//清空输入缓存
sp.Write("**C");//此为通讯协议
//读数据
System.Threading.Thread.Sleep(1000);
beans = new ArrayList();
while (true)
{
byte getByte = Convert.ToByte(sp.ReadByte());
beans.Add(getByte);
}
}
catch (TimeoutException)//结收完毕
{
if (beans.Count < 4)//只接到**C的返回
{
MessageBox.show("没有数据!");
}
else//接收完毕
{
...........//处理接收到的字节数据
}
}
catch(Exception ex)
{
MessageBox.show(ex.toString());
}
finally
{
closePort(sp);
}
try
{
//打开串口写数据
sp = new SerialPort();
sp.PortName = com1
sp.BaudRate = 2400;
sp.Open();
sp.ReadTimeout = 1000;
sp.DiscardInBuffer();//清空输入缓存
sp.Write("**C");//此为通讯协议
//读数据
System.Threading.Thread.Sleep(1000);
beans = new ArrayList();
while (true)
{
byte getByte = Convert.ToByte(sp.ReadByte());
beans.Add(getByte);
}
}
catch (TimeoutException)//结收完毕
{
if (beans.Count < 4)//只接到**C的返回
{
MessageBox.show("没有数据!");
}
else//接收完毕
{
...........//处理接收到的字节数据
}
}
catch(Exception ex)
{
MessageBox.show(ex.toString());
}
finally
{
closePort(sp);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询