Home
Downloads
Mach3
Plugins
CAM Post Processors
Screensets
Purchase
Support
Forum
Tutorial Videos
Documentation
Yahoo Group
Mach Wiki
Resources
Contact Us
Links
CNCZone
German Forum
Italian Forum
Korean Forum
Portugese (Brazil) Forum
Russian Forum (RSK CNCROUTER)
Thai Forum
Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email?
May 28, 2012, 12:15:13 PM
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
Search:
Advanced search
Select from and to languages
Chinese-simp to English
Chinese-trad to English
English to Chinese-simp
English to Chinese-trad
English to Dutch
English to French
English to German
English to Greek
English to Italian
English to Japanese
English to Korean
English to Portuguese
English to Russian
English to Spanish
Dutch to English
Dutch to French
French to English
French to German
French to Greek
French to Italian
French to Portuguese
French to Dutch
French to Spanish
German to English
German to French
Greek to English
Greek to French
Italian to English
Italian to French
Japanese to English
Korean to English
Portuguese to English
Portuguese to French
Russian to English
Spanish to English
Spanish to French
Machsupport Forum
Mach Discussion
General Mach Discussion
Serial Port control under cypress enable
Pages:
1
2
»
Go Down
« previous
next »
Author
Topic: Serial Port control under cypress enable (Read 2878 times)
0 Members and 1 Guest are viewing this topic.
The_black_cat_dies
Active Member
Offline
Posts: 14
Serial Port control under cypress enable
«
on:
August 22, 2007, 11:28:04 AM »
Hi
I have been trying for some time now to get the serial control to work reliably sending a file "900 bytes text" to my Boxford Duet. When I use the VB script editor and run it, it works perfectly however when I run a G code file and include it as a macro "M20" it stalls after 20-30 bytes, I have HyperTerminal observing the output. Also Mach seems to want to run the macro immediately the G code is loaded, what am I doing wrong I include the small macro I have written.
Sub intialise_boxford()
message "Initialising Boxford"
For count = 1 To 255 ' Clear buffer seems to help
x = getfifoentry()
Next count
Open "c:\mach3\duet.dat" For Input As #1 ' Open file.
Do While Not EOF(1) ' Loop until end of file.
char = Input (1,#1) ' Read value into variable.
Call sendfifo(char)
Loop
message "Boxford Initialised"
Close #1 ' Close file.
End Sub
Any help would be gratefully appreciated, as this is frustrating as I’m very close to getting everything running.
Logged
poppabear
S S SYSTEMS, LLC
Global Moderator
Offline
Posts: 1,707
Briceville, TN, USA
Re: Serial Port control under cypress enable
«
Reply #1 on:
August 22, 2007, 04:45:14 PM »
Since your running that as a macro, mach will run it all out, and then keep on going on the Gcode.
What you might have to do is put a "control bit" in your Macro.
At the end of your Macro put:
SystemWaitFor(INPUT#) 'pick a input number
In your serial file, also toward the end before the line above, have it send some command that the machine has to activate some output
that come in on: INPUT#, Mach will pause and wait in your maco, until you machine recieves the full file, since at the end of that file, it will
trigger your physical machine to send to Mach a "I got it", bit. Once the system wait gets that bit (INPUT#) going active, it will drop out of the macro and continue executing your Gcode.
Scott
Logged
Commercial Mach3: Screens (regular and flash), Wizards, Plug-ins, Brains, PLCs, Macros, ATC's, machine build, retrofit and Prototyping
http://sites.google.com/site/volunteerfablab/
The_black_cat_dies
Active Member
Offline
Posts: 14
Re: Serial Port control under cypress enable
«
Reply #2 on:
August 23, 2007, 06:50:24 AM »
Hi Thanks for that poppabear I see your point but that isn't the problem, the macro as it was just would not work when running in a script.
I managed to get the file to write to serial by using the following
Sub intialise_boxford()
For i = 1 To 100
getfifoentry()
Next i ' clear input buffer if there is one?
message "Initialising Boxford" ' Start message
Open "c:\mach3\duet.dat" For Input As #1 ' Open file.
Do While Not EOF(1) ' Loop until end of file.
outint = Asc(Input (1,#1)) ' Read byte into variable.
PutPortByte(1016,outint) ' write byte to COM1 Low level but works
GetFIFOentry() ' either adds delay or clears buffer ?
Loop ' Get another byte
message "Boxford Initialised" ' completiion message
playwave "c:\tada.wav" ' file has been sent works :-)
Close #1 ' Close file. ' Close file "Duet.dat"
For i = 1 To 1000000 ' delay give message time to be seen
Next i
message "" ' clear messages off screen
End Sub
Although this works, I think I need to check the transmit status bit on the serial port instead of the (GetFIFOentry()) which I think is just adds a delay, this is a major success and I will be moving on the receiving data soon. however Mach still seems to want to show all messages within the macro when the G code file is loaded, this is stange it doesn't appear to actually run any code it just displays the messages ?
any ideas greatfully received also are the macros running in their own thread ie multitasking?
Logged
poppabear
S S SYSTEMS, LLC
Global Moderator
Offline
Posts: 1,707
Briceville, TN, USA
Re: Serial Port control under cypress enable
«
Reply #3 on:
August 23, 2007, 07:15:51 AM »
Since you running this script in a Macro, and you want some pauses use this instead (where ever you need pauses)
Code "G4 P1" 'P=seconds (You can use partial seconds)
While IsMoving()
Wend
For your Messages tie them into some kind of:
If (event) Then
Message("")
End If
***NOTE: as far as I am currently aware of Mach can only SEND serial stuff NOT receive it....You might want to ask Brian about getting the serial to recieve...........Thats why, I had your transmissions from the machine comming in on other inputs.
Scott
Logged
Commercial Mach3: Screens (regular and flash), Wizards, Plug-ins, Brains, PLCs, Macros, ATC's, machine build, retrofit and Prototyping
http://sites.google.com/site/volunteerfablab/
Whacko
Active Member
Offline
Posts: 240
Happy Days
Re: Serial Port control under cypress enable
«
Reply #4 on:
August 23, 2007, 12:24:53 PM »
Have you got the modbus option enabled? Also, out of the Mach3 environment, serial I think is only supported with modbus protocol, and includes CRC. That could be why you only get X amount of bytes out. Just a thought, I may be way out.
Whacko
Logged
Nothing's impossible
The_black_cat_dies
Active Member
Offline
Posts: 14
Re: Serial Port control under cypress enable
«
Reply #5 on:
August 23, 2007, 01:32:12 PM »
Hi
Thanks for the input, I now have mach sending the file using the last bit of script. What may be of of interest to you all is that Mach will receive serial through the VB script, if you plug into another PC using a NULL modem cable and run hyperterminal then run this on your Mach machines VB script.
For i = 1 to 1000
x = getportbyte(1016) ' Assumes you are using COM1 at &h3F8
putpportbyte(1016)
next i
You will see that every key you press on the terminal PC will be returned to the terminal PC via the VB script of Mach, not very usefull at the momment but just shows bi directional communication is possible, if I can now find the data flow control bits I think it will be possible that Mach can talk to any serially controlled hardware I hope :-)
Logged
Whacko
Active Member
Offline
Posts: 240
Happy Days
Re: Serial Port control under cypress enable
«
Reply #6 on:
August 23, 2007, 05:54:10 PM »
The file you want to send, is it constantly appended in the Mach3 environment? Remember, running a script is part of the OS and you could even do the same by running it on it's own without starting Mach3 in a .vbs file. What you are doing now is been taken care of by the OS via the VB Script engine and is meaningless to Mach3.
Whacko
Logged
Nothing's impossible
The_black_cat_dies
Active Member
Offline
Posts: 14
Re: Serial Port control under cypress enable
«
Reply #7 on:
August 24, 2007, 11:48:35 AM »
Hi
the file is a simple text file containing the microcode for the Boxford Duet the program simple reads it out byte by byte.
The Boxford duet requires that a file is sent to the machine to initialise it, it is more than usefull to do this within the Mach environment as I wish to fuilly integrate the Duet and it works!, on the subject of serial reads the macro may or may not be able to be understood by Mach but I believe the macro can understand Mach variables and that is all I need as the duet also sends details of gaurd positon, I need to receive one or two bytes just to confirm that the gaurd is in place I am sure I can poke a few bits to acheive this. I have only just within thae last few days started programing with the Macros so I need ideas of what can be acheived. Is the macro multitasking in its own thread?
Cheers
Logged
Whacko
Active Member
Offline
Posts: 240
Happy Days
Re: Serial Port control under cypress enable
«
Reply #8 on:
August 24, 2007, 12:16:21 PM »
I just want to clear something, is this file only sent at initialisation and not again, or should it be sent whenever the gaurd has been opened/closed/moved?.
The macro will be executed by Mach3 depending on how you implement it. MultiTasking is part of the Windows OS, maybe I don't understand what you mean. I think you want to know if once the macro is started, it will run independantly not under the control of Mach3. You can send the file via your serial port with the VBScript, but you will have to choose a second port if you are using the modbus with Mach3.
I unfortunately do not have experience with the Boxford, but I have lots of experience with serial ports etc.
You can even invoke another process from the VBScript that will run as a thread on its own.
I will try to help you if you give me some more info. The VBScript in Mach3 is actually the proper Windows OS Script engine, and the Cypress information is limited, you can use the MSDN help file for VBScript. There is a lot of possibilities.
Whacko
Logged
Nothing's impossible
The_black_cat_dies
Active Member
Offline
Posts: 14
Re: Serial Port control under cypress enable
«
Reply #9 on:
August 25, 2007, 05:23:23 AM »
Hi
Thanks for that I will not be using Modbus so I have a dedicated serial port to the Boxford, I will be looking for anything that helps
The general idea is :-
1) start Mach
2) load G code file
The G code File then includes
3) Initialise Boxford Macro ( this is the one we are talking about)
4) Send speed control to Boxford (next TODO list )
5) Get gaurd information/ speed ( continually)
5) run G code
The initialise_boxford part of the macro is run only once at the beginning of work( does not need to be sent again unless the machine is switched off/on), if the boxford is already initialised then it will be programmed not to do it again, I do intend however to have this macro home the axis and basically set the machine up, the Guard postion is also found ( closed / open) and dependant on this I can run the rest of the G code or not, it would be nice however for a gaurd open to control a stop, this means having a serial reception running all the time, I have run out of inputs in mach so I can't use hardware.
The Boxford speed control is also set by serial commands these I will attach to the relevant macro, the spindle speed is reported back by serial @ once a second but as I have already interfaced the spindle read to Mach so it is not that important.
I have the initialise script written, however this does not yet check that the initialisation has already been done, I dropped the messages as they pop up even before the macro is run?
*****************************************************************************************
Sub intialise_boxford() ' Boxford Duet1 9600 8 data 1 stop even parity
'******************************** file send routine *****************************
message "Initialising Boxford"
Open "c:\mach3\duet.dat" For Input As #1 ' Open file.
Do While Not EOF(1) ' Loop until end of file.
outint = Asc(Input (1,#1)) ' Read value into variable.
loop_1: If (getportbyte(1021) And 32)<>0 Then 'Line Status Register bit 5 TX holding reg empty
putportbyte(1016,outint) 'This is the TX register
Else
GoTo loop_1
End If
Loop
message "Boxford Initialised"
playwave "c:\tada.wav"
Close #1 ' Close file.
'***********************************************************************************
End Sub
**** The read macro looks at the momment like this it's saving to a file so I can see the results
***************************************************************
' This works and reads just the available serial byte received
Open "c:\mach3\Dout.dat" For Output As #1 ' Open file.
For i = 1 To 10000
If (getportbyte(1021) And 1) <> 0 Then ' receive status register
inbyte = getportbyte(1016)
Print #1,inbyte
End If
Next i
*************************************************************
Thanks Again
Logged
Pages:
1
2
»
Go Up
« previous
next »
Jump to:
Please select a destination:
-----------------------------
Mach Discussion
-----------------------------
=> General Mach Discussion
=> Mach3 under Vista
=> Quantum
=> Mach SDK plugin questions and answers.
===> Finished Plugins for Download
=> VB and the development of wizards
=> Brains Development
=> Video P*r*o*b*i*n*g
=> Mach Screens
===> Screen designer tips and tutorials
===> Works in progress
===> Finished Screens
===> Flash Screens
===> JetCam screen designer
===> Machscreen Screen Designer
===> CVI MachStdMill (MSM)
=> Feature Requests
=> Non English Forums
===> Italian
===> French
===> Spanish
===> Chinese
===> German
===> Russian
===> Romanian
===> Japanese
===> Vietnamese
=> FAQs
-----------------------------
*****VIDEOS*****
-----------------------------
=> *****VIDEOS*****
-----------------------------
General CNC Chat
-----------------------------
=> Share Your GCode
=> Show"N"Tell ( What you have made with your CNC machine.)
=> Building or Buying a Wood routing table.. Beginnners guide..
=> Show"N"Tell ( Your Machines)
-----------------------------
G-Code, CAD, and CAM
-----------------------------
=> G-Code, CAD, and CAM discussions
=> LazyCam (Beta)
-----------------------------
Third party software and hardware support forums.
-----------------------------
=> LazyTurn
=> GearoticMotion Preliminary testing
=> Tempest Trajectory Planner
=> Contec
=> dspMC/IP Motion Controller
=> HiCON Motion Controller
=> Third party software and hardware support forums.
=> Galil
=> Newfangled Solutions Wizards
=> Mach3 and G-Rex
=> Mesa
=> Modbus
=> NC Pod
=> PoKeys
=> SmoothStepper USB
=> Sieg Machines
=> Promote and discuss your product
-----------------------------
Tangent Corner
-----------------------------
=> Tangent Corner
=> Competitions
=> Polls
=> Bargain Basement
-----------------------------
Support
-----------------------------
=> Downloads
===> XML files
===> Post Processors
===> Macros
===> Tutorials
===> Others
===> Beta Brains
===> Screen Sets
===> Documents
===> MACH TOOL BOX
=> One on one phone support.
=> Forum suggestions and report forum problems.
-----------------------------
Mach4
-----------------------------
=> Mach4 pre-Alpha Testing
Loading...