Code Pyton to VB.net

Hi people!

I want to convert this http://principialabs.com/joystick-control-of-a-servo/ program pyton to VB 2010.

Code:
#!/usr/bin/env python
#
# joystick-servo.py
#
# created 19 December 2007
# copyleft 2007 Brian D. Wendt
# http://principialabs.com/
#
# code adapted from:
# http://svn.lee.org/swarm/trunk/mothernode/python/multijoy.py
#
# NOTE: This script requires the following Python modules:
# pyserial - http://pyserial.sourceforge.net/
# pygame - http://www.pygame.org/
# Win32 users may also need:
# pywin32 - http://sourceforge.net/projects/pywin32/
#

import serial
import pygame

# allow multiple joysticks
joy = []

# Arduino USB port address (try "COM5" on Win32)
usbport = "/dev/ttyUSB0"

# define usb serial connection to Arduino
ser = serial.Serial(usbport, 9600)

# handle joystick event
def handleJoyEvent(e):
if e.type == pygame.JOYAXISMOTION:
axis = "unknown"
if (e.dict['axis'] == 0):
axis = "X"

if (e.dict['axis'] == 1):
axis = "Y"

if (e.dict['axis'] == 2):
axis = "Throttle"

if (e.dict['axis'] == 3):
axis = "Z"

if (axis != "unknown"):
str = "Axis: %s; Value: %f" % (axis, e.dict['value'])
# uncomment to debug
#output(str, e.dict['joy'])

# Arduino joystick-servo hack
if (axis == "X"):
pos = e.dict['value']
# convert joystick position to servo increment, 0-180
move = round(pos * 90, 0)
if (move < 0):
servo = int(90 - abs(move))
else:
servo = int(move + 90)
# convert position to ASCII character
servoPosition = chr(servo)
# and send to Arduino over serial connection
ser.write(servoPosition)
# uncomment to debug
#print servo, servoPosition

elif e.type == pygame.JOYBUTTONDOWN:
str = "Button: %d" % (e.dict['button'])
# uncomment to debug
#output(str, e.dict['joy'])
# Button 0 (trigger) to quit
if (e.dict['button'] == 0):
print "Bye!\n"
ser.close()
quit()
else:
pass

# print the joystick position
def output(line, stick):
print "Joystick: %d; %s" % (stick, line)

# wait for joystick input
def joystickControl():
while True:
e = pygame.event.wait()
if (e.type == pygame.JOYAXISMOTION or e.type == pygame.JOYBUTTONDOWN):
handleJoyEvent(e)

# main method
def main():
# initialize pygame
pygame.joystick.init()
pygame.display.init()
if not pygame.joystick.get_count():
print "\nPlease connect a joystick and run again.\n"
quit()
print "\n%d joystick(s) detected." % pygame.joystick.get_count()
for i in range(pygame.joystick.get_count()):
myjoy = pygame.joystick.Joystick(i)
myjoy.init()
joy.append(myjoy)
print "Joystick %d: " % (i) + joy[i].get_name()
print "Depress trigger (button 0) to quit.\n"

# run joystick listener loop
joystickControl()

# allow use as a module or standalone script
if __name__ == "__main__":
main()

Ok, I try some moves and some help to other vb forums where I really want to convert the code (in underline) to vb.net.
This line is to Arduino joystick servo hack. Its just Im need.
Code:
' Variables needed:
Dim axis As String
Dim pos As Double
Dim move As Integer
Dim servo As Integer

' Ported code
If axis = "X" Then
pos = ???
move = CInt(Math.Round(pos * 90, 0))
If move < 0 Then
servo = 90 - Math.Abs(move)
Else
servo = 90 + move
End If
End IF))
But not I didnt not find some library or function similar in VB.net

Code:
handleJoyEvent(e):
if e.type == pygame.JOYAXISMOTION:
Can some one help?

Or please, tell me the code in VB or C#  to communicate arduino from joystick via serial?

Thanks!

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  • Guys, its me again...
    Sorry to borry...but I need help with this.

    [CODE]
    import serial

    usbport = '/dev/ttyUSB0'
    ser = serial.Serial(usbport, 9600, timeout=1)
    #print ser

    def move(servo, angle):
    '''Moves the specified servo to the supplied angle.

    Arguments:
    servo
    the servo number to command, an integer from 1-4
    angle
    the desired servo angle, an integer from 0 to 180

    (e.g.) >>> servo.move(2, 90)
    ... # "move servo #2 to 90 degrees"'''

    if (0 <= angle <= 180):
    ser.write(chr(255))
    ser.write(chr(servo))
    ser.write(chr(angle))
    else:
    print "Servo angle must be an integer between 0 and 180.\n"
    [/CODE]

    This code is more simple:
    I Try to to convert to VB and look like this:

    [CODE]
    Imports Microsoft.DirectX
    Imports Microsoft.DirectX.DirectInput

    Public Class Form1
    Dim servo As Integer
    Dim RotationX As Integer


    Public Function GetSliders(ByVal servo, ByVal X) As Integer()


    If (0 <= X <= 180) Then
    SerialPort1.Write(Chr(255))
    SerialPort1.Write(Chr(servo))
    SerialPort1.Write(Chr(X))

    Else
    Print("Sorry")

    End If

    End Function

    End Class
    [/CODE]

    My question is, why i have this warning?

    Warning 1 Function 'GetSliders' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.

    I understood the GetSliders dont return any value, but I put servo and X why this?

    and this line:
    [CODE]
    def move(servo, angle):
    [/CODE]
    In google I find this information:
    In the above code there is really only one new keyword: def. def is the keyword used when defining functions. Arguments are passed in paranthesis just like C, and the return statement can't return multiple values. However, since lists, tuples, and dictionaries are basic types they can be returned instead. I'll illustrate this later. A quick thing to note about Python functions: They always return a value. However, if no return value is specified, or you don't use the return keyword, Python automatically returns the value None.

    Ok, so the code similiar in VB.net is the "Function" right?

    Thanks and sorry to borrow!
    VB.NET Shop
  • Hey people!

    I use Iron Pyton to work in VB.net 2010 and I have this windows to show:



    If you see, there are handlejoyevent and joystick control.

    Can I know ou find information about this two event? If I discovery, I
    can find some similar in VB.net write?

    Thaks in advance!!
    VB.NET Shop
  • sharpdevelop has built-in capability to convert between .net languages. Maybe it can do the trick.
  • Another option: Iron Python runs on the .NET framework, if you ran that python code in there, you should be able to call your functions from your existing VB code without having to re-write anything. Its not that much code, but if you get this working you can easily add more external python in the future without having to re-write.
  • I think that it's quite possible
    I can help with this code if you like

    Here's where I think that can be a good start:
    http://www.codeproject.com/KB/directx/joystick.aspx
    http://www.slimdx.org/features.php
    http://code.msdn.microsoft.com/WindowsAPICodePack/Release/ProjectRe...
This reply was deleted.

Activity

DIY Robocars via Twitter
RT @gclue_akira: 柏の葉で走行させてるjetracerの中身 #instantNeRF #jetracer https://t.co/giVvuE4hP7
Jul 4
DIY Robocars via Twitter
Cool web-based self-driving simulator. Click save when the AI does the right thing https://github.com/pncsoares/self-driving-car
Jul 4
DIY Robocars via Twitter
RT @donkey_car: Human-scale Donkey Car! Hope this makes it to a @diyrobocars race https://www.youtube.com/watch?v=ZMaf031U8jg
Jun 25
DIY Robocars via Twitter
Jun 25
DIY Robocars via Twitter
Jun 16
DIY Robocars via Twitter
RT @GrantEMoe: I won my first @diyrobocars @donkey_car virtual race! Many thanks to @chr1sa @EllerbachMaxime @tawnkramer and everyone who m…
Jun 13
DIY Robocars via Twitter
RT @gclue_akira: JetRacerで自動走行したコースを、InstantNeRFで再構築。データセットは別々に収集 #jetracer #instantNeRT https://t.co/T8zjg3MFyO
Jun 13
DIY Robocars via Twitter
RT @SmallpixelCar: SPC 3.0 Now the motor also works. This car is doable. I just need to design a deck to mount my compute and sensors. http…
Jun 13
DIY Robocars via Twitter
RT @SmallpixelCar: My new car SPC 3.0. https://t.co/CKtkZOxeNQ
Jun 7
DIY Robocars via Twitter
RT @SmallpixelCar: High speed at @diyrobocars thanks @EdwardM26321707 for sharing the video https://t.co/o4317Y2U1S
Jun 7
DIY Robocars via Twitter
RT @SmallpixelCar: Today at @RAMS_RC_Club for @diyrobocars. Used @emlid RTK GPS and @adafruit @BoschGlobal IMU. Lap time 28s https://t.co/R…
May 28
DIY Robocars via Twitter
May 15
DIY Robocars via Twitter
May 14
DIY Robocars via Twitter
May 13
DIY Robocars via Twitter
RT @f1tenth: Say hi to our newest #F1TENTH creation for @ieee_ras_icra next week in Philly. It’s going to be huge! 😎 🔥 @AutowareFdn @PennEn…
May 13
DIY Robocars via Twitter
May 11
More…