小白一枚,做课设的时候遇到了这样的问题。
用Java写了一个程序图像识别手机上的截图得到了一个需要点击手机的时间。
还用c#以及单片机完成了一个输入指定时间后能够控制触屏器点击屏幕相应时长的程序。
现在不知道怎么把Java程序算出来的时间传递给c#写的那个程序里。
我可能讲的不是很清楚,要是能够提供帮助的话私聊我,有偿😭
可以使用socket进行通信。具体实现可以参考:
https://www.cnblogs.com/liusxg/p/3917624.html
https://blog.csdn.net/qq_33022911/article/details/82432778
简单方法可以借助CS模式实现。C#负责监听某个端口,Java负责向该端口发送信息
如下C#调用java服务代码参考示例:
调用方法:这里的M205RegistComment对象 是自定义的,就是跟返回的json序列化的对象保持一致就ok,
注意date时间需要转换为string 并且格式需要跟api一致,
http://172.16.5.32/api/website/topic/available/get 就是 java里面的API接口访问地址。
string param1 = JsonConvert.SerializeObject(new { member_no = cardNo, date = dateString });
WebApiInvokeHelper.PostResponse<M205RegistComment>("http://172.16.5.32/api/website/topic/available/get", param1);
参考实例:java与C#之间服务互相调用,原文链接:https://blog.csdn.net/xulong5000/article/details/116016364
java和C#之间互相调用可以有好几种方式:
1、服务间之间调用,开放rpc调用或者http接口调用,这些都是直接通讯的过程。
2、依靠MQ等消息中间件来进行跨进程通讯,程序也可以解耦。
Java封装为webservice服务,这样C#可以直接调用了
使用接口调用
新人入行就直接给新东西了,古老的人有古老的做法。但时代不同了,古法制造不适合工业时代
所以你可以用mqtt中间件,这种你无需管java怎么弄,你只管订阅一个mqtt消息
如果不想用中间件的也可以上dapr,你可以把java那部分当dapr的边车边缘计算看
mq或scoket 通信
我们可以通过在 Java 中调用 C# 程序的接口,来将 Java 程序中的时间传递到 C# 程序中。具体的方法如下:
1.在 Java 程序中定义需要传递的时间,并通过 JNI 调用 C# 程序的接口,将时间传递过去。
2.在 C# 程序中定义一个接收传递时间的接口,并在该接口中接收传递过来的时间。
3.在 C# 程序中根据接收到的时间,控制触屏器点击屏幕相应时长。
下面是一个简单的示例代码,供参考:
Java 代码:
public class JavaProgram {
// 定义要传递的时间
private static long time = 123456;
// 定义调用 C# 程序的接口
public native void callCSharp(long time);
// 加载需要调用的 C# 程序的库文件
static {
System.loadLibrary("CSharpProgram");
}
public static void main(String[] args) {
// 调用 C# 程序的接口,将时间传递过去
new JavaProgram().callCSharp(time);
}
}
C# 代码:
class CSharpProgram {
// 定义接收传递时间的接口
[DllImport("CSharpProgram")]
public static extern void receiveTime(long time);
static void Main(string[] args) {
// 接收传递过来的时间
long time = receiveTime();
// 根据接收到的时间,
c#可以直接调用jave得封装函数