连接到使用s3g协议的makerbot 3d打印机的python驱动程序
makerbot_driver的Python项目详细描述
#MakerBot_驱动程序
makerbot_驱动程序模块设计用于通过makerbot_驱动程序包与makerbot打印机通信。该模块的主要目标是将某些动作(即移动到某个位置、加热工具头)转换为要发送的信息包,并将从打印机接收到的信息包解码为人类可解析的格式。
##机器连接
##示例:连接到复制程序 导入makerbot_驱动程序模块和pyserial:
`python import makerbot_driver, serial `
创建makerbot_驱动程序对象,并将其连接到串行端口:
`python r = makerbot_driver.s3g() file = serial.Serial(port, 115200, timeout=1) r.writer = makerbot_driver.Writer.StreamWriter(file) `
注意:用串行端口替换端口(例如:'/dev/tty.usbmodemfd121')\u
使X、Y和Z轴归位:
`python r.find_axes_maximums(['x','y'], 500, 60) r.find_axes_minimums(['z'], 500, 60) r.recall_home_positions(['x', 'y', 'z', 'a', 'b']) `
指示机器以正方形模式移动:
`python r.queue_extended_point([2000,0,5000,0,0], 400) r.queue_extended_point([2000,2000,5000,0,0], 400) r.queue_extended_point([0,2000,5000,0,0], 400) r.queue_extended_point([0,0,5000,0,0], 400) `
注意:所有点都是步进的,所有速度都是DDA。这是s3g,不是gcode!_
现在,指示机器加热刀头0,等待5分钟使其达到温度,然后挤压12.5秒:
`python r.set_toolhead_temperature(0, 220) r.wait_for_tool_ready(0,100,5*60) r.queue_extended_point([0,0,5000,-5000,0], 2500) `
最后,不要忘记关闭刀头加热器,并禁用步进电机:
`python r.set_toolhead_temperature(0,0) r.toggle_axes(['x','y','z','a','b'],False) `
这些是控制机器的基础。有关更多详细信息,请参阅[s3g协议](https://github.com/jnesselr/s3g/blob/master/doc/s3g_protocol.markdown)和[s3g源代码](https://github.com/jnesselr/s3g/blob/master/s3g/s3g.py)。
#数据类型 在这个模块中使用了一些特定的数据格式,这里需要进一步的解释。
##点数 分为两种口味:普通型和加长型。
正则点表示为x、y和z坐标的列表:
[x, y, z]
扩展点表示为x、y、a和b坐标的列表:
[x, y, z, a, b]
##坐标轴列表 有几个命令需要轴列表作为输入。此参数作为Python字符串列表传递,其中每个轴是其自己的独立字符串。要传入所有轴:
[‘x’, ‘y’, ‘z’, ‘a’, ‘b’]
#错误处理 如果在传输过程中遇到问题,makerbot_驱动程序模块将引发异常。超时、从bot接收到的坏数据包和格式错误的参数等条件都可能导致makerbot_驱动程序模块引发异常。其中一些状态是可恢复的,而另一些则需要重新启动计算机。我们可以将makerbot_驱动程序的错误状态分为以下几类:
TOdo:这在errors.py文档中基本上是重复的,请考虑仅将重写作为基本错误类型的摘要。
##缓冲区溢出错误(内部使用) 当机器的缓冲区已满时,会引发缓冲区溢出错误。
##可重试错误(内部使用) 可重试的错误是makerbot_驱动程序引发的非灾难性错误。单独使用它们无法导致makerbot_驱动程序终止,5个错误的总和将导致makerbot_驱动程序退出。
Packet Decode Errors Generic Errors CRC Mismatch Errors Timeout Errors
##数据包解码错误(内部使用): 如果评估来自s3g主机的返回数据包时出现问题,则会引发数据包解码错误:
Bad Packet Lengths Bad Packet Field Lenghts Bad Packet CRCs Bad Packet Headers
##传输错误: 当引发超过5个可重试的错误时,将引发传输错误。
##协议错误 这些错误是由从机器返回的表面格式良好的数据包引起的,但数据不正确:
Bad Heat Element Ready Responses Bad EEPROM Read/Write Lengths UnrecognizedResponseError
##参数错误 当重要的格式化参数被传递到s3g函数中时,会引发参数错误。
Bad Point Length EEPROM Read/Write length too long Bad Tool Index Bad button name
##toolbuserror(内部使用): 当机器无法与其工具总线通信时,会引发工具总线错误。
Downstream Timeout Error Tool Lock Error
##其他错误 bot生成的错误将抛出它们自己的特定错误,例如:
SD Card Errors Extended Stop Errors Build Cancel Errors
##GCode错误 当读取gcode文件并解析出g/m代码和注释时,会抛出gcode错误。 原因:
Improperly Formatted Comments Bad Codes Codes That Are Repeated Multiple Times On A Single Line M And G Codes Present On The Same Line
##外部停止错误 当外部线程将makerbot driver.writer.streamwriter中的外部停止标志设置为true时,将引发外部停止错误,从而终止流写入程序的数据包发送过程。
##S3G流读取错误 当makerbot_驱动程序模块在makerbot_驱动程序流解析期间遇到错误时,将引发这些错误。 原因:
Encoded Strings Above The Max Payload Length
#贡献 欢迎大家参与这个项目!所有更改都必须采用项目的样式,并包括尽可能完整的单元测试。将所有源代码放在s3g/目录中,将所有测试放在tests/目录中。在提交修补程序之前,请通过运行单元测试脚本确保所有单元测试都通过:
`python python unit_tests.py `