private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text == "2" )
{
try
{
//首先判断串口是否开启
if (serialPort1.IsOpen)
{
Byte[] SendTemp = new Byte[2]; //建立临时字节数组对象
SendTemp[0] = 0x02; //想要发送的16进制数据
SendTemp[1] = 0x05; //想要发送的16进制数据
serialPort1.Write(SendTemp, 0, 2); //发送数据
}
}
catch (Exception ex)
{
//捕获到异常,创建一个新的对象,之前的不可以再用
serialPort1 = new System.IO.Ports.SerialPort();
//刷新COM口选项
comboBox1.Items.Clear();
comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
//响铃并显示异常给用户
System.Media.SystemSounds.Beep.Play();
button1.Text = "打开串口";
MessageBox.Show(ex.Message);
comboBox1.Enabled = true;
}
try
{
//首先判断串口是否开启
if (serialPort2.IsOpen)
{
Byte[] SendTemp = new Byte[2]; //建立临时字节数组对象
SendTemp[0] = 0x02; //想要发送的16进制数据
SendTemp[1] = 0x05; //想要发送的16进制数据
serialPort1.Write(SendTemp, 0, 2); //发送数据
}
}
catch (Exception ex)
{
//捕获到异常,创建一个新的对象,之前的不可以再用
serialPort2 = new System.IO.Ports.SerialPort();
//刷新COM口选项
comboBox1.Items.Clear();
comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
//响铃并显示异常给用户
System.Media.SystemSounds.Beep.Play();
button1.Text = "打开串口";
MessageBox.Show(ex.Message);
comboBox1.Enabled = true;
}
}
}
代码应该是一模一样的。如果一个能收到一个收不到
你把收不到的那段代码整个注释掉
把能收到的那段代码端口号改一下
如果这样都收不到,就跟你的代码没有一毛钱关系
不是对方软件没开,就是线接反了
//首先判断串口是否开启
if (serialPort2.IsOpen)
{
Byte[] SendTemp = new Byte[2]; //建立临时字节数组对象
SendTemp[0] = 0x02; //想要发送的16进制数据
SendTemp[1] = 0x05; //想要发送的16进制数据
serialPort1.Write(SendTemp, 0, 2); //发送数据
}
你这段代码应该是serialPort2.Write()吧
跟你的代码无关,从你的配图上来看。你用了虚拟串口工具模拟 或者你用串口线硬跳接
使用虚拟串口工具的情况:
虚拟串口工具是用一对本地串口模拟----------------真实情况是,硬件和你都是一个串口,因为你是模拟,所以虚拟工具只好模拟成一对
打开你的虚拟串口工具,你会看到他的配置是 com1-com2一对,com3-com4一对
解决方法,安装vspd pro高级版本,他可以拆分com2成com5,com6,这样拆分的就是同步分发
或者你的代码在打开com1的同时打开com4,然后分别对com1和com4发
如果是串口线硬跳,那请检查你串口线的连接情况
挂载一个mqtt服务器,然后通过订阅,就可以发给很多很多人了。