WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rate Thread Display Modes
  #1  
Old 11-26-2016, 03:12 PM
sagar29 sagar29 is offline
Member
 
Join Date: Oct 2016
Posts: 7
Vizard and Matlab

Hi, I am trying to send a packet from matlab simulink model to vizard using UDP protocol.

Vizard code is:

import viz
import viznet

viz.go()

myNetwork=viz.addNetwork('192.168.1.2')


def onNetwork(e):
if isinstance(e,viz.RawNetworkEvent):
print repr(e.raw_data)

viz.callback(viz.NETWORK_EVENT,onNetwork)




and from simulink I am sending value 7 on port 4950. I am getting output like this:

'\x00\x00\x00\x00\x00\x00\x1c@'
'\x00\x00\x00\x00\x00\x00\x1c@'
'\x00\x00\x00\x00\x00\x00\x1c@'
'\x00\x00\x00\x00\x00\x00\x1c@'
'\x00\x00\x00\x00\x00\x00\x1c@'
'\x00\x00\x00\x00\x00\x00\x1c@'

What is problem exactly!
Thanks
Reply With Quote
  #2  
Old 11-27-2016, 05:42 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
What is printed out when you run the following?

Code:
import viz
import viznet

viz.go()

myNetwork=viz.addNetwork('192.168.1.2')

def onNetwork(e):
	if isinstance(e,viz.RawNetworkEvent):
		print 'data', e.raw_data
		print 'address', e.address
		print 'port', e.port

viz.callback(viz.NETWORK_EVENT,onNetwork)
Reply With Quote
  #3  
Old 12-01-2016, 04:26 PM
sagar29 sagar29 is offline
Member
 
Join Date: Oct 2016
Posts: 7
Hi, Thanks for reply.

When i run the code given above, I get output something like this:

data data data
data 50
data data address 192.168.1.2
port 4950
data data data 4950
data 950
data data 2
port 4950
data 950
data 4950
data 950
data 192.168.1.2
port 4950
data 950
data data data 950
data 950
data 4950
data 950
data 950
data port 4950
data 950
data 950
data 4950
data data address 192.168.1.2
port 4950
data 950
data 950
data 0
data data data 192.168.1.2
port 4950
data 950
data address 192.168.1.2
port 4950
data 950
data 0
data 950
data data 950
data 192.168.1.2
port 4950
data data 950
data 192.168.1.2
port 4950
data 950
data 950
data data data 4950
data data 950
data port 4950
data 50
data 4950
data s 192.168.1.2
port 4950
data port 4950
data 950
data 0
data port 4950
data 950
data
data
data 950
data 0
data
port 4950
data 50
data 192.168.1.2
port 4950
data 950
data 192.168.1.2
port 4950
data 192.168.1.2
port 4950
data 192.168.1.2

Is this due to MATLAB is sending faster and Vizard is receiving slower? (i.e. frame sampling problem)

I am sending around 8 to 9 parameters but in vizard only one parameter is reveiving.
In my case; I am trying to give yaw,pitch , roll and other parameters from the matlab and controlling virtual environment.

If this approach of taking data is wrong, please suggest another!

Thanks
Reply With Quote
  #4  
Old 12-06-2016, 04:18 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
When receiving raw byte data in Vizard, you'll need to know how the data is stored in order to reconstruct it. Do you have documentation on how the data is sent?
Reply With Quote
  #5  
Old 12-09-2016, 05:26 PM
sagar29 sagar29 is offline
Member
 
Join Date: Oct 2016
Posts: 7
Hello,
I amtrying to send 5 bytes from matlab. MATLAb is first taking 6 bytes, creating packet and sending it over UDP. To verify whether MATLAB is sending data or not, I ran MATLAB receiver on vizard PC and and I was able to get proper data.

When I am running this code:
import viz
import viznet

viz.go()

myNetwork=viz.addNetwork('192.168.1.2')

def onNetwork(e):
if isinstance(e,viz.RawNetworkEvent):
print 'data', e.raw_data
print 'address', e.address
print 'port', e.port

viz.callback(viz.NETWORK_EVENT,onNetwork)

I am getting
data #############èp@#####@f@#####@ @######i@address 192.168.1.2port 4950data ##############q@#####@f@#####@ @######i@address 192.168.1.2port 4950data ##############q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############0q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############Hq@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############`q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############xq@#####@f@#####@ @######i@address 192.168.1.2port 4950data ############# q@#####@f@#####@ @######i@ address 192.168.1.2port 4950data #############¨q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############Àq@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############Øq@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############ðq@#####@f@#####@ @######i@

and after running print e.raw_data:
I am getting random numbers. In this case, port and IP I am getting properly but problem is with data.
Reply With Quote
  #6  
Old 12-09-2016, 06:18 PM
sagar29 sagar29 is offline
Member
 
Join Date: Oct 2016
Posts: 7
In more detail, we are sending data as packets of doubles in Little endian format.

As an alternative, instead of using inbuilt networking commands in vizard, should I write UDP client in python and run?
Reply With Quote
  #7  
Old 01-07-2017, 08:10 PM
sagar29 sagar29 is offline
Member
 
Join Date: Oct 2016
Posts: 7
Hello,
I am trying to send data as packets of doubles in little endian format from MATLAB(Simulink) to Vizard. Since MATLAB is non-python interface, I am using code give on the forum and it is:

from __future__ import print_function
import viz
viz.go()
import vizact
import socket

log=open("new.txt","w")
print("Hi there",file=log)

#The maximum amount of data to receive at a time
MAX_DATA_SIZE = 1024

#The port to send/receive data on
PORT = 5600

#Get the name of this computer
COMPUTER_NAME = socket.gethostname()

#Get the IP address of this computer
COMPUTER_IP_ADDRESS = socket.gethostbyname('localhost')

#Create a socket to send data over
#OutSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#OutSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

#Create a socket to receive data from
InSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
InSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
InSocket.bind(('192.168.1.2', PORT))
InSocket.setblocking(0)

#def SendData(data):
#OutSocket.sendto(data,(COMPUTER_IP_ADDRESS,PORT))

def ReceiveData():
try:
return InSocket.recv(MAX_DATA_SIZE)
except socket.error:
#Insert error handling code here
print("Error has occured",file=log)

#vizact.onkeydown(' ',SendData,'hello there')

def CheckSocket():
#Try to receive data from socket
data = ReceiveData()
if data:
print (data,file=log)
else:
print("Data not received",file=log)
vizact.ontimer(0,CheckSocket)

I have removed data sending part by making it comment and trying to get data in file so that I can analyse(One more reason is that when I write simple print, I am getting nothing in Vizard). I am not understanding second line in socket creation for receiving data and also not getting any output.

I tried to send data from MATLAB to MATLAB and its working but with Vizard it is giving problem.

Please suggest appropriate corrections in code.

Thanks
Reply With Quote
  #8  
Old 12-25-2017, 11:36 PM
monkeyye monkeyye is offline
Registered User
 
Join Date: Dec 2017
Posts: 1
Quote:
Originally Posted by sagar29 View Post
Hello,
I amtrying to send 5 bytes from matlab. MATLAb is first taking 6 bytes, creating packet and sending it over UDP. To verify whether MATLAB is sending data or not, I ran MATLAB receiver on vizard PC and and I was able to get proper data.

When I am running this code:
import viz
import viznet

viz.go()

myNetwork=viz.addNetwork('192.168.1.2')

def onNetwork(e):
if isinstance(e,viz.RawNetworkEvent):
print 'data', e.raw_data
print 'address', e.address
print 'port', e.port

viz.callback(viz.NETWORK_EVENT,onNetwork)

I am getting
data #############èp@#####@f@#####@ @######i@address 192.168.1.2port 4950data ##############q@#####@f@#####@ @######i@address 192.168.1.2port 4950data ##############q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############0q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############Hq@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############`q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############xq@#####@f@#####@ @######i@address 192.168.1.2port 4950data ############# q@#####@f@#####@ @######i@ address 192.168.1.2port 4950data #############¨q@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############Àq@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############Øq@#####@f@#####@ @######i@address 192.168.1.2port 4950data #############ðq@#####@f@#####@ @######i@

and after running print e.raw_data:
I am getting random numbers. In this case, port and IP I am getting properly but problem is with data.
Hi, there, have you solve this problem?
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Vizard Matlab interface - no data printing shall6 Vizard 7 03-12-2015 10:55 AM
Iinterface between MATLAB and Vizard suraj Vizard 7 07-17-2012 10:02 AM
MATLAB and vizard xingtzu Vizard 1 01-15-2008 11:25 AM
Matlab and Vizard brystewa Vizard 1 09-18-2006 04:11 PM
MATLAB and Vizard eagleman Vizard 4 06-10-2005 12:42 PM


All times are GMT -7. The time now is 05:32 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC