Experimental Physics and
| |||||||||||||||
|
Facing problem in calling/accessing SNL Function and global Pvs from C. Here is the example I tried. _________________________________________________________________ program cmcseq string CMC_STATUS; assign CMC_STATUS to "CMC_STATUS"; foreign ssId; // No monitoring // No options .... ss ss1 { state initial{ when(delay(5)){ printf("Calling cmcStatus... \n"); cmcStatus(ssId,"Hello",pvIndex(CMC_STATUS)); printf("Received status is %s\n", CMC_STATUS); }state default } .... } C Function is %%#include <stdio.h> %%#include <string.h> %%#include <stdlib.h> %{
void cmcStatus(SS_ID ssId,string msg, VAR_ID pvCmcStatus) {
strcpy(pvCmcStatus,msg); seq_pvPut(ssId,pvCmcStatus, ASYNC); } }% During Make Warnings are ; ^ ../cmcseq.stt:49:4: warning: implicit declaration of function ‘cmcStatus’ [-Wimplicit-function-declaration] cmcStatus("ss1","Hello",CMC_STATUS); ^ . . . ../cmcseq.stt:149:6: warning: conflicting types for ‘cmcStatus’ [enabled by default] void cmcStatus(SS_ID ssId,string msg, VAR_ID pvCmcStatus) { ^ ../cmcseq.stt:49:4: note: previous implicit declaration of ‘cmcStatus’ was here cmcStatus("ss1","Hello",CMC_STATUS); ^ ../cmcseq.stt: In function ‘cmcStatus’: ../cmcseq.stt:151:3: warning: passing argument 1 of ‘strcpy’ makes pointer from integer without a cast [enabled by default] strcpy(pvCmcStatus,msg); ^ printf("checking if all are connected USE pvConnecetd Count Function, Wait UNTIL lISTED PVS are c printf("checking if all are connected USE pvConnecetd Count Function, Wait UNTIL lISTED PVS are connected \n"); /* configure(&seq,&version); printf("Read Configuration parameter here, Calling File Read function %d %f \n", seq, version); */onnected \n"); /* configure(&seq,&version); printf("Read Configuration parameter here, Calling File Read function %d %f \n", seq, version); */ In file included from cmcseq.c:4:0: /usr/include/string.h:125:14: note: expected ‘char * __restrict__’ but argument is of type ‘VAR_ID’ extern char *strcpy (char *__restrict __dest, const char *__restrict __src) ^ /usr/bin/ar -rc libCMC_SEQSupport.a initTrace.o cmcseq.o /usr/bin/ranlib libCMC_SEQSupport.a The error during run time is . seq cmcseq, Sequencer release 2.1.16, compiled Sat Feb 22 20:11:22 2014 Spawning sequencer program "cmcseq", thread 0xd939e0: "cmcseq" cmcseq[0]: all channels connected & received 1st monitor epics> Calling cmcStatus... Segmentation fault (core dumped) Also, Where can I found sequencer Examples /tutorial, for accessing SNL_Function and Pvs in C. I am referring to Sequencer User Guide 2.1.16,already. Ganesh Jangir =====-----=====-----=====
| ||||||||||||||
ANJ, 17 Dec 2015 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |