132 lines
4.6 KiB
C#
132 lines
4.6 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.IO.Ports;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows.Forms;
|
||
|
||
namespace 测试串口收发
|
||
{
|
||
public partial class Form1 : Form
|
||
{
|
||
private SerialPort serialPort;
|
||
private SerialPort serialPort2;
|
||
public Form1()
|
||
{
|
||
InitializeComponent();
|
||
// 初始化SerialPort对象
|
||
serialPort = new SerialPort();
|
||
serialPort2=new SerialPort();
|
||
// 配置串口参数
|
||
serialPort.PortName = "COM5"; // 替换为你的串口端口号
|
||
serialPort.BaudRate = 9600;
|
||
serialPort.Parity = Parity.None;
|
||
serialPort.DataBits = 8;
|
||
serialPort.StopBits = StopBits.One;
|
||
// 订阅DataReceived事件(可选,用于接收数据)
|
||
serialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived);
|
||
|
||
serialPort2.PortName = "COM6"; // 替换为你的串口端口号
|
||
serialPort2.BaudRate = 9600;
|
||
serialPort2.Parity = Parity.None;
|
||
serialPort2.DataBits = 8;
|
||
serialPort2.StopBits = StopBits.One;
|
||
// 订阅DataReceived事件(可选,用于接收数据)
|
||
serialPort2.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived2);
|
||
|
||
|
||
|
||
// 获取所有显示屏的信息
|
||
var screens = Screen.AllScreens;
|
||
|
||
// 检查是否有至少两块显示屏
|
||
if (screens.Length >= 2)
|
||
{
|
||
// 获取第二块显示屏的信息
|
||
var secondScreen = screens[1];
|
||
|
||
// 设置窗口在第二块显示屏上的位置和大小
|
||
this.StartPosition = FormStartPosition.Manual;
|
||
this.Location = new System.Drawing.Point(secondScreen.Bounds.X, secondScreen.Bounds.Y);
|
||
|
||
// 可选:调整窗口大小以匹配第二块显示屏(如果需要)
|
||
// this.Size = secondScreen.Bounds.Size;
|
||
}
|
||
else
|
||
{
|
||
// 如果没有第二块显示屏,则默认在主屏幕上显示
|
||
this.StartPosition = FormStartPosition.CenterScreen;
|
||
}
|
||
}
|
||
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
||
{
|
||
string data = serialPort.ReadExisting();
|
||
this.Invoke(new Action(() =>
|
||
{
|
||
textBox1.Text = data;
|
||
}));
|
||
// 注意:这里使用MessageBox只是为了演示,实际使用时可能需要更新UI控件,注意线程安全
|
||
}
|
||
private void SerialPort_DataReceived2(object sender, SerialDataReceivedEventArgs e)
|
||
{
|
||
string data = serialPort2.ReadExisting();
|
||
this.Invoke(new Action(() =>
|
||
{
|
||
textBox2.Text = data;
|
||
}));
|
||
// 注意:这里使用MessageBox只是为了演示,实际使用时可能需要更新UI控件,注意线程安全
|
||
}
|
||
|
||
private void button1_Click(object sender, EventArgs e)
|
||
{
|
||
if (serialPort.IsOpen)
|
||
{
|
||
// 发送字符"X"
|
||
serialPort.WriteLine("X");
|
||
serialPort2.WriteLine("X");
|
||
// 如果需要发送单个字符,可以使用 serialPort.Write("X"[0]); 或 serialPort.Write('X');
|
||
MessageBox.Show("已发送字符'X'!");
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show("串口未打开!");
|
||
}
|
||
}
|
||
|
||
private void button3_Click(object sender, EventArgs e)
|
||
{
|
||
// 打开串口
|
||
try
|
||
{
|
||
serialPort.Open();
|
||
serialPort2.Open();
|
||
MessageBox.Show("串口已打开!");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show("打开串口失败:" + ex.Message);
|
||
}
|
||
}
|
||
|
||
private void button2_Click(object sender, EventArgs e)
|
||
{
|
||
if (serialPort.IsOpen)
|
||
{
|
||
// 发送字符"X"
|
||
serialPort.WriteLine("Z");
|
||
serialPort2.WriteLine("Z");
|
||
// 如果需要发送单个字符,可以使用 serialPort.Write("X"[0]); 或 serialPort.Write('X');
|
||
MessageBox.Show("已发送字符'Z'!");
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show("串口未打开!");
|
||
}
|
||
}
|
||
}
|
||
}
|