コード例 #1
0
    def __init__(self):
        self._adapter = Adapter(('0.0.0.0', 7878))
        self._pose = ThreeDSample('pose')
        self._adapter.add_data_item(self._pose)

        avail = Event('avail')
        self._adapter.add_data_item(avail)
        avail.set_value('AVAILABLE')
コード例 #2
0
    def __init__(self):
        self._adapter = Adapter(('0.0.0.0', 7878))
        self._pose = ThreeDSample('pose')
        self._adapter.add_data_item(self._pose)

        avail = Event('avail')
        self._adapter.add_data_item(avail)
        avail.set_value('AVAILABLE')
コード例 #3
0
def init_test():
    event = Event("foo")
    eq_(event.changed(), False)
    eq_(event._name, "foo")

    event.set_value("blat")
    eq_(event.changed(), True)
    eq_(event.value(), "blat")

    lines = event.values()
    eq_(lines[0], "|foo|blat")

    event.sweep()
    eq_(event.changed(), False)
コード例 #4
0
def single_event_communications_test():
    fname, adapter = create_server()
    event = Event('foo')
    adapter.add_data_item(event)
    event.set_value('hello')
    adapter.start()

    adapter.format_time = MagicMock(return_value="TIME")

    client = connect_client(fname)
    line = client.recv(256)
    eq_(line, 'TIME|foo|hello\n')

    adapter.stop()
    os.remove(fname)
コード例 #5
0
def single_event_communications_test():
    fname, adapter = create_server()
    event = Event('foo')
    adapter.add_data_item(event)
    event.set_value('hello')
    adapter.start()

    adapter.format_time = MagicMock(return_value="TIME")

    client = connect_client(fname)
    line = client.recv(256)
    eq_(line, 'TIME|foo|hello\n')

    adapter.stop()
    os.remove(fname)
コード例 #6
0
def add_event(data):
    # Unpack function arguments
    adapter, tag_list, di_dict, init = data

    for tag in tag_list:
        # Change tag to XML [name] attribute format if necessary
        if not tag.islower():
            data_item = split_event(tag)
        else:
            data_item = tag

        # Add Event to the MTConnect adapter
        di_dict[data_item] = Event(data_item)
        adapter.add_data_item(di_dict[data_item])

        # Output success
        rospy.loginfo('Added XML data_item --> %s' % data_item)

    if init == True:
        # Set initial states for robot actions
        adapter.begin_gather()
        for data_item, event in di_dict.items():
            event.set_value('READY')
        adapter.complete_gather()
    return
コード例 #7
0
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License."""

import sys, os, time

path, file = os.path.split(__file__)
sys.path.append(os.path.realpath(path) + '/../src')

from data_item import Event, SimpleCondition, Sample
from mtconnect_adapter import Adapter

if __name__ == "__main__":
    adapter = Adapter(('localhost', 7878))
    e1 = Event('e1')
    adapter.add_data_item(e1)
    c1 = SimpleCondition('c1')
    adapter.add_data_item(c1)
    s1 = Sample('s1')
    adapter.add_data_item(s1)
    adapter.start()

    while True:
        adapter.begin_gather()
        e1.set_value(1)
        s1.set_value(200.1)
        adapter.complete_gather()
        time.sleep(1.0)

        adapter.begin_gather()
コード例 #8
0
sys.path.append(os.path.realpath(path) + '/../src')

from data_item import Event, SimpleCondition, Sample, ThreeDSample
from mtconnect_adapter import Adapter

import roslib
roslib.load_manifest('turtlesim')
import rospy
import turtlesim.msg

adapter = Adapter(('0.0.0.0', 7878))
pose = ThreeDSample('pose')
adapter.add_data_item(pose)


def handle_turtle_pose(msg, turtlename):
    adapter.begin_gather()
    pose.set_value((msg.x, msg.y, 0.0))
    adapter.complete_gather()


if __name__ == "__main__":
    avail = Event('avail')
    adapter.add_data_item(avail)
    avail.set_value('AVAILABLE')
    adapter.start()
    rospy.init_node('mtconnect_adapter')
    rospy.Subscriber('/turtle1/pose', turtlesim.msg.Pose, handle_turtle_pose,
                     'turtle1')
    rospy.spin()
コード例 #9
0
ファイル: ros_adapter.py プロジェクト: hephaestus9/ros_bridge
from data_item import Event, SimpleCondition, Sample, ThreeDSample
from mtconnect_adapter import Adapter

import roslib
roslib.load_manifest('turtlesim')
import rospy
import turtlesim.msg

adapter = Adapter(('0.0.0.0', 7878))
pose = ThreeDSample('pose')
adapter.add_data_item(pose)

def handle_turtle_pose(msg, turtlename):
    adapter.begin_gather()
    pose.set_value((msg.x, msg.y, 0.0))
    adapter.complete_gather()

if __name__ == "__main__":
    avail = Event('avail')
    adapter.add_data_item(avail)
    avail.set_value('AVAILABLE')
    adapter.start()
    rospy.init_node('mtconnect_adapter')
    rospy.Subscriber('/turtle1/pose',
                     turtlesim.msg.Pose,
                     handle_turtle_pose,
                     'turtle1')
    rospy.spin()

    
コード例 #10
0
ファイル: adapter.py プロジェクト: zishan11/PocketNC_adapter
    def __init__(self, host, port):

        self.host = host
        self.port = port

        self.adapter = Adapter((host, port))

        self.auto_time = Sample('auto_time')
        self.adapter.add_data_item(self.auto_time)

        self.cut_time = Sample('cut_time')
        self.adapter.add_data_item(self.cut_time)

        self.total_time = Sample('total_time')
        self.adapter.add_data_item(self.total_time)

        self.Xabs = Sample('Xabs')
        self.adapter.add_data_item(self.Xabs)

        self.Yabs = Sample('Yabs')
        self.adapter.add_data_item(self.Yabs)

        self.Zabs = Sample('Zabs')
        self.adapter.add_data_item(self.Zabs)

        self.Aabs = Sample('Aabs')
        self.adapter.add_data_item(self.Aabs)

        self.Babs = Sample('Babs')
        self.adapter.add_data_item(self.Babs)

        self.Srpm = Sample('Srpm')
        self.adapter.add_data_item(self.Srpm)

        self.estop = Event('estop')
        self.adapter.add_data_item(self.estop)

        self.power = Event('power')
        self.adapter.add_data_item(self.power)

        self._exec = Event('exec')
        self.adapter.add_data_item(self._exec)

        self.line = Event('line')
        self.adapter.add_data_item(self.line)

        self.program = Event('program')
        self.adapter.add_data_item(self.program)

        self.Fovr = Event('Fovr')
        self.adapter.add_data_item(self.Fovr)

        self.Sovr = Event('Sovr')
        self.adapter.add_data_item(self.Sovr)

        self.Tool_number = Event('Tool_number')
        self.adapter.add_data_item(self.Tool_number)

        self.mode = Event('mode')
        self.adapter.add_data_item(self.mode)

        self.avail = Event('avail')
        self.adapter.add_data_item(self.avail)

        self.adapter.start()

        self.adapter.begin_gather()
        self.avail.set_value("AVAILABLE")
        self.adapter.complete_gather()

        self.adapter_stream()
コード例 #11
0
ファイル: adapter.py プロジェクト: zishan11/PocketNC_adapter
class pocketNCAdapter(object):
    def __init__(self, host, port):

        self.host = host
        self.port = port

        self.adapter = Adapter((host, port))

        self.auto_time = Sample('auto_time')
        self.adapter.add_data_item(self.auto_time)

        self.cut_time = Sample('cut_time')
        self.adapter.add_data_item(self.cut_time)

        self.total_time = Sample('total_time')
        self.adapter.add_data_item(self.total_time)

        self.Xabs = Sample('Xabs')
        self.adapter.add_data_item(self.Xabs)

        self.Yabs = Sample('Yabs')
        self.adapter.add_data_item(self.Yabs)

        self.Zabs = Sample('Zabs')
        self.adapter.add_data_item(self.Zabs)

        self.Aabs = Sample('Aabs')
        self.adapter.add_data_item(self.Aabs)

        self.Babs = Sample('Babs')
        self.adapter.add_data_item(self.Babs)

        self.Srpm = Sample('Srpm')
        self.adapter.add_data_item(self.Srpm)

        self.estop = Event('estop')
        self.adapter.add_data_item(self.estop)

        self.power = Event('power')
        self.adapter.add_data_item(self.power)

        self._exec = Event('exec')
        self.adapter.add_data_item(self._exec)

        self.line = Event('line')
        self.adapter.add_data_item(self.line)

        self.program = Event('program')
        self.adapter.add_data_item(self.program)

        self.Fovr = Event('Fovr')
        self.adapter.add_data_item(self.Fovr)

        self.Sovr = Event('Sovr')
        self.adapter.add_data_item(self.Sovr)

        self.Tool_number = Event('Tool_number')
        self.adapter.add_data_item(self.Tool_number)

        self.mode = Event('mode')
        self.adapter.add_data_item(self.mode)

        self.avail = Event('avail')
        self.adapter.add_data_item(self.avail)

        self.adapter.start()

        self.adapter.begin_gather()
        self.avail.set_value("AVAILABLE")
        self.adapter.complete_gather()

        self.adapter_stream()

    def data_pull(self):
        data = linuxcnc.stat()
        data.poll()
        return data

    def adapter_stream(self):

        at2 = 'initialize'
        ct2 = 'initialize'
        ylt2 = 'initialize'
        ylt1 = datetime.datetime.now()  #initialized
        at1 = datetime.datetime.now()  #initialized
        ct1 = datetime.datetime.now()  #initialized
        ylt = float(0)  #initialized
        at = float(0)  #initialized
        ct = float(0)  #initialized

        while True:
            try:
                data = self.data_pull()

                #time initialization: accumulated time: cut - auto - total
                if self.power.value() == 'ON':
                    ylt2 = datetime.datetime.now()
                    if ex == 'ACTIVE' and self.Srpm.value() != None and float(
                            self.Srpm.value()) > 0 and estop == 'ARMED':
                        ct2 = datetime.datetime.now()
                    else:
                        ct1 = datetime.datetime.now()
                    if (ex == 'ACTIVE' or ex == 'STOPPED'
                            or ex == 'INTERRUPTED' or
                            float(self.Srpm.value()) > 0) and estop == 'ARMED':
                        at2 = datetime.datetime.now()
                    else:
                        at1 = datetime.datetime.now()
                else:
                    ylt1 = datetime.datetime.now()

                if data.state == 1:
                    ex = 'READY'
                elif data.state == 2:
                    ex = 'ACTIVE'
                else:
                    ex = ''

                self.adapter.begin_gather()
                self._exec.set_value(ex)
                self.adapter.complete_gather()

                if data.estop != 1:
                    estp = 'ARMED'
                else:
                    estp = 'TRIGGERED'

                self.adapter.begin_gather()
                self.estop.set_value(estp)
                self.adapter.complete_gather()

                self.adapter.begin_gather()
                self.power.set_value(pwr)
                self.adapter.complete_gather()

                self.adapter.begin_gather()
                xps = str(format(data.actual_position[0], '.4f'))
                self.Xabs.set_value(xps)
                yps = str(format(data.actual_position[1], '.4f'))
                self.Yabs.set_value(yps)
                zps = str(format(data.actual_position[2], '.4f'))
                self.Zabs.set_value(zps)
                abs = str(format(data.actual_position[3], '.4f'))
                self.Aabs.set_value(abs)
                bbs = str(format(data.actual_position[4], '.4f'))
                self.Babs.set_value(bbs)

                self.adapter.complete_gather()

                ssp = str(data.spindle_speed)
                self.adapter.begin_gather()
                self.Srpm.set_value(ssp)

                ln = str(data.motion_line)
                self.adapter.begin_gather()
                self.line.set_value(ln)

                pgm = str(data.file)
                self.adapter.begin_gather()
                self.program.set_value(pgm)

                pfo = str(data.feedrate * 100)
                self.adapter.begin_gather()
                self.Fovr.set_value(pfo)

                so = str(data.spindlerate * 100)
                self.adapter.begin_gather()
                self.Sovr.set_value(so)

                tooln = str(data.tool_in_spindle)
                self.adapter.begin_gather()
                self.Tool_number.set_value(tooln)
                self.adapter.complete_gather()

                if data.task_mode == 1:
                    md = 'MDI'
                elif data.task_mode == 2:
                    md = 'AUTOMATIC'
                elif data.task_mode == 3:
                    md = 'MANUAL'
                else:
                    md = ''

                self.adapter.begin_gather()
                self.mode.set_value(md)
                self.adapter.complete_gather()

                #time finalization: accumulated time, cut vs auto vs total
                if ylt2 != 'initialize' and self.power.value(
                ) == 'ON' and ylt1 != ylt2:
                    #accumulated time:total time
                    if (ylt2 - ylt1).total_seconds() >= 0:
                        ylt += (ylt2 - ylt1).total_seconds()
                    ylt1 = ylt2
                    if ylt >= 0 and self.total_time.value() != str(int(ylt)):
                        self.adapter.begin_gather()
                        self.total_time.set_value(str(int(ylt)))
                        self.adapter.complete_gather()
                    if ylt < 0:
                        ylt = float(0)

                    #accumulated time:cut time
                    if ct2 != 'initialize' and ex == 'ACTIVE' and self.Srpm.value(
                    ) != None and float(self.Srpm.value(
                    )) > 0 and self.estop.value() == 'ARMED':
                        if (ct2 - ct1).total_seconds() >= 0:
                            ct += (ct2 - ct1).total_seconds()
                        ct1 = ct2
                        if ct >= 0 and self.cut_time.value() != str(int(ct)):
                            self.adapter.begin_gather()
                            self.cut_time.set_value(str(int(ct)))
                            self.adapter.complete_gather()
                        if ct < 0:
                            ct = float(0)

                    #accumulated time:auto time
                    if (at2 != 'initialize' and ex == 'ACTIVE'
                            or ex == 'INTERRUPTED' or ex == 'STOPPED'
                            or float(self.Srpm.value()) > 0
                        ) and self.estop.value() == 'ARMED':
                        if (at2 - at1).total_seconds() >= 0:
                            at += (at2 - at1).total_seconds()
                        at1 = at2
                        if at >= 0 and self.auto_time.value() != str(int(at)):
                            self.adapter.begin_gather()
                            self.auto_time.set_value(str(int(at)))
                            self.adapter.complete_gather()
                        if at < 0:
                            at = float(0)

            except:
                if self.power.value() and self.power.value() != 'OFF':
                    self.adapter.begin_gather()
                    self.power.set_value('OFF')
                    self.adapter.complete_gather()
                    ylt2 = 'initialize'
                    ct2 = 'initialize'
                    at2 = 'initialize'

                ylt1 = datetime.datetime.now()  #initialized
                at1 = datetime.datetime.now()  #initialized
                ct1 = datetime.datetime.now()  #initialized
コード例 #12
0
def change_test():
    event = Event("foo")
    eq_(event.changed(), False)

    event.set_value("blat")
    eq_(event.changed(), True)
    eq_(event.value(), "blat")

    event.sweep()
    eq_(event.changed(), False)

    event.set_value("blat")
    eq_(event.changed(), False)
    eq_(event.value(), "blat")
コード例 #13
0
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License."""
    
import sys, os, time

path, file = os.path.split(__file__)
sys.path.append(os.path.realpath(path) + '/../src')

from data_item import Event, SimpleCondition, Sample
from mtconnect_adapter import Adapter

if __name__ == "__main__":
    adapter = Adapter(('localhost', 7878))
    e1 = Event('e1')
    adapter.add_data_item(e1)
    c1 = SimpleCondition('c1')
    adapter.add_data_item(c1)
    s1 = Sample('s1')
    adapter.add_data_item(s1)
    adapter.start()

    while True:
        adapter.begin_gather()
        e1.set_value(1)
        s1.set_value(200.1)
        adapter.complete_gather()
        time.sleep(1.0)

        adapter.begin_gather()