gclib  1.37.6
Communications API for Galil controllers and PLCs
gcc (Linux)

The following instructions were performed on

$ uname -a
Linux localhost.localdomain 3.17.4-301.fc21.x86_64 #1 SMP Thu Nov 27 19:09:10 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ g++ --version
g++ (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)

Copy Files

$ mkdir test
$ cd test
$ tar -xzf /usr/share/doc/gclib/src/gclib_examples.tar.gz 
$ ls
x_arrays.cpp    x_gcommand.cpp    x_gmotioncomplete.cpp  x_programs.cpp
x_examples.cpp  x_ginterrupt.cpp  x_gread_gwrite.cpp     x_simple.c
x_examples.h    x_gmessage.cpp    x_grecord.cpp

x_simple.c

  • In a text editor, open x_simple.c. Find the GOpen() call and update the address to match the desired hardware. See the documentation for GOpen() for address formatting options.

Compile

$ gcc -Wall -Werror x_simple.c -lgclib -lgclibo -o simple

Run

$ ./simple 
rc: 0
version: 85.60.131
rc: 0
rc: 0
info: 10.1.3.17, DMC4020 Rev 1.2b, 291
rc: 0
response:  179340166.0000
:

x_examples.cpp

  • In a text editor, open x_examples.cpp. Find the GOpen() call and update the address to match the desired hardware. See the documentation for GOpen() for address formatting options. Don't forget -s ALL if data records, interrupts, and messages are to be tested.
  • Find the #if 0 preprocessor block enclosing the example calls. Change to #if 1 to run the examples. Comment out the function calls to be avoided. Note some calls attempt to move motors and not all functions are compatible with all Galil products.

Compile

$ g++ x_*.cpp -lgclib -lgclibo -o example

Run

$./example Library version: 85.60.131

10.1.3.17, DMC4020 Rev 1.2b, 291


Example GRead() and GWrite() usage


Read 155 QR bytes.


Example GCommand() usage


Revision report, ^R^V DMC4020 Rev 1.2b :

Command Values val is 10 val is 11 val is 3.1415 val is 9.869

Command Trimming > 179798738.0000 :< > 179798738.0000< >179798738.0000<

Receiving Binary Data QR read 155 bytes

Error handling QD correctly trapped, not allowed, try GArrayDownload() DL correctly trapped, not allowed, try GProgramDownload()

Modifying timeout Burning program...OK


Example GProgramDownload() and GProgramUpload() usage


GProgramDownload() correctly errored. Can't fit with level 3 compression Program Downloaded with compression level 4 Uploading program: #A;i=0;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1 i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;EN

Program executed as expected


Example GArrayDownload(), GArrayUploadFile() GArrayDownloadFile(), and GArrayUpload usage


2.0000, 4.0000, 6.0000, 8.0000, 10.0000, 12.0000, 14.0000, 16.0000, 18.0000, 20.0000

2.0000, 1.0000, 3.0000, 5.0000, 10.0000, 12.0000, 14.0000, 16.0000, 18.0000, 20.0000

3.0000, 5.0000, 10.0000 2.0000, 1.0000, 3.0000, 5.0000, 10.0000, 12.0000, 14.0000, 16.0000, 18.0000, 20.0000


Example GRecord() usage


QR-based data record 36100 6000

DR-based data record 36204 36306 36408 36510 36612 36714 36816 36918 37020 37122 37224

QR-based data record with offsets 37224 37224


Example GMessage() usage


0.0000 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000


Example GInterrupt() usage


"UI 8" executed.


Example GMotionComplete() usage


Position: 0, 0 Beginning independent motion... Motion Complete on A Position: 8000, 0

Position: 0, 0 Beginning vector motion... Motion Complete on vector plane S Position: 6000, 0

examples.cpp executed OK main() is finished. Press Enter to exit: