Hello Guest it is March 28, 2024, 03:53:14 PM

Author Topic: Coordinates reading from RS232  (Read 5409 times)

0 Members and 1 Guest are viewing this topic.

Coordinates reading from RS232
« 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!
Re: Coordinates reading from RS232
« Reply #1 on: January 19, 2012, 09:05:33 AM »
Where can I find explanation for the instruction getfifoentry? I read all downloadable documentation, but I can't find it...

Thank you!

Offline stirling

*
  • *
  •  2,188 2,188
  • UK
    • View Profile
    • www.razordance.co.uk
Re: Coordinates reading from RS232
« Reply #2 on: January 19, 2012, 11:43:03 AM »
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

Hope this helps.

Ian
Re: Coordinates reading from RS232
« Reply #3 on: January 26, 2012, 02:16:20 PM »
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!
Re: Coordinates reading from RS232
« Reply #4 on: January 26, 2012, 03:26:07 PM »
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!
Re: Coordinates reading from RS232
« Reply #5 on: February 01, 2012, 03:31:02 AM »
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...