我的名字是Pascal,我今年19岁。对于我的实习,我要证明是否可以从鼠标接收IR坐标并将其以Gcode位置发送到CNC机器。
编程语言是Java。这不能再改变了。
基本思想是制作一个与鼠标和cnc机器建立通信的程序。我已经有两个独立工作的程序。它被称为SimpleWrite和MouseCoordinates(都是用Java编写的)。 SimpleWrite程序通过com端口写入某个消息。 mousecoordinates与鼠标建立连接并将IR坐标记录到控制台。
鼠标==>计算机==>数控机床。 。 IR坐标==>格式为Gcode ==>发送comport
所以主要的问题是:如何将这两个程序(包含主要方法)与一个工作程序结合起来?因此,程序开始与鼠标进行通信,并在Gcode中通过comport发送这些坐标(使用SimpleWrite程序)。
我不是要求向我展示解决方案,而是简单地提供一些搜索提示。我唯一的问题是我在java编程方面不是很好,所以如果将这两个程序设置成一个工作程序,程序结构如何?
在这个项目中保密,所以它实际上不是鼠标,但概念也是如此。 simplewrite程序是开源的。
SimpleWrite:http://www.java-samples.com/showtutorial.php?tutorialid=214
原谅我模糊的英语:)。
提前致谢。
问候 帕斯卡
@Edit:
现在组合了程序。 SimpleWrite向我提供消息“Data verzonden”(表示已发送数据),然后连接鼠标并将坐标打印到控制台。实际上,发送的数据仍然是messageString。
现在第一个问题已经解决,下一个问题对我来说仍然是一个黑点。 SimpleWrite程序最初构建为打开一个comport并在comport上发送一个String“messageString”。结合这两个程序就像独立运行它们一样。
如何将传入的x和y坐标格式化为gcode,然后发送gcode数据流,如G0 X(x坐标)Y(y坐标),而不是单个outputStream.write(messageString.getBytes()) ; ?
所以它会像: G0 X30 Y30 G0 X31 Y31 G0 X32 Y32 等等....
我不知道输入gcode之间有多少时间,如果CNC机器首先缓冲这些命令(以及他可以缓冲多少)然后执行它们,但那是第三个问题:)。
完整的图片现在是: 鼠标坐标为pc ==>好! USB端口开启==>好! USB端口流(单串)==>好! 鼠标x和y坐标==> Gcode不行! 鼠标gcode ==>数控机床不行!
再次感谢。
答案 0 :(得分:0)
如何将这两个程序(包含主方法)与一个工作程序结合起来?
如果我理解正确,这就是你遇到的问题。在这两个程序中,将main()
方法更改为init()
并使用main()
创建一个新程序。
public static void main(String[] args){
Program1.init();
Program2.init();
}
答案 1 :(得分:0)
您必须更改代码,以便首先处理“鼠标”和COM端口的设置内容。然后,取出剩余的“鼠标读取器”代码,并通过调用写入COM端口的方法替换写入控制台的内容。因此,您的新主要方法(可能在新类中)应该大致如下:
/* open mouse input */
/* open COM output */
while (true) {
/* read from mouse */
/* reformat as gcode */
/* write the data to the COM port */
}
尝试尽可能多地重用现有类,而无需通过调用方法来修改它们。