Machsupport Forum
Mach Discussion => General Mach Discussion => Topic started by: Bit79 on January 16, 2012, 11:20:13 AM
-
Hello!
I have a cnc under mach3, equipped with optical lines and external DRO. The external DRO has RS232 port and it can send continuously the value of the 3 axis. I'd like to receive this values in mach3, when i push a button, so i can update mach3 DRO with value of external DRO.
For test I try to send data from mach3 to another PC with hyperterminal, and it work correctly using 'call sendsendserial'. I set RS232 proprieties in Config/Logic windows in mach3.
For receiving data i try to use this VB script:
data = "none"
q = 0
while data = "none"
q=q+1
if q=10 then
message "receive error"
exit sub
end if
settimer(1)
while gettimer(1)<0.5
wend
data=getfifoentry()
message data
wend
It must wait about 5 second testing the serial port, then if it doesn't receive data, show error message. I try to send some data to mach3 after script start, but it can't receive anything and after 5 second it show the error message. I think there are some bug in my script but i can't find them... could you help me?
Thank you!
-
Where can I find explanation for the instruction getfifoentry? I read all downloadable documentation, but I can't find it...
Thank you!
-
Hi - there are two types of serial interface to Mach (not counting modbus). One is the "standard" serial interface which consists of the single call of sendSerial(string) which has no counterpart for reading. The other is the so called "event driven serial" interface which consists of sendFIFO(string) and string = getfifoentry()
These need to be set up on the ports n pins dialog and via the menu function cfg's/serial monitor. Other than this AFAIK there is no documentation. I've used them successfully though so they do work.
One thread that may help is Reply #61 onwards in http://www.machsupport.com/forum/index.php/topic,18759.msg131496.html#msg131496 (http://www.machsupport.com/forum/index.php/topic,18759.msg131496.html#msg131496)
Hope this helps.
Ian
-
I solved the problem. I see it need CR caracter at the end of the receive string. Luckily the external DRO i will use include this caracter in the trasmission.
Thank you!
-
Now I have another problem.
I test VB script in VB editor of mach3 and it works correctly, but when i put in a pushbutton of a screen it doesn't work. I tryed a lot of different codes. Under VB editor they work, under pushbutton it fails when they receive CR caracter.
This is an example of simple code:
data=getfifoentry()
If data = "None" Then
message "receive error"
Else
message "receive ok"
End If
Under VB editor, if before launch program i send a CR caracter into serial port it shows "receive ok" message, else it show "receive error". This is ok.
But under pushbutton, without receive it shows "receive error" message, but i send the CR caracter to serial port the script fails, and it doesn't show any message. Where is the problem?
Thank you!
-
I tried to put the script in a macro, but I have the same problem.... without receive it shows "receive error" message correctly, but if I send CR, the script crashes...