This commit is contained in:
2025-10-13 16:34:23 +08:00
parent 62e68ebcbb
commit 27c1691ff9
19 changed files with 184 additions and 101 deletions

View File

@@ -30,7 +30,6 @@ namespace DogAndArmControl
private CancellationTokenSource videoCancellationTokenSource;
private CancellationTokenSource cancellationTokenSource;
private TcpClient controlClient; // 新增用于控制的TCP客户端
private NetworkStream controlStream; // 新增用于控制的NetworkStream
private string currentControlMode = "DOG"; // 新增当前控制模式默认为DOG
@@ -52,7 +51,7 @@ namespace DogAndArmControl
private void Init()
{
IpEdit.Text = "192.168.0.123";
IpEdit.Text = "192.168.123.18";
PortEdit.Text = "8088";
ArmIp.Text = "192.168.123.18"; // 机械臂IP现在也用于TCP控制
ArmPort.Text = "8000"; // 机械臂端口现在也用于TCP控制
@@ -88,8 +87,8 @@ namespace DogAndArmControl
mergedVideoStream = mergedVideoClient.GetStream();
// 新增建立控制TCP连接
controlClient = new TcpClient();
await controlClient.ConnectAsync(ArmIp.Text, Convert.ToInt32(ArmPort.Text)); // 使用机械臂的IP和端口进行控制连接
//controlClient = new TcpClient();
//await controlClient.ConnectAsync(ArmIp.Text, Convert.ToInt32(ArmPort.Text)); // 使用机械臂的IP和端口进行控制连接
controlStream = mergedVideoClient.GetStream();
// 自动向服务端发送"MERGED"表示已连接
@@ -100,11 +99,11 @@ namespace DogAndArmControl
videoCancellationTokenSource = new CancellationTokenSource();
// 启动接收合并视频流的任务
videoReceiveTask = Task.Run(() => vic.ReceiveVideoFramesAsync(
videoReceiveTask = Task.Run(() => vic.ReceiveMergedVideoFramesAsync(
videoCancellationTokenSource.Token,
mergedVideoStream,
ArmVideo,
false));
DogVideo));
DogStatus.Text = "已连接";
DogStatus.ForeColor = Color.Green;
@@ -131,7 +130,6 @@ namespace DogAndArmControl
videoCancellationTokenSource?.Cancel();
mergedVideoClient?.Close();
controlClient?.Close(); // 关闭控制连接
Init();
}
@@ -196,7 +194,7 @@ namespace DogAndArmControl
string key = currentKey.ToString().ToLower();
if (e.KeyCode == Keys.Menu) return;
if (controlStream != null && controlClient.Connected)
if (controlStream != null)
{
if (currentControlMode == "ARM") // 根据当前模式发送指令
{
@@ -222,7 +220,7 @@ namespace DogAndArmControl
private async void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (controlStream != null && controlClient.Connected)
if (controlStream != null)
{
if (currentControlMode == "DOG")
{
@@ -287,7 +285,7 @@ namespace DogAndArmControl
// 发送控制指令到机械臂 (现在通过TCP发送JSON)
private async Task HandleArmKey(string type, string key)
{
if (controlStream != null && controlClient.Connected)
if (controlStream != null )
{
//var msg = JsonConvert.SerializeObject(new { key_events = new[] { new { key, type } } });
var buffer = Encoding.UTF8.GetBytes(key.ToUpper()); // 将控制命令转为字节数组
@@ -313,7 +311,7 @@ namespace DogAndArmControl
// 新增:标签页切换事件处理
private async void TabPane1_SelectedPageChanged(object sender, DevExpress.XtraBars.Navigation.SelectedPageChangedEventArgs e)
{
if (controlStream != null && controlClient.Connected)
if (controlStream != null)
{
if (e.Page == tabNavigationPage1) // 切换到机械狗标签页
{
@@ -332,7 +330,7 @@ namespace DogAndArmControl
// 新增:发送切换模式命令
private async Task SendChangeModeCommand(string mode)
{
if (controlStream != null && controlClient.Connected)
if (controlStream != null)
{
byte[] changeCommand = Encoding.ASCII.GetBytes($"CHANGE:{mode}"); // 发送 "CHANGE:DOG" 或 "CHANGE:ARM"
await controlStream.WriteAsync(changeCommand, 0, changeCommand.Length);

View File

@@ -131,8 +131,8 @@ namespace DogAndArmControl
}
// 处理合并后的图像数据并分割显示
//await Task.Run(() => ProcessMergedImageData(dogVideoBox, armVideoBox));
await Task.Run(() => ProcessImageData(armVideoBox));
await Task.Run(() => ProcessMergedImageData(dogVideoBox, armVideoBox));
//await Task.Run(() => ProcessImageData(armVideoBox));
}
catch (Exception ex)
{

View File

@@ -1 +1 @@
2e76b3282172c5c2af5dc8307255f5a3f005cec846ce8524277394d042763c58
22ff5efe8e61bf2f6288d453cced1a162cd6d5c9ac58139a21e85dc45c6d4a20

View File

@@ -83,3 +83,28 @@ C:\Users\Quella\Desktop\DogAndArmControl\DogAndArmControl\obj\Debug\DogAndArmCon
C:\Users\Quella\Desktop\DogAndArmControl\DogAndArmControl\obj\Debug\DogAndAr.8539BC83.Up2Date
C:\Users\Quella\Desktop\DogAndArmControl\DogAndArmControl\obj\Debug\DogAndArmControl.exe
C:\Users\Quella\Desktop\DogAndArmControl\DogAndArmControl\obj\Debug\DogAndArmControl.pdb
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DogAndArmControl.exe.config
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DogAndArmControl.exe
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DogAndArmControl.pdb
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\Newtonsoft.Json.dll
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Pdf.v22.2.Core.dll
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Pdf.v22.2.Drawing.dll
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Data.Desktop.v22.2.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Data.v22.2.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Utils.v22.2.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Sparkline.v22.2.Core.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.XtraBars.v22.2.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.XtraEditors.v22.2.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Printing.v22.2.Core.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\Newtonsoft.Json.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Pdf.v22.2.Core.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\bin\Debug\DevExpress.Pdf.v22.2.Drawing.xml
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.csproj.AssemblyReference.cache
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.Form1.resources
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.Properties.Resources.resources
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.csproj.GenerateResource.cache
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.exe.licenses
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.csproj.CoreCompileInputs.cache
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndAr.8539BC83.Up2Date
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.exe
C:\Users\Quella\Desktop\DogAndArmControl\ArmDogControl\DogAndArmControl\obj\Debug\DogAndArmControl.pdb