在日常的开发中,不同的传感器支持的开发语言常常是不同的。例如Kinect一般是用C++开发的,Leapmotion用JAVA开发比较多。

去年暑假(17年暑假)做的一个项目是:用Leapmotion捕捉人手的五个手指关节信息,然后经过变换,传输给一个同样具有五个手指的机械手。

一开始拿到的开发框架,Leapmotion是用JAVA开发的;机械手AR10是用C#开发。

于是分别通过编程实现,使得JAVA端能够使Leapmotion捕捉人手五个手指10个关节的信息并保存为文本文件;

C#端能够使AR10读取文本文件,转化为各个关节的位置指令,实现同样的动作指令。

然而这样只能做到离线控制,需要通过Socket通信,实现数据的实时传输,才能实现控制。

JAVA端添加的代码:

在一开始添加库:

import java.net.ServerSocket;
import java.net.Socket;

在类里面添加(其中tmp是需要不断被实时发送的数据):

tmp = angleThumb12+" "+angleThumb23+" "+angleIndex01+" "+angleIndex12+" "+angleMiddle01+" "+angleMiddle12+" "+angleRing01+" "+angleRing12+" "+anglePinky01+" "+anglePinky12+" "+"\n";System.out.println("Java Sockets Program has started.");
int i=0;
try {            DatagramSocket socket = new DatagramSocket();System.out.println("Sending the udp socket...");// Send the Message "HI"socket.send(toDatagram("",InetAddress.getByName("127.0.0.1"),3800));//while (true) {
      System.out.println(tmp);System.out.println("Sending hi " + i);Thread.currentThread();Thread.sleep(10);socket.send(toDatagram(String.valueOf(tmp),InetAddress.getByName("127.0.0.1"),3800));i++;} catch (Exception e) {e.printStackTrace();}

C#端添加的代码

添加包含头文件:

using System.Net;
using System.Net.Sockets;

在C#制作的GUI界面中需要触发接收数据的按钮下,例如

private void button1_Click(object sender, EventArgs e)
{

}

里面添加:

      private void button1_Click(object sender, EventArgs e){string returnData;byte[] receiveBytes;//ConsoleKeyInfo cki = new ConsoleKeyInfo();using (UdpClient udpClient =new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3800))){IPEndPoint remoteIpEndPoint =new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3800);while (true){receiveBytes = udpClient.Receive(ref remoteIpEndPoint);returnData = Encoding.ASCII.GetString(receiveBytes);textBox1.AppendText(returnData + Environment.NewLine);//Console.WriteLine(returnData);float angle1 = 0;float angle2 = 0;float angle3 = 0;float a0 = 0;float a1 = 0;float a2 = 0;float a3 = 0;float a4 = 0;float a5 = 0;float a6 = 0;float a7 = 0;float a8 = 0;float a9 = 0;int k = 0;string[] arr = new string[10];arr = returnData.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);foreach (string i in arr){mainTextBox.AppendText("target: " + k + "s" + i + "s" + Environment.NewLine);        if (k == 1){angle1 = Convert.ToSingle(i);angle2 = angle1 * (-20) + 2219;if (angle2 < 1621){angle2 = 1621;}if (angle2 > 2000){angle2 = 2000;}angle3 = angle2 * 4;a1 = angle2;TrySetTarget((byte)11, (ushort)angle3);}//.........//if (k == 9){angle1 = Convert.ToSingle(i);angle2 = angle1 * (-16) + 2252;if (angle2 < 992){angle2 = 992;}if (angle2 > 2000){angle2 = 2000;}angle3 = angle2 * 4;a9 = angle2;TrySetTarget((byte)12, (ushort)angle3);}k = k + 1;}
                }}}

转载于:https://www.cnblogs.com/youngsea/p/8764123.html

[其他]JAVA与C#的Socket通信相关推荐

  1. Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    JAVA 中原生的 socket 通信机制 转载自:https://github.com/jasonGeng88/blog 当前环境 jdk == 1.8 知识点 socket 的连接处理 IO 输入 ...

  2. connect: 网络不可达_Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    本文转自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...

  3. Java 网络通信必备之socket通信基本原理介绍

    Java socket通信基本原理介绍 Java socket通信在不断的进行相关代码的开发,下面我们就看看如何才能更好的使用有关技术为我们的编程工作带来一定的帮助. 作者:佚名来源:互联网|2010 ...

  4. Android java和C的Socket通信demo(可用)

    原址 关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过<android使用socket使底层和framework通信>这篇文章,美中不足的是作 ...

  5. java与C语言socket通信(C客户端java服务端)

    服务器端代码 MyServer.java import java.io.*; import java.net.*; import java.util.*;public class MyServer { ...

  6. java整合Apache-mima进行socket通信

    项目中遇到一个需求,需要安卓多客户端连接java后台进行相互通信,保持长连接,所以想到用socket来做,在网上看了一堆资料后,发现了mina框架,下面把自己整合的代码记录一下. jar包自己在网上找 ...

  7. java群聊_Java Socket通信实现私聊、群聊

    前言 闲言少叙,上代码! 代码编写 server服务端 /*** 服务端*/ public classServer {private static ServerSocket server = null ...

  8. 【JAVA实战】用socket通信编程制作多人聊天室

     个人简介

  9. java iso8583 socket 服务_JAVA客户端amp;服务器的socket通信

    JAVA客户端&服务器的socket通信 socket是两台主机之间的一个连接通道,它可以完成七个基本操作: 发送远程机器 发送数据 接收数据 关闭连接 绑定端口 监听入站数据 再绑定端口上接 ...

最新文章

  1. python查看目录下的文件_Python——查看目录下所有的目录和文件
  2. JavaScript作用域闭包简述
  3. 那份让我想死的化工原理补考试卷
  4. boost::geometry::default_distance_result用法的测试程序
  5. 验证码---H_img.php
  6. Tableau研学小课堂(part3)--Tableau数据可视化
  7. Best Cow Fences(信息学奥赛一本通-T1434)
  8. python处理一个文件夹下的所有文件并保存在新的文件夹
  9. linux nginx php 启动命令,linux nginx启动,重启,关闭命令
  10. docker︱docker run的解读与一键部署
  11. HttpClient3.x之Get请求和Post请求示例
  12. Python中的*args和**kwargs的理解与用法
  13. 单片机用C语言锯齿波,试用c语言编写一个能输出锯齿波信号的单片机c51程序
  14. 软件设计文档编写概述
  15. C++学习日记#3——追赶法求解系数矩阵为对角占优的三对角线方程组
  16. 关于地理数据坐标转换
  17. 2021年12月四六级考试成绩批量查询Java
  18. 架构漫谈专栏系列文章
  19. linux ftp 取文件,linux下拉取文件的方法
  20. 在RecyclerView里使用图片轮播

热门文章

  1. 加强原始创新和基础研究的前提:三项破解之策
  2. Science:细胞如何测量自身的大小?答案是:DNA含量
  3. 兰德报告:思维机器时代的威慑
  4. 脑神经计算建模揭示前额叶皮层不同类型中间神经元在信息维持中的作用
  5. 英国前首相:为什么欧洲没有诞生互联网巨头?
  6. 结合脑成像技术与人工智能,破除自杀的“诅咒”
  7. 女程序员也有 35 岁危机焦虑吗?
  8. “面向对象就是一个错误!”
  9. 如何把gcc编译工具使用到linux全局
  10. HashFlare矿池退出BTC挖矿,Coingeek矿池继续增加BCH算力