BrmScope INIT COMMIT

This commit is contained in:
Tomas Suchan 2011-08-30 22:22:08 +02:00
commit b6af2e5206
9 changed files with 681 additions and 0 deletions

2
.directory Normal file
View file

@ -0,0 +1,2 @@
[Desktop Entry]
Icon=./.icon.png

BIN
.icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

19
.project Normal file
View file

@ -0,0 +1,19 @@
# Gambas Project File 2.0
# Compiled with Gambas 2.21.0
Title=DUINOCNC
Startup=FMain
Version=0.0.2
Library=gb.qt
Library=gb.form
Library=gb.net
Library=gb.qt.ext
TabSize=2
SourcePath=/home/tomsuch/Desktop
Maintainer=brmlab
Address=brmlab@brmlab.cz
Url=www.brmlab.cz
License=General Public Licence
Systems=suse
Menus=System/Monitor
Categories=Brmlab;Monitor;System
Groups=Amusements/Games/Other

23
.settings Normal file
View file

@ -0,0 +1,23 @@
[Breakpoints]
Count=0
[DebugWindow]
Count=0
[FFind]
SearchIn="Module"
CaseSensitive=False
SearchWord=False
SearchComment=False
SearchString=True
[OpenFile]
File[1]="FMain.form"
File[2]="FMain.class:141.0"
Active=2
File[3]="Joystick.class:0.0"
Count=3
[Watches]
Count=0

3
CHANGELOG Normal file
View file

@ -0,0 +1,3 @@
* Tue Aug 09 2011 brmlab <brmlab@brmlab.cz> 0.0
- Initial release

BIN
DUINOCNC.gambas Executable file

Binary file not shown.

392
FMain.class Normal file
View file

@ -0,0 +1,392 @@
' Gambas class file
PUBLIC Motor_A_Dir AS Integer
PUBLIC Motor_B_Dir AS Integer
PUBLIC Motor_C_Dir AS Integer
PUBLIC Step_IDX AS Integer
PUBLIC Step_COUNT AS Boolean
PUBLIC Step_WDT AS Boolean
PUBLIC js AS Joystick
PUBLIC joy_x AS Integer
PUBLIC joy_y AS Integer
PUBLIC joy_s AS Integer
PUBLIC joy_bt_up AS Integer
PUBLIC joy_bt_down AS Integer
PUBLIC SUB _new()
END
PUBLIC SUB js_StickMove(num AS Integer, pos AS Integer)
TextBox9.Text = num
TextBox10.Text = pos
IF num = 0 THEN joy_x = pos
IF num = 1 THEN joy_y = pos
END
PUBLIC SUB Form_Open()
Motor_A_Dir = 0
Motor_B_Dir = 0
Motor_C_Dir = 0
Button8.Enabled = FALSE
Button10.Enabled = FALSE
Button12.Enabled = FALSE
Step_IDX = 0
Step_COUNT = FALSE
Step_WDT = FALSE
js = NEW Joystick("/dev/input/js0") AS "js"
END
PUBLIC SUB Button1_Click()
SerialPort1.PortName = "/dev/ttyUSB0"
SerialPort1.Speed = 115200
SerialPort1.FlowControl = FALSE
SerialPort1.Open
END
PUBLIC SUB js_ButtonPress(num AS Integer)
' check the corresponding checkbox
IF num = 2 THEN joy_bt_up = 1
IF num = 3 THEN joy_bt_down = 1
END
PUBLIC SUB js_ButtonRelease(num AS Integer)
' uncheck the corresponding checkbox
IF num = 2 THEN joy_bt_up = 0
IF num = 3 THEN joy_bt_down = 0
END
PUBLIC SUB Button2_Click()
Timer1.Enabled = TRUE
END
PUBLIC SUB Button3_Click()
WRITE #SerialPort1, Chr$(TextBox1.Text)
Timer1.Delay = TextBox2.Text
Timer1.Enabled = FALSE
WRITE #SerialPort1, Chr$(110)
END
PUBLIC SUB Timer1_Timer()
IF CheckBox4.Value = TRUE THEN
Step_IDX = Step_IDX + 1
ELSE
Step_IDX = 0
ENDIF
IF CheckBox1.Value = TRUE THEN
IF Motor_A_Dir = 0 THEN WRITE #SerialPort1, Chr$(4)
IF Motor_A_Dir = 1 THEN WRITE #SerialPort1, Chr$(5)
ENDIF
IF CheckBox2.Value = TRUE THEN
IF Motor_B_Dir = 0 THEN WRITE #SerialPort1, Chr$(6)
IF Motor_B_Dir = 1 THEN WRITE #SerialPort1, Chr$(7)
ENDIF
IF CheckBox3.Value = TRUE THEN
IF Motor_C_Dir = 0 THEN WRITE #SerialPort1, Chr$(8)
IF Motor_C_Dir = 1 THEN WRITE #SerialPort1, Chr$(9)
ENDIF
IF Step_IDX > 0 AND Step_IDX = TextBox3.Text THEN
Timer1.Enabled = FALSE
Step_IDX = 0
CheckBox4.Value = FALSE
Step_WDT = FALSE
WRITE #SerialPort1, Chr$(110)
ENDIF
TextBox4.Text = Step_IDX
END
PUBLIC SUB Button4_Click()
WRITE #SerialPort1, Chr$(TextBox1.Text)
END
PUBLIC SUB Button5_Click()
Timer1.Delay = TextBox2.Text
END
PUBLIC SUB Button6_Click()
WRITE #SerialPort1, Chr$(110)
END
PUBLIC SUB Button7_Click()
WRITE #SerialPort1, Chr$(111)
END
PUBLIC SUB Button9_Click()
Button9.Enabled = FALSE
Button8.Enabled = TRUE
Motor_A_Dir = 1
END
PUBLIC SUB Button8_Click()
Button9.Enabled = TRUE
Button8.Enabled = FALSE
Motor_A_Dir = 0
END
PUBLIC SUB Button11_Click()
Button11.Enabled = FALSE
Button10.Enabled = TRUE
Motor_B_Dir = 1
END
PUBLIC SUB Button13_Click()
Button13.Enabled = FALSE
Button12.Enabled = TRUE
Motor_C_Dir = 1
END
PUBLIC SUB Button10_Click()
Button11.Enabled = TRUE
Button10.Enabled = FALSE
Motor_B_Dir = 0
END
PUBLIC SUB Button12_Click()
Button13.Enabled = TRUE
Button12.Enabled = FALSE
Motor_C_Dir = 0
END
PUBLIC SUB Button14_Click()
DIM linc AS Integer
DIM lin AS String
DIM arr_strings AS String[]
arr_strings = Split(File.LOAD("/home/tomsuch/set-1.cnc"), "\n")
FOR EACH lin IN arr_strings
linc = linc + 1
TextBox6.Text = linc
' lin
TextBox5.Text = lin
IF Mid(lin, 1, 1) = "*" THEN
TextBox8.Text = Mid(lin, 2, 40)
ELSE
IF lin <> "" THEN
TextBox1.Text = Val((Mid(lin, 7, 3)))
TextBox2.Text = Val((Mid(lin, 11, 3)))
TextBox7.text = Val((Mid(lin, 1, 5)))
Button4_Click
Button5_Click
TextBox3.Text = Val((Mid(lin, 22, 4)))
IF Mid(lin, 15, 1) = 1 THEN CheckBox1.Value = TRUE
IF Mid(lin, 15, 1) = 0 THEN CheckBox1.Value = FALSE
IF Mid(lin, 16, 1) = 1 THEN Button9_Click
IF Mid(lin, 16, 1) = 0 THEN Button8_Click
IF Mid(lin, 17, 1) = 1 THEN CheckBox2.Value = TRUE
IF Mid(lin, 17, 1) = 0 THEN CheckBox2.Value = FALSE
IF Mid(lin, 18, 1) = 1 THEN Button11_Click
IF Mid(lin, 18, 1) = 0 THEN Button10_Click
IF Mid(lin, 19, 1) = 1 THEN CheckBox3.Value = TRUE
IF Mid(lin, 19, 1) = 0 THEN CheckBox3.Value = FALSE
IF Mid(lin, 20, 1) = 1 THEN Button13_Click
IF Mid(lin, 20, 1) = 0 THEN Button12_Click
CheckBox4.Value = TRUE
Step_WDT = TRUE
Timer1.Enabled = TRUE
WHILE Step_WDT = TRUE
WAIT
WEND
ENDIF
ENDIF
NEXT
END
PUBLIC SUB TextBox5_KeyPress()
END
PUBLIC SUB Timer2_Timer()
TextBox13.Text = joy_bt_up
TextBox14.Text = joy_bt_down
TextBox11.Text = joy_x
TextBox12.Text = joy_y
IF joy_y < 0 THEN
Button12_Click
CheckBox3.Value = TRUE
TextBox3.text = 1
'' CheckBox4.Value = TRUE
''Timer1.Enabled = TRUE
ENDIF
IF joy_y > 0 THEN
Button13_Click
CheckBox3.Value = TRUE
TextBox3.text = 1
'' CheckBox4.Value = TRUE
''Timer1.Enabled = TRUE
ENDIF
IF joy_x < 0 THEN
Button10_Click
CheckBox2.Value = TRUE
TextBox3.text = 1
'' CheckBox4.Value = TRUE
''Timer1.Enabled = TRUE
ENDIF
IF joy_x > 0 THEN
Button11_Click
CheckBox2.Value = TRUE
TextBox3.text = 1
'' CheckBox4.Value = TRUE
''Timer1.Enabled = TRUE
ENDIF
IF joy_bt_up = 1 THEN
Button8_Click
CheckBox1.Value = TRUE
TextBox3.text = 1
'' CheckBox4.Value = TRUE
''Timer1.Enabled = TRUE
ENDIF
IF joy_bt_down = 1 THEN
Button9_Click
CheckBox1.Value = TRUE
TextBox3.text = 1
'' CheckBox4.Value = TRUE
''Timer1.Enabled = TRUE
ENDIF
IF joy_bt_up = 0 AND IF joy_bt_down = 0 THEN CheckBox1.Value = FALSE
IF joy_x = 0 THEN CheckBox2.Value = FALSE
IF joy_y = 0 THEN CheckBox3.Value = FALSE
IF joy_x = 0 AND joy_y = 0 AND joy_bt_down = 0 AND joy_bt_up = 0 THEN Button6_Click
' joy_x = 0
'joy_y = 0
END
PUBLIC SUB Button15_Click()
Timer2.Enabled = TRUE
END
PUBLIC SUB Button16_Click()
Timer2.Enabled = FALSE
END
PUBLIC SUB Button17_Click()
WRITE #SerialPort1, Chr$(112)
END
PUBLIC SUB Button18_Click()
WRITE #SerialPort1, Chr$(113)
END
PUBLIC SUB Button19_Click()
WRITE #SerialPort1, Chr$(114)
END
PUBLIC SUB Button20_Click()
WRITE #SerialPort1, Chr$(115)
END
PUBLIC SUB Button21_Click()
WRITE #SerialPort1, Chr$(116)
END

180
FMain.form Normal file
View file

@ -0,0 +1,180 @@
# Gambas Form File 2.0
{ Form Form
MoveScaled(0,0,114,47)
Text = ("")
{ Button1 Button
MoveScaled(3,4,25,7)
Text = ("CONNECT")
}
{ SerialPort1 #SerialPort
#X = 686
#Y = 161
}
{ Timer1 #Timer
#X = 728
#Y = 161
Delay = 100
}
{ Button2 Button
MoveScaled(95,4,17,3)
Text = ("START")
}
{ Button3 Button
MoveScaled(95,8,17,3)
Text = ("STOP")
}
{ TextBox1 TextBox
MoveScaled(34,4,24,3)
Text = ("30")
}
{ Button4 Button
MoveScaled(60,4,34,3)
Text = ("CAS KROKU (20-100)")
}
{ TextBox2 TextBox
MoveScaled(34,8,24,3)
Text = ("15")
}
{ Button5 Button
MoveScaled(60,8,34,3)
Text = ("CAS CIKLU (1-200) ")
}
{ Button6 Button
MoveScaled(95,12,17,2)
Text = ("ODBRZDIT")
}
{ Button7 Button
MoveScaled(95,16,17,3)
Text = ("ZABRZDIT")
}
{ CheckBox1 CheckBox
MoveScaled(70,17,14,3)
Text = ("MOTOR A")
}
{ CheckBox2 CheckBox
MoveScaled(70,21,14,3)
Text = ("MOTOR B")
}
{ CheckBox3 CheckBox
MoveScaled(70,25,14,3)
Text = ("MOTOR C")
}
{ Button8 Button
MoveScaled(60,16,8,3)
Text = ("<<<")
}
{ Button9 Button
MoveScaled(85,16,9,2)
Text = (">>>")
}
{ Button10 Button
MoveScaled(60,21,8,3)
Text = ("<<<")
}
{ Button11 Button
MoveScaled(85,21,9,3)
Text = (">>>")
}
{ Button12 Button
MoveScaled(60,26,8,3)
Text = ("<<<")
}
{ Button13 Button
MoveScaled(85,26,9,3)
Text = (">>>")
}
{ TextBox3 TextBox
MoveScaled(3,21,15,3)
Text = ("500")
}
{ TextBox4 TextBox
MoveScaled(19,21,15,3)
Text = ("")
}
{ CheckBox4 CheckBox
MoveScaled(43,22,14,2)
Text = ("STEP COUNT")
}
{ Button14 Button
MoveScaled(3,26,55,3)
Text = ("OPEN + START SET")
}
{ TextBox5 TextBox
MoveScaled(26,17,32,3)
Text = ("SET COMMANDS")
Alignment = Align.Center
}
{ TextBox6 TextBox
MoveScaled(3,17,10,3)
Text = ("SET LINES")
Alignment = Align.Center
}
{ TextBox7 TextBox
MoveScaled(14,17,11,3)
Text = ("SET STEPS")
Alignment = Align.Center
}
{ TextBox8 TextBox
MoveScaled(3,13,55,3)
Text = (" -- SET INFO --")
Alignment = Align.Center
}
{ TextBox9 TextBox
MoveScaled(3,30,11,3)
Text = ("TextBox9")
}
{ TextBox10 TextBox
MoveScaled(15,30,11,3)
Text = ("TextBox10")
}
{ TextBox11 TextBox
MoveScaled(27,30,11,3)
Text = ("TextBox11")
}
{ TextBox12 TextBox
MoveScaled(39,30,11,3)
Text = ("TextBox12")
}
{ Timer2 #Timer
#X = 728
#Y = 203
Delay = 30
}
{ Button15 Button
MoveScaled(60,30,16,3)
Text = ("JOY START")
}
{ Button16 Button
MoveScaled(78,30,16,3)
Text = ("JOY STOP")
}
{ TextBox13 TextBox
MoveScaled(3,34,23,3)
Text = ("TextBox13")
}
{ TextBox14 TextBox
MoveScaled(27,34,23,3)
Text = ("TextBox14")
}
{ Button17 Button
MoveScaled(60,35,16,3)
Text = ("SERVO +")
}
{ Button18 Button
MoveScaled(78,35,16,3)
Text = ("SERVO -")
}
{ Button19 Button
MoveScaled(60,40,9,3)
Text = ("Servo 0")
}
{ Button20 Button
MoveScaled(71,40,11,3)
Text = ("Servo 90")
}
{ Button21 Button
MoveScaled(84,40,10,3)
Text = ("Servo 180")
}
}

62
Joystick.class Normal file
View file

@ -0,0 +1,62 @@
' Gambas class file
' Joystick.class - represents a HID game device containing
' one or more joysticks and buttons
'
' Copyright 2008 Rob Kudla, Binara, Inc. <rpm@kudla.org>
'
' This program is free software; you can redistribute it and/or modify
' it under the terms of the GNU General Public License version 2 as
' published by the Free Software Foundation.
PRIVATE jsdev AS Process
PUBLIC SUB _new(OPTIONAL device AS String)
IF device = "" THEN device = "/dev/input/js0"
' the interpreter dies when we try to read from /dev/input/js0 as a file
' saying "invalid argument", so we have to run cat
jsdev = EXEC ["cat", device] FOR READ AS "Device"
END
PUBLIC SUB Close()
' kill the cat process if it's still going
TRY jsdev.Kill
END
PUBLIC SUB Device_Read()
DIM stamp AS Integer
DIM value AS Short
DIM myevent AS Byte
DIM number AS Byte
DIM test AS String
' each joystick event produces 8 bytes
READ #jsdev, stamp, 4 ' 4 bytes
READ #jsdev, value, 2 ' 2 bytes
READ #jsdev, myevent, 1 ' 1 byte
READ #jsdev, number, 1 ' 1 byte
IF myevent AND 1 THEN ' button
IF value THEN ' pressed
PRINT "Got button press"
RAISE ButtonPress(number)
ELSE ' released
PRINT "Got button release"
RAISE ButtonRelease(number)
ENDIF
ELSE IF myevent AND 2 THEN ' joystick axis
RAISE StickMove(number, value)
ELSE
PRINT "Unhandled event: myevent is " & myevent
ENDIF
END
EVENT ButtonPress(ButtonNum AS Integer)
EVENT ButtonRelease(ButtonNum AS Integer)
EVENT StickMove(Axis AS Integer, Position AS Integer)