110,536
社区成员
发帖
与我相关
我的任务
分享
public void _serialPort_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e)
{
//禁止接收事件时直接退出
if (ReceiveEventFlag)
{
return;
}
try
{
string readstr = null;
int n = _serialPort.BytesToRead;
byte[] buff = new byte[n];
_serialPort.Read(buff, 0, n);
readstr = ConvertByteArrayToString(buff);
buffer_JZ.AddRange(strToToHexByte(readstr));
while ((buffer_JZ.Count >= 10) && (buffer_JZ[9] == 255))
{
if (buffer_JZ[8] != CRC_CHECK(strToToHexByte(readstr), 8))
{
buffer_JZ.RemoveAt(0);
continue;
}
buffer_JZ.CopyTo(0, binary_data_1, 0, 10);
DataReceived(sender, e, binary_data_1);
buffer_JZ.RemoveRange(0, 10);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
void _serialPort_DataReceived_LG(object sender, SerialDataReceivedEventArgs e)
{
//禁止接收事件时直接退出
if (ReceiveEventFlag)
{
return;
}
try
{
string readstr = null;
int n = _serialPort.BytesToRead;
byte[] buff = new byte[n];
_serialPort.Read(buff, 0, n);
readstr = ConvertByteArrayToString(buff);
buffer_LG.AddRange(strToToHexByte(readstr));
while ((buffer_LG.Count >= 8) && (buffer_LG[7] == 255))
{
if (buffer_LG[6] != CRC_CHECK(strToToHexByte(readstr), 6))
{
buffer_LG.RemoveAt(0);
continue;
}
buffer_LG.CopyTo(0, binary_data_1, 0, 8);
DataReceived(sender, e, binary_data_2);
buffer_LG.RemoveRange(0, 8);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
// throw ex;
}
}
JZ_RecePort1.openPort();
JZ_RecePort2.openPort();
JZ_RecePort3.openPort();
JZ_RecePort4.openPort();
LG_RecePort1.openPort();
LG_RecePort2.openPort();
// 接收响应事件
LG_RecePort1.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(LG_RecePort1_DataReceived_LG);
LG_RecePort2.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(LG_RecePort2_DataReceived_LG);
JZ_RecePort1.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(JZ_RecePort1_DataReceived_JZ);
JZ_RecePort2.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(JZ_RecePort2_DataReceived_JZ);
JZ_RecePort3.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(JZ_RecePort3_DataReceived_JZ);
JZ_RecePort4.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(JZ_RecePort4_DataReceived_JZ);
public void JZ_RecePort1_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
{
//判断数据来自哪片CPU
if ((bits[0] & 0x01) == 0)
{
db_opera.Save_CPU_data(bits, "Table_CPU1_1", Rece_DataSet);
}
else
{
db_opera.Save_CPU_data(bits, "Table_CPU1_2", Rece_DataSet);
}
}
public void JZ_RecePort3_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
{
if ((bits[0] & 0x01) == 0)
{
db_opera.Save_CPU_data(bits, "Table_CPU3_1", Rece_DataSet);
}
else
{
db_opera.Save_CPU_data(bits, "Table_CPU3_2", Rece_DataSet);
}
}
public void LG_RecePort1_DataReceived_LG(object sender, SerialDataReceivedEventArgs e, byte[] bits)
{
if ((bits[0] & 0x01) == 0)
{
db_opera.Save_LG_data(bits, "Table_LG1_1", Rece_DataSet);
}
else
{
db_opera.Save_LG_data(bits, "Table_LG1_2", Rece_DataSet);
}
}
public void LG_RecePort2_DataReceived_LG(object sender, SerialDataReceivedEventArgs e, byte[] bits)
{
if ((bits[0] & 0x01) == 0)
{
db_opera.Save_LG_data(bits, "Table_LG2_1", Rece_DataSet);
}
else
{
db_opera.Save_LG_data(bits, "Table_LG2_2", Rece_DataSet);
}
} // 串口COM1---COM6接收数据
SerialPort _serialPort = null;
//定义委托
public delegate void SerialPortDataReceiveEventArgs(object sender, SerialDataReceivedEventArgs e, byte[] bits);
//定义接收数据事件
public event SerialPortDataReceiveEventArgs DataReceived;
public void _serialPort_DataReceived_LG(object sender, SerialDataReceivedEventArgs e)
{
//禁止接收事件时直接退出
if (ReceiveEventFlag)
{
return;
}
try
{
string readstr = null;
int n = _serialPort.BytesToRead;
byte[] buff = new byte[n];
Console.WriteLine("ok_lg");
_serialPort.Read(buff, 0, n);
readstr = ConvertByteArrayToString(buff);
Console.WriteLine(readstr);
buffer_LG.AddRange(strToToHexByte(readstr));
while ((buffer_LG.Count >= 8) && (buffer_LG[7] == 255))
{
if (buffer_LG[6] != CRC_CHECK(strToToHexByte(readstr), 6))
{
buffer_LG.RemoveAt(0);
continue;
}
buffer_LG.CopyTo(0, binary_data_2, 0, 8);
DataReceived(sender, e, binary_data_2);
buffer_LG.RemoveRange(0, 8);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
#endregion
#region 接收逻辑单元串口数据事件
/// <summary>
/// 接收逻辑单元串口数据事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void _serialPort_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e)
{
//禁止接收事件时直接退出
if (ReceiveEventFlag)
{
return;
}
try
{
string readstr = null;
int n = _serialPort.BytesToRead;
byte[] buff = new byte[n];
_serialPort.Read(buff, 0, n);
Console.WriteLine("OK");
readstr = ConvertByteArrayToString(buff);
Console.WriteLine(readstr+"\t\n");
buffer_JZ.AddRange(strToToHexByte(readstr));
while ((buffer_JZ.Count >= 10) && (buffer_JZ[9] == 255))
{
if (buffer_JZ[8] != CRC_CHECK(strToToHexByte(readstr), 8))
{
buffer_JZ.RemoveAt(0);
continue;
}
buffer_JZ.CopyTo(0, binary_data_1, 0, 10);
DataReceived(sender, e, binary_data_1);
buffer_JZ.RemoveRange(0, 10);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
// throw ex;
}
}
上面两个事件是在串口类中,在主函数中实例化类的对象
public void JZ_RecePort1_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
public void JZ_RecePort2_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
public void JZ_RecePort3_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
public void JZ_RecePort4_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
public void LG_RecePort1_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
public void LG_RecePort2_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
JZ_RecePort1.DataReceived += new Port_Opera.SerialPortDataReceiveEventArg(JZ_RecePort1_DataReceived_JZ); JZ_RecePort2.DataReceived += new Port_Opera.SerialPortDataReceiveEventArg(JZ_RecePort2_DataReceived_JZ); JZ_RecePort3.DataReceived += new Port_Opera.SerialPortDataReceiveEventArg(JZ_RecePort3_DataReceived_JZ); JZ_RecePort4.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(JZ_RecePort4_DataReceived_JZ);
LG_RecePort1.DataReceived += new Port_Opera.SerialPortDataReceiveEventAr(LG_RecePort1_DataReceived_LG); LG_RecePort2.DataReceived += new Port_Opera.SerialPortDataReceiveEventArgs(LG_RecePort2_DataReceived_LG);
public void JZ_RecePort2_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
{
//判断数据来自哪片CPU
if ((bits[0] & 0x01) == 0)
{
db_opera.Save_CPU_data(bits, "Table_CPU2_1", Rece_DataSet);
}
else
{
db_opera.Save_CPU_data(bits, "Table_CPU2_2", Rece_DataSet);
}
}
public void JZ_RecePort4_DataReceived_JZ(object sender, SerialDataReceivedEventArgs e, byte[] bits)
{
//判断数据来自哪片CPU
if ((bits[0] & 0x01) == 0)
{
db_opera.Save_CPU_data(bits, "Table_CPU4_1", Rece_DataSet);
}
else
{
db_opera.Save_CPU_data(bits, "Table_CPU4_2", Rece_DataSet);
}
}
COM2和COM4的接收响应。之前不知怎么的没有贴上来