Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Error: expected constructor, destructor, or type conversion before ';' token

  1. Mar 4, 2012 #1
    I'm newbie in C programming...
    i'm trying to make my arduino board works but still find error when compiling the C programming, the errors are:

    driving7segmentusingmultipleshiftregisters3:2: error: expected constructor, destructor, or type conversion before ';' token
    driving7segmentusingmultipleshiftregisters3:85: error: ISO C++ forbids declaration of 'sendSerialDatainitial' with no type
    driving7segmentusingmultipleshiftregisters3.cpp: In function 'int sendSerialDatainitial()':
    driving7segmentusingmultipleshiftregisters3:95: error: assignment of read-only variable 'g_pinCommLatch1'
    driving7segmentusingmultipleshiftregisters3:96: error: expected `;' before 'g_pinCommLatch2'
    driving7segmentusingmultipleshiftregisters3:99: error: expected `;' before ')' token
    driving7segmentusingmultipleshiftregisters:127: error: expected `}' at end of input


    Code (Text):

    sendSerialDataInitial (void);
    void setup();

    int switchPin1 = A0;
    int switchPin2 = A2;
    int switchPin3 = A4;
    int resetPin1  = A1;
    int resetPin2  = A3;
    int resetPin3  = A5;
    int no1=1;
    int no2=1;
    int no3=1;

    // This pin gets sets low when I want the 595s to listen
    const int  g_pinCommLatch1 = 5;
    const int  g_pinCommLatch2 = 6;
    const int  g_pinCommLatch3 = 7;

    // This pin is used to pass the next bit
    const int  g_pinData1    = 8;
    const int  g_pinData2    = 9;
    const int  g_pinData3    = 10;

    // This pin is used by ShiftOut to toggle to say there's another bit to shift
    const int  g_pinClock1     = 11;
    const int  g_pinClock2     = 12;
    const int  g_pinClock3     = 13;

    // Definitions of the 7-bit values for displaying digits
    byte g_digits [10];

    // Current number being displayed
    int g_numberToDisplay1 = 0;
    int g_numberToDisplay2 = 0;
    int g_numberToDisplay3 = 0;

    // Number of shift registers in use
    const int g_registers = 5;

    // Array of numbers to pass to shift registers
    byte g_registerArray [g_registers];

    byte *pValueArray1;
    byte *pValueArray2;
    byte *pValueArray3;
    byte reg1;
    byte reg2;
    byte reg3;
    byte value1;
    byte value2;
    byte value3;
    byte bitMask1;
    byte bitMask2;
    byte bitMask3;



    void setup()
    {
      pinMode (g_pinCommLatch1, OUTPUT);
      pinMode (g_pinCommLatch2, OUTPUT);
      pinMode (g_pinCommLatch3, OUTPUT);
      pinMode (g_pinClock1, OUTPUT);
      pinMode (g_pinClock2, OUTPUT);
      pinMode (g_pinClock3, OUTPUT);
      pinMode (g_pinData1, OUTPUT);
      pinMode (g_pinData2, OUTPUT);
      pinMode (g_pinData3, OUTPUT);
     
      // Setup the digits array
      g_digits [0] = 1 + 2 + 4 + 8 + 16 + 32 + 00;
      g_digits [1] = 0 + 2 + 4 + 0 + 00 + 00 + 00;
      g_digits [2] = 1 + 2 + 0 + 8 + 16 + 00 + 64;
      g_digits [3] = 1 + 2 + 4 + 8 + 00 + 00 + 64;        
      g_digits [4] = 0 + 2 + 4 + 0 + 00 + 32 + 64;              
      g_digits [5] = 1 + 0 + 4 + 8 + 00 + 32 + 64;        
      g_digits [6] = 1 + 0 + 4 + 8 + 16 + 32 + 64;
      g_digits [7] = 1 + 2 + 4 + 0 + 00 + 00 + 00;                  
      g_digits [8] = 1 + 2 + 4 + 8 + 16 + 32 + 64;
      g_digits [9] = 1 + 2 + 4 + 8 + 00 + 32 + 64;    
     
     }

    sendSerialDatainitial(void)
      {  g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [0];
        g_registerArray [1] = g_digits [0];
        g_registerArray [0] = g_digits [0];
       
         
      // Signal to the 595s to listen for data
      digitalWrite (g_pinCommLatch1,LOW);
      g_pinCommLatch1=LOW
      g_pinCommLatch2=LOW
      g_pinCommLatch3=LOW
     
      for (reg1 = registerCount1; reg1 > 0; reg1--)
      {
        byte value1 = pValueArray1 [reg1-1];

        for (byte bitMask1 = 128; bitMask1 > 0; bitMask1 >>= 1)
        {
          digitalWrite (g_pinClock1, LOW);
       
          digitalWrite (g_pinData1, value1 & bitMask1 ? HIGH : LOW);
           
          digitalWrite (g_pinClock1, HIGH);
        }
      }
     
      for (byte reg2 = registerCount2; reg2 > 0; reg2--)
      {
        byte value2 = pValueArray2 [reg2-1];

        for (byte bitMask2 = 128; bitMask2 > 0; bitMask2 >>= 1)
        {
          digitalWrite (g_pinClock2, LOW);
       
          digitalWrite (g_pinData2, value2 & bitMask2 ? HIGH : LOW);
           
          digitalWrite (g_pinClock2, HIGH);
        }
      }
     
      for (byte reg3 = registerCount3; reg3 > 0; reg3--)
      {
        byte value3 = pValueArray3 [reg3-1];

        for (byte bitMask3 = 128; bitMask3 > 0; bitMask3 >>= 1)
        {
          digitalWrite (g_pinClock3, LOW);
       
          digitalWrite (g_pinData3, value3 & bitMask3 ? HIGH : LOW);
           
          digitalWrite (g_pinClock3, HIGH);
        }
      }
     
      // Signal to the 595s that I'm done sending
      digitalWrite (g_pinCommLatch1, HIGH);
      digitalWrite (g_pinCommLatch2, HIGH);
      digitalWrite (g_pinCommLatch3, HIGH);

      }

    Tombol:
      GoSub Blinks
     
      if switchPin1=1 and a=1 then
      GoSub Counter1
      a=0
      elseif switchPin1=0 and a=0 then
      a=1
      end if

      if switchPin2=1 and b=1 then
      GoSub Counter2
      b=0
      elseif switchPin2=0 and b=0 then
      b=1
      end if
     
      if switchPin3=1 and c=1 then
      GoSub Counter3
      c=0
      elseif switchPin3=0 and c=0 then
      c=1
      end if

      if resetPin1=1 and a=1 then
      GoSub reset1
      end if

      if resetPin2=1 and a=1 then
      GoSub reset2
      end if
     
      if resetPin3=1 and a=1 then
      GoSub reset3
      end if

    GoSub Show1
    GoSub Show2
    GoSub Show3
    GoSub SendSerialData1
    GoSub SendSerialData2
    GoSub SendSerialData3
    delay(1000
    GoSub Tombol

    Blinks:
      int a = random (1,3);
      int b = random (1,4);
      int c = random (1,5);
     
      if (a==3)
        digitalWrite(2, HIGH);   // set the LED on
        end if
       
       if (b==3)
        digitalWrite(3, HIGH);   // set the LED on
        end if
     
       if (c==3)
        digitalWrite(3, HIGH);   // set the LED on
        end if
       
       return
       

    Counter1:
      g_numberToDisplay1 = no1;
      no1=no1+1;
      return

    Counter2:
      g_numberToDisplay2 = no2;
      no2=no2+1;
      return
     
    Counter3:
      g_numberToDisplay3 = no3;
      no3=no3+1;
      return
     
    Reset1:
      gnumberToDisplay1 = no1;
      no1=0
      return
     
    Reset2:
      gnumberToDisplay2 = no2;
      no2=0
      return

    Reset3:
      gnumberToDisplay3 = no3;
      no3=0
      return
       
    show1:
      if (g_numberToDisplay1 < 10)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [0];
        g_registerArray [1] = g_digits [0];
        g_registerArray [0] = g_digits [g_numberToDisplay1];
      }
      else if (g_numberToDisplay1 < 100)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [0];
        g_registerArray [1] = g_digits [g_numberToDisplay1 / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay1 % 10];
      }
      else if (g_numberToDisplay1 < 1000)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [g_numberToDisplay1 / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay1 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay1 % 10];
      }
      else if (g_numberToDisplay1 < 10000)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [g_numberToDisplay1 / 1000];
        g_registerArray [2] = g_digits [(g_numberToDisplay1 % 1000) / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay1 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay1 % 10];
      }
      else
      {
        g_registerArray [4] = g_digits [g_numberToDisplay1 / 10000];
        g_registerArray [3] = g_digits [(g_numberToDisplay1 % 10000) / 1000];
        g_registerArray [2] = g_digits [(g_numberToDisplay1 % 1000) / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay1 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay1 % 10];    
      }
      return
     
    show2:
      if (g_numberToDisplay2 < 10)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [0];
        g_registerArray [1] = g_digits [0];
        g_registerArray [0] = g_digits [g_numberToDisplay2];
      }
      else if (g_numberToDisplay2 < 100)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [0];
        g_registerArray [1] = g_digits [g_numberToDisplay2 / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay2 % 10];
      }
      else if (g_numberToDisplay2 < 1000)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [g_numberToDisplay2 / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay2 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay2 % 10];
      }
      else if (g_numberToDisplay2 < 10000)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [g_numberToDisplay2 / 1000];
        g_registerArray [2] = g_digits [(g_numberToDisplay2 % 1000) / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay2 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay2 % 10];
      }
      else
      {
        g_registerArray [4] = g_digits [g_numberToDisplay2 / 10000];
        g_registerArray [3] = g_digits [(g_numberToDisplay2 % 10000) / 1000];
        g_registerArray [2] = g_digits [(g_numberToDisplay2 % 1000) / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay2 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay2 % 10];    
      }
      return
     
    show3:
      if (g_numberToDisplay3 < 10)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [0];
        g_registerArray [1] = g_digits [0];
        g_registerArray [0] = g_digits [g_numberToDisplay3];
      }
      else if (g_numberToDisplay3 < 100)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [0];
        g_registerArray [1] = g_digits [g_numberToDisplay3 / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay3 % 10];
      }
      else if (g_numberToDisplay3 < 1000)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [0];
        g_registerArray [2] = g_digits [g_numberToDisplay3 / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay3 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay3 % 10];
      }
      else if (g_numberToDisplay3 < 10000)
      {
        g_registerArray [4] = g_digits [0];
        g_registerArray [3] = g_digits [g_numberToDisplay3 / 1000];
        g_registerArray [2] = g_digits [(g_numberToDisplay3 % 1000) / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay3 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay3 % 10];
      }
      else
      {
        g_registerArray [4] = g_digits [g_numberToDisplay3 / 10000];
        g_registerArray [3] = g_digits [(g_numberToDisplay3 % 10000) / 1000];
        g_registerArray [2] = g_digits [(g_numberToDisplay3 % 1000) / 100];
        g_registerArray [1] = g_digits [(g_numberToDisplay3 % 100) / 10];
        g_registerArray [0] = g_digits [g_numberToDisplay3 % 10];    
      }
      return
     
    sendSerialData1:
    // Signal to the 595s to listen for data
      digitalWrite (g_pinCommLatch1, LOW);
     
      for (byte reg1 = registerCount1; reg1 > 0; reg1--)
      {
        byte value1 = pValueArray1 [reg1 - 1];

        for (byte bitMask1 = 128; bitMask1 > 0; bitMask1 >>= 1)
        {
          digitalWrite (g_pinClock1, LOW);
       
          digitalWrite (g_pinData1, value1 & bitMask1 ? HIGH : LOW);
           
          digitalWrite (g_pinClock1, HIGH);
        }
      }
      // Signal to the 595s that I'm done sending
      digitalWrite (g_pinCommLatch1, HIGH);
    return

    sendSerialData2:
    // Signal to the 595s to listen for data
      digitalWrite (g_pinCommLatch2, LOW);
     
      for (byte reg2 = registerCount2; reg2 > 0; reg2--)
      {
        byte value2 = pValueArray2 [reg2 - 1];

        for (byte bitMask2 = 128; bitMask2 > 0; bitMask2 >>= 1)
        {
          digitalWrite (g_pinClock2, LOW);
       
          digitalWrite (g_pinData2, value2 & bitMask2 ? HIGH : LOW);
           
          digitalWrite (g_pinClock2, HIGH);
        }
      }
      // Signal to the 595s that I'm done sending
      digitalWrite (g_pinCommLatch2, HIGH);
    return

    sendSerialData3:
    // Signal to the 595s to listen for data
      digitalWrite (g_pinCommLatch3, LOW);
     
      for (byte reg3 = registerCount3; reg3 > 0; reg3--)
      {
        byte value3 = pValueArray3 [reg3 - 1];

        for (byte bitMask3 = 128; bitMask3 > 0; bitMask3 >>= 1)
        {
          digitalWrite (g_pinClock3, LOW);
       
          digitalWrite (g_pinData3, value3 & bitMask3 ? HIGH : LOW);
           
          digitalWrite (g_pinClock3, HIGH);
        }
      }
      // Signal to the 595s that I'm done sending
      digitalWrite (g_pinCommLatch3, HIGH);
    return
     
     
  2. jcsd
  3. Mar 5, 2012 #2
    1. Function declaration needs a return type (C/C++ is a static typed language).
    2. const declaration means the object's properties are not changeable until the const-ness is not cast away.
     
  4. Mar 5, 2012 #3
    Do you have any idea how to make return value in void declaration?
    coz actually I found my program using Basic and using C compiler...
    Actually I want to return the value....
     
  5. Mar 5, 2012 #4
    There are many ways to achieve that, you can simply define your objects globally (assuming they are still in the same accessible scope)
    Code (Text):

    int x;
    void func(int y)
    {
        x=y;
        ///.......
        return; //unnecessary
    }

    int func(int y)
    {
        x=y;
        ////....
        return  someIntValue; //this might be used as an exit code for someone who wants to check
    }

    int getX()
    {
       return x; // this is the second function's y value
    }
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Error: expected constructor, destructor, or type conversion before ';' token
  1. Token Homework (Replies: 2)

Loading...