打印虎logo3D打印模型大全 免费下载
欢迎来到打印虎问答 ,这里是专业的3D打印问答社区,有问必答!

关于G代码指令执行原理如何实现的疑问

0 投票
你好!我想开发一款上位机,但是现在有个问题一直搞不清楚,就是说一条G代码在上位机中如何发给下位机来执行的,下位机又是怎样将完成该条指令的标志发给上位机呢,是字符处理来实现的吗,还是有其他的方式。
最新提问 9月 29, 2015 用户: 理想 (150 分)

1个回答

+1 投票
首先,我先说明一下3D打印机的串口机制,上位机发送一行代码到下位机,然后下位机会进行回复,如果成功执行,会回复ok+n ,这里的n是一个常数说明的是对第几个命令的回复。当然下位机的回复不仅仅是ok+n,还有诸如:Resend:3 告诉你代码执行出错了;T:188.91 /190 B:65.00 /65 B@:0 @:0 告诉你热床和喷头温度;wait告诉你打印机处于空闲。

然后,应该是这样实现的,打印机发送一行命令(以ASCII码模式)发送到打印机,等待打印机成功执行并回复ok之后,接着发送第二条指令,一条一条的发送就可以了。

接着,你就会发现打印机会一卡一卡的,因为你是发一条等待回复,再发一条等待回复,肯定会导致速度很慢,所以在速度上是个大问题,所以我们得采用滑动窗口机制,也就是计算机网络中常说的快速回复ARQ(具体可以查看《计算机网络》(谢希任)这本书)。就是发几条了,等待回复一条或两条了就立即发送接下来的命令,为了方便大家的了解我列出以下串口的监控

2015-09-27 16:05:08 [W] N1042 G1 X109.218 Y87.447 F7800.000 *114
2015-09-27 16:05:08 [R] ok 1041
2015-09-27 16:05:08 [W] N1043 G1 X108.722 Y87.837 E3.29433 F360.000 *8
2015-09-27 16:05:08 [R] ok 1042
2015-09-27 16:05:08 [W] N1044 G1 X108.162 Y88.193 E3.38835 *66
2015-09-27 16:05:08 [W] N1045 G1 E2.38835 F1800.00000 *5
2015-09-27 16:05:08 [R] ok 1043
2015-09-27 16:05:08 [W] N1046 G92 E0 *84
2015-09-27 16:05:09 [R] ok 1044
2015-09-27 16:05:09 [W] N1047 G1 X109.486 Y81.194 F7800.000 *123
2015-09-27 16:05:09 [R] ok 1045
2015-09-27 16:05:09 [W] N1048 G1 E1.00000 F1800.00000 *14
2015-09-27 16:05:09 [R] ok 1046
2015-09-27 16:05:09 [W] N1049 G1 X107.213 Y80.564 E1.15762 F360.000 *12
2015-09-27 16:05:09 [R] ok 1047

大家看到,接收到对1041的确认之后,马上发送的1043号命令,也就是说打印机的缓冲区中始终有等待执行的命令。这样就可以实现快速打印了。

最后,3D打印的串口机制就是这样,最好采用缓冲队列的方式,采用异步串口模式,如果编程时有什么问题,就发我的邮箱12211160@bjtu.edu.cn.
最新回答 9月 29, 2015 用户: 凯旋 1 (200 分)
...