#1
|
|||
|
|||
Vizard Matlab interface - no data printing
Hi,
I've been trying to set up a way for matlab to talk to Vizard. Eventually, I want to be able to take sensor data that is real-time processed in matlab and use it in Vizard. Right now I'm just trying to set up a simple UDP connection. This is what I have: MATLAB: ip = 'LocalHost'; port = 4950; u = udp(ip,port); fopen(u) fprintf(u, 'testdata') Vizard: import viz import viznet dataNetwork = viz.addNetwork('LocalHost'); def onNetwork(e): if isinstance(e,viz.RawNetworkEvent): print e.raw_data viz.callback(viz.NETWORK_EVENT,onNetwork) Nothing prints in Vizard. It just loads. I tried running the matlab code and the Vizard code in different orders. I've sent the matlab "fprintf" command again, then I run the Vizard code again. Matlab claims something sent, but I don't see it. Eventually, I want to change "print e.raw_data" to "var = e.raw_data" and save the data as a variable, "var", then use the value of "var" as a command, the same way I would use a keyboard button-push. What am I missing, and will saving as a variable work when it gets going? Thank you, Sherrie |
#2
|
|||
|
|||
Can you post the entire Vizard script and use the [code][/code] tags so the indentation is properly preserved?
|
#3
|
|||
|
|||
Hi,
Sorry about that. Code:
import viz import viznet dataNetwork = viz.addNetwork('LocalHost'); #viz.net.addPort(4960) def onNetwork(e): if isinstance(e,viz.RawNetworkEvent): print e.raw_data viz.callback(viz.NETWORK_EVENT,onNetwork) The matlab has no indents. What I hope to do later: Code:
dataNetwork = viz.addNetwork('LocalHost'); #viz.net.addPort(4960) def onNetwork(e): if isinstance(e,viz.RawNetworkEvent): print e.raw_data if e.raw_data == 'command' SetBrakeFlag(not BrakeFlag) viz.callback(viz.NETWORK_EVENT,onNetwork) |
#4
|
|||
|
|||
The script is not creating the graphics window using viz.go(). Since no window is created, the script will immediately exit after reaching the end of the file. Try running the following code:
Code:
import viz import viznet viz.go() dataNetwork = viz.addNetwork('LocalHost'); #viz.net.addPort(4960) def onNetwork(e): if isinstance(e,viz.RawNetworkEvent): print e.raw_data viz.callback(viz.NETWORK_EVENT,onNetwork) |
#5
|
|||
|
|||
Thanks for the assist - can't believe I missed that. Now I'm on to the hard part (been hunting through old threads but no answer).
When I run with the if statement, I can't get it to work. It has to do with the data coming through as e.raw_data. I tried converting it to a string but I still can't compare it. This is what I have after trying to convert BOTH my data and my if object (already a string) to strings. It still doesn't work. Of course it will recognize them as NOT equal... but that doesn't help me much. Why can't I actually turn this raw data into an object? Code:
dataNetwork = viz.addNetwork('OEM-PC') def onNetwork(e): if isinstance(e,viz.RawNetworkEvent): print e.raw_data v = str(e.raw_data) if v == str('hi'): print v viz.callback(viz.NETWORK_EVENT,onNetwork) |
#6
|
|||
|
|||
Try using the following code to see what the contents of the raw_data attribute is:
Code:
def onNetwork(e): if isinstance(e,viz.RawNetworkEvent): print repr(e.raw_data) |
#7
|
|||
|
|||
That's exactly it
I got 'hi\n' Any chance there's a simple way to remove the trailing parts? |
#8
|
|||
|
|||
You can use the following to strip trailing newline, space, and null byte characters:
Code:
v = e.raw_data.rstrip('\n\0 ') |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Interface between Matlab and Vizard | Shweta | Vizard | 8 | 06-30-2014 10:40 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 |