连接到使用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 `

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么@DELETE REST不起作用?   带有JPA2的java表值参数。1和Hibernate,Sql Server   如何将Java类添加到Xamarin VS2017项目   绘制多边形时出现java空指针异常   java Apache WebClient 303状态未重定向   java如何用一组字符串数组从数据库中获取数据   java是否可以使用Google Drive API向文件中添加脚本?   java组织。阿帕奇。贾斯珀。JspC jar文件下载   java在整个JSON映射中将单个值作为JSON流   通过命令行将文件输入到java   java rs.next()总是返回false   java标记异常,通知调用方利用异常消息   java Spring YML数组属性为空