CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

passing variables in kbhit

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
mutthunaveen



Joined: 08 Apr 2009
Posts: 100
Location: Chennai, India

View user's profile Send private message

passing variables in kbhit
PostPosted: Tue Dec 16, 2014 9:14 am     Reply with quote

Hello Board

1. is it possible to pass variables in kbhit instead of stream

2. here is the brief code - correct me plz

Code:

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, STREAM=sp0, FORCE_SW)
#use rs232(baud=9600, rcv=PIN_D0, STREAM=sp1, FORCE_SW)
#use rs232(baud=9600, rcv=PIN_D1, STREAM=sp2, FORCE_SW)
#use rs232(baud=9600, rcv=PIN_D2, STREAM=sp3, FORCE_SW)
#use rs232(baud=9600, rcv=PIN_D3, STREAM=sp4, FORCE_SW)


serial ports forced SW


Code:

#DEFINE SIZE_COMMAND    5   // Sets the Max command Length including '\0'
#DEFINE TOTAL_STRINGS   5   // Total number of Searchable strings

      const char serial_val[TOTAL_STRINGS][SIZE_COMMAND]={
                                                             "sp0\0",               
                                                             "sp1\0",
                                                             "sp2\0",
                                                             "sp3\0",
                                                             "sp4\0",
                     };


above is the variable that im going to use for passing to kbhit

Code:
extract_serial_data(0);

above is the function im using for calling serial port "0" -> sp0
Code:
extract_serial_data(int val){

fprintf(sp0,"%s\r\n",serial_val[val]);

   if(kbhit(serial_val[val])){


fprintf works well it shows the good string as "sp0"

but im getting this error while executing this command -> Stream must be a constant in the valid range ::

im using compiler version - 4.078
Ttelmah



Joined: 11 Mar 2010
Posts: 19537

View user's profile Send private message

PostPosted: Tue Dec 16, 2014 9:45 am     Reply with quote

The key is the 'constant'. No you can't use a variable. The stream name is a pre-processor directive that tells the command to generate the code for the selected stream.

If you want to have a universal function, you would have to write your own wrapper function 'my_kbhit' for example, which takes a value for the stream (a define, or an enum), and then uses a switch.. case, to select each of the possible streams. This way all five sets of code will be generated in the function, and you just select between them. It is the fact that the stream name specifies the code to be generated, which prevents a variable being used. If a variable was allowed, every serial function would have to contain the code for every stream....
mutthunaveen



Joined: 08 Apr 2009
Posts: 100
Location: Chennai, India

View user's profile Send private message

Thanks for the reply
PostPosted: Tue Dec 16, 2014 10:55 am     Reply with quote

thanks for your reply and suggestion.. i split my code then....
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group