finnal
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user