1

I have a Cyber Robot CYBER 310 and a Sciento CS-113 robotic arm with no documentation. Both use a parallel port.

How could I program those?

For the Cyber one, I found this:

enter image description here

Nothing at all on the Sciento one.

Any pointers or examples in Python/Java/C/whatever appreciated.

[update] This page contains some information, but I'm still lost: http://www.anf.nildram.co.uk/beebcontrol/arms/cyber/software.html

4

2 回答 2

0

我不完全确定我理解问题所在。

您对并行端口编程不熟悉吗?

我对它的记忆很模糊,但iirc很简单。这是一个“愚蠢”的界面,所以你只需要写它。

如果您在 linux 下运行,那么上面有一些很棒的资源:

Linux 设备驱动程序:第 9 章:并行端口概述- 讨论了一些并行端口编程,然后继续讨论为它编写设备驱动程序。我认为你的申请有点矫枉过正,但整本书都很吸引人,很有启发性。

Linux I/O 端口编程- 基本上你可以写入 /dev/port,或包含 asm/io.h 并使用 inb() 和 outb()(我有一段时间没这样做了,但我确定你是否运行进入一个特定的问题,一旦你把它缩小到特定的东西,就会有很多答案)

如果您使用的是 windows 或 mac,那么 id 仍然建议您阅读上面的内容,以便您知道自己要做什么,我认为它们很简单,然后搜索 windows/mac 等价物。

现在,我认为问题的关键是,你给端口写了什么?

对于 Cyber​​ 310,您有引脚布局,尽管如果您浏览您列出的站点,似乎有多种不同的引脚布局,如果我们在此处关注 anf.nildram.co.uk,我们可以找到一些 PIC 组件,这些组件将向我们展示如何旋转底座。

在今天之前我从未接触过 PIC 组装,但在互联网和评论的帮助下,我认为我们可以翻译这是试图做的事情(剪掉相关部分,因为大部分是时间和循环)

; 6: Symbol prf = PORTA.0
;       The address of 'prf' is 0x5,0
; 7: Symbol strobe = PORTA.1
;       The address of 'strobe' is 0x5,1
; 8: Symbol base = PORTB.0
;       The address of 'base' is 0x6,0
; 9: Symbol shoulder = PORTB.1
;       The address of 'shoulder' is 0x6,1
...
; 16: main: 
L0001:
; 17: base = 1
BSF 0x06,0          // set bit 0 at 0x06 to 1 essentially set base bit to 1
; 18: strobe = 1
BSF 0x05,1          // set strobe bit to 1
; 19: strobe = 0
BCF 0x05,1          // set strobe bit to 0
; 20: While a <> 730 // now we loop 729 more times

因此,从我幼稚的角度来看,要旋转手臂,您需要设置电机位(从您的引脚分配中获取),然后设置并清除频闪。

如果我完全不在基地,请告诉我,这是一个迷人的项目。

于 2012-04-04T03:47:45.740 回答
0

Chris 关于并行端口是一个愚蠢的接口是正确的。并行端口有一个地址,您可以输出一个与数字输出位置匹配的 8 位二进制数。

我发现这是使用 C# 对并行端口进行编程的一个非常好的示例。 http://www.codeproject.com/Articles/4981/IO-Ports-Uncensored-1-Controlling-LEDs-Light-Emit

将您的项目与他的示例相匹配。C0 为频闪。然后你的数字输出从左到右匹配他的 D0-D6。

似乎是一个非常有趣的项目。玩得开心。

于 2012-04-05T14:34:23.243 回答