Host Controlled Operation
In this mode the host will
send a series of ASCII commands to the controller over the RS-232 serial port.
The controller process to the incoming commands and responses with the proper
messages.
Programming Example in Visual BASIC
The following example sets the linear
acceleration to 500,000 Steps / sec2 , step rate at 100 KHz, and the
distance to travel equal to 200,000 steps. Then the controller is commanded to
make an absolute move on the X Axis.
Private SubCommand1_Click()
'Function Prototype
Declare Function SioPuts Lib "WSC32.DLL" (ByVal Port As Long, ByVal Buffer As String, ByVal Size As Long) As Long
Dim Code As Long
Dim StringToBeTransmtd As String
'Disable the joystick.
StringToBeTransmtd = "joff" + vbCr
Code = SioPuts(ThePort, StringToBeTransmtd, Len(StringToBeTransmtd))
' Set the linear acceleration of X Axis to 500,000 steps / sec / sec
StringToBeTransmtd = "accx 500000" + vbCr
Code = SioPuts(ThePort, StringToBeTransmtd, Len(StringToBeTransmtd))
' Set the linear velocity of X Axis to 100,000 steps / sec
StringToBeTransmtd = "velx 100000" + vbCr
Code = SioPuts(ThePort, StringToBeTransmtd, Len(StringToBeTransmtd))
' Set the position to move of X Axis to 200,000 steps
StringToBeTransmtd = "posx 200000" + vbCr
Code = SioPuts(ThePort, StringToBeTransmtd, Len(StringToBeTransmtd))
'Command the X Axis of the controller to make an absolute move
StringToBeTransmtd = "movax" + vbCr
Code = SioPuts(ThePort, StringToBeTransmtd, Len(StringToBeTransmtd))
End Sub
Programming Example in 'C'
The following example sets the
acceleration at 10 Million Steps / sec2 , step rate at 100 KHz,
and the distance to travel equal to 100,000 steps. Then the controller isCommanded to make an absolute move.
void send_command(void)
{
char StringToBeTransmtd[80];
// Disable the joystick
strcpy(StringToBeTransmtd,"joff\n");
SioPuts(Port,StringToBeTransmtd,strlen(StringToBeTransmtd));
// Set the linear acceleration of X Axis to 500,000 steps / sec / sec
strcpy(StringToBeTransmtd,"accx 500000\n");
SioPuts(Port,StringToBeTransmtd,strlen(StringToBeTransmtd));
// Set the linear velocity of X Axis to 100,000 steps / sec
strcpy(StringToBeTransmtd,"velx 100000\n");
SioPuts(Port,StringToBeTransmtd,strlen(StringToBeTransmtd));
// Set the position to move of X Axis to 200,000 steps
strcpy(StringToBeTransmtd,"posx 200000\n");
SioPuts(Port,StringToBeTransmtd,strlen(StringToBeTransmtd));// 'Command the X Axis of the controller to make an absolute move
strcpy(StringToBeTransmtd,"movax\n");
SioPuts(Port,StringToBeTransmtd,strlen(StringToBeTransmtd));
}
The following is the information that you need to establish communication with OES line of controllers.
1) The baud rate is 19.2 K, 8-bit, no parity, one stop bit.
2) The Request-to-Send (RTS) of the serial port is used to reset the controller card. During initialization you would have to set this line to CLEAR.
3) To reset the controller, set the line to SET wait for at least 10 msec, then set it back to CLEAR.
4) ASCII characters should be terminated with CR or LF.
5) After sending each packet of data to the OES’ controller, sufficient time
should be given to the controller to process it, usually 100msec.
To receive characters, a buffer is setup and all the incoming characters are stored in it until they are fetched by the application.
The following commands the X-axis to stop, and checks the receiving buffer for “X Stopping” string to make sure the X-axis has received and performed theCommand.
Private Sub cmdXPlus_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim S As String
Dim Start As Single
Dim Counter As Integer
Dim Where As Long
StringToBeTransmtd = "stopx"
& vbCr
Do While (Counter < NoofRetries And Where = 0)
Code = SioPuts(ThePort, StringToBeTransmtd, Len(StringToBeTransmtd))
Start = Timer()
Do While Timer() < Start + DelayTime
DoEvents ' Yield to other processes.
Loop
Where =
InStr(strRcvdMsg, "X Stopping")
Counter = Counter + 1
Loop
If (Counter >= NoofRetries)
Then
If MsgBox("The controller is not responding! Turn the controller's
power off.", vbOKOnly, "Error46") = vbOK Then Exit Sub
End If
End Sub
To test, send JON. You should receive “Joystick is on”.
Send JOFF. You should receive “Joystick is off”.
Copyright © 2002 - 2014 Optimal Engineering Systems, Inc.