问个串口数组的问题:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Threading;namespace Meter
{
public partial class FrmMeter : Form
{
//动态建立串口
SerialPort _Com_Banlance=new SerialPort();
SerialPort[] _ComMeter=new SerialPort[12];
我定义了两组串口,一个是数组,其中上边这个可以触发接收事件,而数组的不能触发,请问大侠,为什么呢?
下面是定义接收事件:
public FrmMeter()
{
InitializeComponent();
_Com_Banlance.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(OnDataReceived_Balance);
for (int i = 0; i < 12;i++ )
{
_ComMeter[i] = new SerialPort();
}
_ComMeter[0].DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(OnDataReceived_M1);
}
这个可以触发:
private void OnDataReceived_Balance(object sender, SerialDataReceivedEventArgs e)
{
}
这个不可以触发:
private void OnDataReceived_M1(object sender, SerialDataReceivedEventArgs e)
{
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Threading;namespace Meter
{
public partial class FrmMeter : Form
{
//动态建立串口
SerialPort _Com_Banlance=new SerialPort();
SerialPort[] _ComMeter=new SerialPort[12];
我定义了两组串口,一个是数组,其中上边这个可以触发接收事件,而数组的不能触发,请问大侠,为什么呢?
下面是定义接收事件:
public FrmMeter()
{
InitializeComponent();
_Com_Banlance.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(OnDataReceived_Balance);
for (int i = 0; i < 12;i++ )
{
_ComMeter[i] = new SerialPort();
}
_ComMeter[0].DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(OnDataReceived_M1);
}
这个可以触发:
private void OnDataReceived_Balance(object sender, SerialDataReceivedEventArgs e)
{
}
这个不可以触发:
private void OnDataReceived_M1(object sender, SerialDataReceivedEventArgs e)
{
}
解决方案 »
- 页面跳转 session 丢失问题
- 从数据库读取两张表,里面的记录有各自的起止时间,统计一张表中时间在另一张时间内的总和
- 如何动态生成treeview。。。最好提供源代码
- Hashtable Dictionary 多线程性能
- 将一个数组中的部分数据复制到另一个数组中 有现成的接口函数吗
- 如何编辑控制列中的一个单位格的值??
- 在WEB中如何在DataGrid绑定列中双击触发服务器事件? 如何在web的datagrid中鼠标放到一个单元格上鼠标成手状?
- c# 字符串运算的问题
- 如何动态添加自定义控件
- 我做了个用户控件,我怎么样把他封装起来,不让别人看到代码???
- winform怎么写多线程程序
- wpf的datagrid,怎么获取当前单元格的位置
{
_ComMeter[i] = new SerialPort();
_ComMeter[i].DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(OnDataReceived_M1);
}
//打开表1-12端口,返回成功打开的端口数
private int openCom_Meter()
{
int openCount = 0;
//-------------------
//sp1.PortName = "COM2";
//sp1.BaudRate=2400;
//sp1.Parity = Parity.Even;
//sp1.DataBits = 8;
//sp1.StopBits = StopBits.One;
//com_m1.Encoding = Encoding.BigEndianUnicode;
//-----------------------
//sp1.Open();
for (int i = 0; i < 12; i++)
{
try
{
_ComMeter[i] = new SerialPort();
_ComMeter[i].BaudRate = 2400;
_ComMeter[i].PortName = _PortName[i];
_ComMeter[i].Parity = Parity.Even;
_ComMeter[i].DataBits = 8 ;
_ComMeter[i].StopBits = StopBits.One;
// _ComMeter[i].ReceivedBytesThreshold = 2;
if (_ComMeter[i].IsOpen)
{
_ComMeter[i].Close();
}
_ComMeter[i].Open();//打开串口
openCount+=1;
txtLog.AppendText(DateTime.Now + "成功打开" + _PortName[i] + "端口!" + "\r\n");
}
catch
{
txtLog.AppendText(DateTime.Now +"打开"+_PortName[i]+"端口时错误!"+"\r\n");
continue;
}
}
return openCount;
}