110,538
社区成员
发帖
与我相关
我的任务
分享
private void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
_ReceiveData = sp.ReadExisting();//_ReceiveData为接收的数据
}
这里的 sp 是啥?
List<SerialPort> serialports = new List<SerialPort>();
List<SerialPortParmModel> spModelList = new List<SerialPortParmModel>();
private void button1_Click(object sender, EventArgs e)
{
foreach(SerialPortParmModel spParm in spModelList)
{
SerialPort sp = new SerialPort();
sp.PortName = spParm.PortName;
sp.DataBits = Convert.ToInt16(spParm.DataBits);
sp.StopBits = (StopBits)Enum.Parse(typeof(StopBits), spParm.StopBits);
sp.Parity = (Parity)Enum.Parse(typeof(Parity), spParm.Parity);
sp.BaudRate = Convert.ToInt16(spParm.Baudrate);
serialports.Add(sp);
}
}
private void button2_Click(object sender, EventArgs e)
{
foreach(SerialPort sp in serialports)
{
sp.Open();
sp.DataReceived += Sp_DataReceived;
}
}
private void button3_Click(object sender, EventArgs e)
{
string _data;
_data ="@00RR0000000141*";
foreach (SerialPort sp in serialports)
{
sp.Write(_data);
}
}
//数据接收,问题出在此处
private void Sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
_ReceiveData = sp.ReadExisting();//_ReceiveData为接收的数据
}
button1为设置串口,button2为打开串口,button3为向串口发送数据。SerialPortParmModel为串口参数,代码如下:
/// <summary>
/// 串口设备参数
/// </summary>
public class FeedSerialPortParmModel
{
/// <summary>
/// 串口ID
/// </summary>
public string ID { get; set; }
/// <summary>
/// 串口用户名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 串口刷新周期(毫秒)
/// </summary>
public string RefreshCycle { get; set; }
/// <summary>
/// 串口名称
/// </summary>
public string PortName { get; set; }
/// <summary>
/// 串口波特率
/// </summary>
public string Baudrate { get; set; }
/// <summary>
/// 串口校验位
/// </summary>
public string Parity { get; set; }
/// <summary>
/// 串口停止位
/// </summary>
public string StopBits { get; set; }
/// <summary>
/// 串口数据位
/// </summary>
public string DataBits { get; set; }
}
在Sp_DataReceived不能接收到数据